如何在Maps V2 Android API中选择标记?

6

我目前正在使用 Maps V1 API 中的 ItemizedOverlay 类,该类跟踪当前选择的标记(如果有)。 Maps V2 中是否有类似的功能来确定当前选择的标记?此外,是否有一种方法可以以编程方式选择新标记?

2个回答

18

是的。

要确定选中哪个标记,将 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();
}

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;
        }
    });

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