添加自定义OnMarkerDragListener使标记不再可拖动

时间:2014-01-27 22:20:07

标签: android google-maps

我正在编写的Android应用程序中使用Google Maps v2。创建地图并向其添加所有标记后,我通过对地图上的每个标记使用marker.setDraggable(true);来使所有标记都可拖动。

如果我像这样运行代码,标记确实是可拖动的。但是,我想在拖动时更改标记的图标或颜色,所以我设置了OnMarkerDragListener,如下所示:

map.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
        @Override
        public void onMarkerDragStart(Marker marker) {
            marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE));
        }

        @Override
        public void onMarkerDrag(Marker marker) {

        }

        @Override
        public void onMarkerDragEnd(Marker marker) {
            marker.setIcon(BitmapDescriptorFactory.defaultMarker());
        }
    });  

但是,在添加该代码块之后,标记不再可拖动。颜色在onMarkerDragStart和onMarkerDragEnd方法中成功更改,但就是这样。任何人都可以解释我在这里做错了什么,以及为什么标记没有被拖累?

1 个答案:

答案 0 :(得分:0)

我会说问题来自更改图标而不是来自设置收听者。

请注意,Marker.setIcon不是所有版本的GoogleMaps V2 API都可用的功能。这意味着它可能在您拥有的库中或在您尝试应用的设备中安装的播放服务版本中不可用,并且可能导致任何类型的故障。

您可以阅读here该功能已于2013年5月添加。请尝试更新所有内容,google-play-services_lib以及设备中安装的播放服务。

如果发生这种情况,则可以尝试仅根据移动设备上安装的版本更改图标。