Android Google地图v2中的标记

时间:2013-06-18 15:12:32

标签: java android google-maps-markers google-maps-android-api-2

有一些方法可以在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);
}

但是当我按下Marker时,她会向上移动!因为这是可拖动的方式。 我该怎么办?谢谢!

2 个答案:

答案 0 :(得分:0)

目前没有针对标记的onLongClickListener

答案 1 :(得分:0)

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

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

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

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

// 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);