6

マーカーをクリックすると、吹き出しが表示されます。しかし、マーカーとバルーンの間にスペースがありすぎるので、この距離を縮めるにはどうすればよいでしょうか? setBalloonBottomOffsetのメソッドを使用するようなものV1 Google Mapです。

custom balloonはこのクラスです:

public class CustomInfoWindowAdapter implements InfoWindowAdapter {

    private final View mWindow;
    private final View mContents;

    public CustomInfoWindowAdapter(Activity activity) {
        LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        mWindow = inflater.inflate(R.layout.ballon, null);
        mContents = inflater.inflate(R.layout.ballon, null);
    }

    @Override
    public View getInfoWindow(Marker marker) {
        render(marker, mWindow);
        return mWindow;
    }

    @Override
    public View getInfoContents(Marker marker) {
        render(marker, mContents);
        return mContents;
    }

    private void render(Marker marker, View view) {
        String title = marker.getTitle();
        TextView titleUi = ((TextView) view.findViewById(R.id.txtTitle));
        if (title != null) {
            titleUi.setText(title);
        } else {
            titleUi.setText("");
        }

        String snippet = marker.getSnippet();
        TextView snippetUi = ((TextView) view.findViewById(R.id.txtPlace));
        if (snippet != null) {
            snippetUi.setText(snippet);
        } else {
            snippetUi.setText("");
        }
    }
}

のようなマーカーを表示します

marker.showInfoWindow();

私のバルーンxmlは

<RelativeLayout
    android:layout_width="250dp"
    android:layout_height="75dp"
    android:background="@drawable/ballon" >

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/txtTitle"
                style="@style/Ballon_Title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:paddingLeft="15dp"
                android:paddingRight="50dp"
                android:paddingTop="10dp"
                android:singleLine="true"
                android:text="Con mis amigos amigos" />

            <TextView
                android:id="@+id/txtPlace"
                style="@style/Ballon_Place"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:paddingBottom="20dp"
                android:paddingLeft="15dp"
                android:paddingRight="50dp"
                android:singleLine="true"
                android:text="Puerta del sol" />
        </LinearLayout>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </RelativeLayout>

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:paddingRight="12dp"
        android:paddingTop="18dp"
        android:src="@drawable/icon_arrow" />
</RelativeLayout>

4

3 に答える 3

2

マップ マーカーは、デフォルトでレイアウトの下部中央に「固定」されます (つまり、アンカー(0.5,1))。

マーカーを作成するときにMarkerOptions.anchorを使用して、アンカー ポイントを変更できます。

于 2013-02-24T00:40:13.663 に答える
0

バルーン レイアウト全体で負の下部マージンを使用してみましたか? そのようです:

<RelativeLayout
    android:layout_width="250dp"
    android:layout_height="75dp"
    android:background="@drawable/ballon"

    android:layout_marginBottom="-8dp" >

おそらく機能しないか、コンテンツが下部で途切れる可能性がありますが、最も簡単な方法として試してみる価値はあります。クラスをだます別の方法があるかもしれGoogleMapませんが、API のソース コードがないことを理解するのは困難です。

もう 1 つのヒント: おそらくメソッドは必要ありません。そこgetInfoContents()に戻っnullてください。このメソッドは、 (ここを参照null)から戻った場合にのみ呼び出されます。これは、コンテンツ ビューをデフォルトの情報ウィンドウに組み込むためです。これは、バルーンを移動させたいため、明らかに目的ではありません。したがって、 を捨てることもできます。これは完全に冗長であり、使用されない膨張したビュー階層の別のコピーのために mem を占有するだけです。getInfoWindow()mContents

マージンがうまくいくかどうか教えてください。((View)mWindow.getParent())後でアイテムが表示されているときに何かを利用しようとすることもできますが、それはよりトリッキーになるため、最初にマージンを試すことをお勧めします.

于 2013-02-22T11:15:43.867 に答える