1

有什么方法可以在 Markers 中创建 OnLongClickListener 而不使它们可拖动?我试图显示一个长按标记的上下文菜单,因此我实现了 OnMarkerDragListener 接口以使用以下代码处理它们:

@Override
public void onMarkerDragStart(Marker marker) {

    marker.setDraggable(false);

    if (mode == MODE_VIEW) {
        registerForContextMenu(findViewById(R.id.map));
        openContextMenu(findViewById(R.id.map));
        unregisterForContextMenu(findViewById(R.id.map));
    }

    marker.setDraggable(true);
}

但是当我按下标记时,她向上移动了!因为这就是可拖动的工作方式。我应该怎么办?谢谢!

4

2 回答 2

0

当前没有标记的 onLongClickListener

于 2013-06-18T15:16:25.627 回答
0

您可以尝试在您的代码中添加另一个 hack 并强制使用原始位置。

marker.setDraggable(false);
LatLng originalPosition = mapWithOriginalPositionsOfAllMarkers.get(marker);
marker.setPosition(originalPosition);

这种 hack 可能会导致视觉故障,但标记会回到应有的位置。

另外,您需要保留对原始职位的引用:

// Activity field
private Map<Marker, LatLng> mapWithOriginalPositionsOfAllMarkers = new HashMap<Marker, LatLng>();

// when adding marker:
LatLng position = ...
Marker marker = map.addMarker(new MarkerOptions().position(position));
mapWithOriginalPositionsOfAllMarkers.put(marker, position);
于 2013-06-18T20:55:41.523 回答