google 地图标记拖动事件在 android 中不起作用

google map marker drag event no working in android

我正在做一个包含多个标记的 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);
}

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

来自 offlicial documentation:

Markers are not draggable by default. You must explicitly set the marker to be draggable either with MarkerOptions.draggable(boolean) prior to adding it to the map, or Marker.setDraggable(boolean) once it has been added to the map.

意思是你必须先让标记可拖动,像这样:

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

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