【发布时间】:2016-08-05 01:15:14
【问题描述】:
我目前正在使用 Maps V1 API 中的 ItemizedOverlay 类,它会跟踪当前选择的标记(如果有)。 Maps V2 中是否有任何类似的功能来确定当前选择了哪个标记?另外,有没有办法以编程方式选择新标记?
【问题讨论】:
标签: android google-maps-android-api-2
我目前正在使用 Maps V1 API 中的 ItemizedOverlay 类,它会跟踪当前选择的标记(如果有)。 Maps V2 中是否有任何类似的功能来确定当前选择了哪个标记?另外,有没有办法以编程方式选择新标记?
【问题讨论】:
标签: android google-maps-android-api-2
是的。
要确定选择了哪个标记,请将 OnInfoWindowClickedListener 添加到您的 GoogleMap:
//mMap is an instance of GoogleMap
mMap.setOnInfoWindowClickListener(getInfoWindowClickListener());
覆盖 OnInfoWindowClickListener 内部的 onInfoWindowClicked() 方法:
public OnInfoWindowClickListener getInfoWindowClickListener()
{
return new OnInfoWindowClickListener()
{
@Override
public void onInfoWindowClick(Marker marker)
{
Toast.makeText(getApplicationContext(), "Clicked a window with title..." + marker.getTitle(), Toast.LENGTH_SHORT).show();
}
};
}
并跟踪选定的标记,可能使用实例变量。
要以编程方式选择标记,您必须保留所有标记的列表,然后获取一个句柄并调用 showInfoWindow(),类似于以下内容:
//markerList is just a list keeping track of all the markers you've added
//to the map so far, which means you'll have to add each marker to this
//list as you put it on the map
Marker marker = this.markerList.get(someObjectYoureShowingAMarkerFor.getId());
if(marker != null)
{
marker.showInfoWindow();
}
【讨论】:
您可以使用 OnMarkerClickListener。
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Toast.makeText(getApplicationContext(), "Clicked a marker with title..." + marker.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
【讨论】: