Lina Cortés Asked: 2020-09-28 11:26:09 +0800 CST 2020-09-28 11:26:09 +0800 CST 2020-09-28 11:26:09 +0800 CST Android中带有数据的自定义InfoWindow标记 772 我正在制作一个具有地图的 android 应用程序,其中单击标记会显示信息窗口,如下所示: 但我需要信息窗口以下列方式出现,但我不知道该怎么做: 我该怎么做?举个例子?谢谢 android-studio 1 Answers Voted Best Answer Jorgesys 2020-09-28T13:14:56+08:002020-09-28T13:14:56+08:00 你可以查看官方文档 为此,您必须使用您希望在 infoWindow 中显示的内容创建一个布局,例如infowindow_layout.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" > <ImageView android:id="@+id/info_window_imagen" android:layout_width="80dp" android:layout_height="80dp" android:scaleType="centerCrop" android:src="@drawable/imagen_default" /> <TextView android:id="@+id/info_window_nombre" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@id/info_window_imagen" android:paddingLeft="5dp" android:text="Carlo Estrada Solano" /> <TextView android:id="@+id/info_window_placas" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:textSize="20sp" android:layout_below="@id/info_window_nombre" android:layout_toRightOf="@id/info_window_imagen" android:paddingLeft="5dp" android:text="Placas: SX5487" /> <TextView android:id="@+id/info_window_estado" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/info_window_placas" android:layout_toRightOf="@id/info_window_imagen" android:paddingLeft="5dp" android:text="Estado: Activo" /> </RelativeLayout> 你会有类似的东西: 您创建一个扩展类,InfoWindowAdapter它将加载以前的布局: public class CustomInfoWindowAdapter implements InfoWindowAdapter{ private static final String TAG = "CustomInfoWindowAdapter"; private LayoutInflater inflater; public CustomInfoWindowAdapter(LayoutInflater inflater){ this.inflater = inflater; } @Override public View getInfoContents(final Marker m) { //Carga layout personalizado. View v = inflater.inflate(R.layout.infowindow_layout, null); String[] info = m.getTitle().split("&"); String url = m.getSnippet(); ((TextView)v.findViewById(R.id.info_window_nombre)).setText("Lina Cortés"); ((TextView)v.findViewById(R.id.info_window_placas)).setText("Placas: SRX32"); ((TextView)v.findViewById(R.id.info_window_estado)).setText("Estado: Activo"); return v; } @Override public View getInfoWindow(Marker m) { return null; } } 最后,要加载自定义信息窗口,请通过方法将自定义信息窗口setInfoWindowAdapter()分配 给您的 GoogleMap 实例InfoWindowAdapter。 myGoogleMap.setInfoWindowAdapter(new CustomInfoWindowAdapter(LayoutInflater.from(getActivity()))); 有了这个,您将获得您想要的,即在单击地图标记时显示自定义信息窗口。
你可以查看官方文档
为此,您必须使用您希望在 infoWindow 中显示的内容创建一个布局,例如
infowindow_layout.xml
:你会有类似的东西:
您创建一个扩展类,
InfoWindowAdapter
它将加载以前的布局:最后,要加载自定义信息窗口,请通过方法将自定义信息窗口
setInfoWindowAdapter()
分配 给您的 GoogleMap 实例InfoWindowAdapter
。有了这个,您将获得您想要的,即在单击地图标记时显示自定义信息窗口。