1

ドラッグ可能にせずにマーカーで 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

コードに別のハックを追加して、元の位置を強制することもできます。

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);
于 2013-06-18T20:55:41.523 に答える
0

現在、マーカー用の onLongClickListener はありません

于 2013-06-18T15:16:25.627 に答える