如何在Android中的谷歌地图中选择和取消选择标记?

时间:2015-04-20 06:40:31

标签: android google-maps google-maps-markers

我有一个使用Markers在Google地图中标记的地点列表。我想选择一个Marker,以便用不同的颜色突出显示。我使用marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))设置了它。当我点击相同的标记或任何其他标记时,我想删除第一个标记中的选择并将其设置回默认颜色。

 map.setOnMarkerClickListener(new OnMarkerClickListener() {

    @Override
    public boolean onMarkerClick(Marker marker) {

        aa= marker.getPosition().latitude;
         bb=marker.getPosition().longitude;
        marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));

        }

根据上面的代码,当我点击其他标记时,第一个标记中的选择仍然存在,并且它保持着色HUE_BLUE。如何删除修改后的颜色并将选择内容转移到当前单击的标记?

1 个答案:

答案 0 :(得分:1)

我刚刚对此进行了测试并且工作正常,只需添加Marker引用作为实例变量,以便保留对最后点击的Marker的引用,并且每次都有新的Marker单击,将上一个设置回默认颜色。

在将!marker.equals(prevMarker)设置为Marker之前,您还可以检查HUE_BLUE,这样可以随后点击Marker将颜色设置回默认颜色。

实例变量:

Marker prevMarker;

点击听众:

mGoogleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

        @Override
        public boolean onMarkerClick(Marker marker) {

            aa= marker.getPosition().latitude;
            bb=marker.getPosition().longitude;
            if (prevMarker != null) {
                //Set prevMarker back to default color
                prevMarker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
            }

            //leave Marker default color if re-click current Marker
            if (!marker.equals(prevMarker)) {
                marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
                prevMarker = marker;
            }
            prevMarker = marker;
            return false;
        }

    });