如何为谷歌地图设置自定义标记标题

5

如何设置自定义标记标题/片段,其中包含信息和按钮?我已经设置了自定义标记图标。现在,当用户点击标记时,我需要一个包含特定信息和按钮的自定义弹出窗口。

下面是接近我想要实现的示例。

自定义标题/片段示例

Custom title/snippet example

 LatLng huduma_gpo = new LatLng(-1.280694, 36.818277);
            googleMap.addMarker(new MarkerOptions().position(huduma_gpo).title("Huduma center GPO")).setIcon(BitmapDescriptorFactory.fromBitmap(marker));

            // For zooming automatically to the location of the marker
            googleMap.moveCamera( CameraUpdateFactory.newLatLngZoom(huduma_gpo , 12.0f) );

2
你尝试过 Infowidow 吗? - Jay Thummar
是的,它被称为infoview,请搜索此内容 https://dev59.com/RmUp5IYBdhLWcg3wvZVV - Vidhi Dave
2个回答

2

使用自定义布局设计并将其添加到您的Google Map中。请参考以下示例代码并自定义您的设计。

窗口设计:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/custom_info_bubble"
    android:gravity="center"
    android:orientation="vertical"
    android:paddingBottom="40dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp">

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

    <ImageView
        android:id="@+id/badge"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/text_lay"
        android:background="@drawable/icn_right_arrow" />

    <LinearLayout
        android:id="@+id/text_lay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="vertical"
        android:padding="3dp">

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="sans-serif"
            android:padding="3dp"
            android:singleLine="true"
            android:text="title"
            android:textColor="#ff000000"
            android:textSize="@dimen/text_size_small" />

        <TextView
            android:id="@+id/snippet"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:fontFamily="sans-serif"
            android:padding="3dp"
            android:text="45 bays  available"
            android:textColor="@color/green"
            android:textSize="14dp" />
    </LinearLayout>

</RelativeLayout>

窗口适配器的 Java 类:

public class InfoWindowAdapter implements GoogleMap.InfoWindowAdapter, CommonValues, BundleTags {

private View view;

private FragmentActivity myContext;

public InfoWindowAdapter(FragmentActivity aContext) {
    this.myContext = aContext;

    LayoutInflater inflater = (LayoutInflater) myContext.getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    view = inflater.inflate(R.layout.layout_inflate_parking_info_window,
            null);
}

@Override
public View getInfoContents(Marker marker) {

    if (marker != null
            && marker.isInfoWindowShown()) {
        marker.hideInfoWindow();
        marker.showInfoWindow();
    }
    return null;
}

@Override
public View getInfoWindow(final Marker marker) {

    final String title = marker.getTitle();
    final TextView titleUi = ((TextView) view.findViewById(R.id.title));
    if (title != null) {
        titleUi.setText(title);
    } else {
        titleUi.setText("");
        titleUi.setVisibility(View.GONE);
    }

    final String snippet = marker.getSnippet();
    final TextView snippetUi = ((TextView) view
            .findViewById(R.id.snippet));

    if (snippet != null) {

        String[] SnippetArray = snippet.split(SEPARATOR);


        snippetUi.setText(SnippetArray[0]);
    } else {
        snippetUi.setText("");
    }

    return view;
  }
}

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接