5

我目前正在使用ItemizedOverlayMaps V1 API 中的类,它跟踪当前选择的标记(如果有)。Maps V2 中是否有任何类似的功能来确定当前选择了哪个标记?另外,有没有办法以编程方式选择一个新的标记?

4

2 回答 2

17

是的。

要确定选择了哪个标记,请将 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();
}
于 2013-01-14T17:57:51.067 回答
1

您可以使用 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;
        }
    });
于 2016-08-04T17:15:14.887 回答