谷歌地图标记拖动事件没有在android中工作

时间:2018-01-09 09:34:36

标签: android google-maps marker

我正在做一个包含多个标记的android应用程序。我想制作标记长按事件,我知道MarkerDragListener可以帮助我做到这一点。以下是我用于MarkerDragListener的代码:

@Override
public void onMapReady(final GoogleMap googleMap) {
    Log.d(TAG, "onMapReady()");
    mGoogleMap = googleMap;
    mGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);

    mGoogleMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
        @Override
        public void onMarkerDragStart(Marker arg0) {
            // TODO Auto-generated method stub
            Log.d("System out", "onMarkerDragStart..."+arg0.getPosition().latitude+"..."+arg0.getPosition().longitude);
        }

        @SuppressWarnings("unchecked")
        @Override
        public void onMarkerDragEnd(Marker arg0) {
            // TODO Auto-generated method stub
            Log.d("System out", "onMarkerDragEnd..."+arg0.getPosition().latitude+"..."+arg0.getPosition().longitude);

        }

        @Override
        public void onMarkerDrag(Marker arg0) {
            // TODO Auto-generated method stub
            Log.i("System out", "onMarkerDrag...");
        }
    });

    mGoogleMap.setOnMarkerClickListener(this);
}

但Drag事件对我不起作用,有人请帮我解决。

1 个答案:

答案 0 :(得分:5)

来自offlicial documentation

  

默认情况下,标记不可拖动。您必须先将标记设置为MarkerOptions.draggable(boolean),然后才能将其添加到地图中,或者Marker.setDraggable(boolean)将标记添加到地图后。

意味着您必须首先制作标记可拖动,如下所示:

static final LatLng POSITION = new LatLng(-31.90, 115.86);
Marker marker = mGoogleMAp.addMarker(new MarkerOptions()
                      .position(PERTH)
                      .draggable(true));

之后你将观察你调用的onMarkerDragStart(...)和onMarkerDragStart(...)回调