我正在做一个包含多个标记的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事件对我不起作用,有人请帮我解决。
答案 0 :(得分:5)
默认情况下,标记不可拖动。您必须先将标记设置为
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(...)回调