0

Android Google Maps V2 でマーカーを長押ししたときにコンテキスト メニューを表示したいのですが、

  • マーカーは長いクリック イベントを処理しません。
  • openContextMenu(View view) メソッドにはビューが必要ですが、何を渡せばよいかわかりません。私はこのようにメソッドを呼び出そうとしました:

    openContextMenu(findViewById(R.id.map));
    

しかし、コンテキスト メニューは開きません。

助けてください:P

4

4 に答える 4

1

ここでの問題は、3.1.36 の時点で長いクリック リスナーを持つ方法がないことです。

ハックな方法は、OnTouchListener がアタッチされたマップ フラグメントを透過的に表示し、タッチ ダウン イベント時間を保存して false を返すことです。

後でGoogleMap.OnMarkerClickListener.onMarkerClick電話がかかってきた場合は、これが長いクリックか通常のクリックかを判断できます。

gmaps-api-issuesOnMarkerLongClickListenerで機能リクエストを提出できる適切な方法については、API を使用する必要があります。

これらのいずれかを持っている場合、オプションを含むダイアログを表示するだけで済みますが、CommonsWare が示唆するように、これは最も美しい方法ではありません。アイコンを変更してアクションを表示することでマーカーを選択することをお勧めしますが、それはあなたの選択です。

于 2013-06-15T20:59:12.160 に答える
1

ロングクリックに関しては、運が悪いと思います。

に関しては、を呼び出す前に をopenContextMenu()呼び出す必要があります。registerForContextMenu()ViewopenContextMenu()

コンテキスト メニューは、コンテキスト アクション バー (別名、アクション モード) を支持して、数年前から流行遅れになっていることに注意してください。

于 2013-06-15T17:14:36.780 に答える
0

マーカーを追加するときに、いつでもマーカーを何かとして定義することができます。

@Override
    public void onMapLongClick(LatLng point) {

        map.clear();
        myMarker = map.addMarker(new MarkerOptions().position(point));
        Log.d("Devon", "Lat: " + point.latitude + " Lng: " + point.longitude);
    }

次に onMarkerClick メソッドを呼び出すときに、クリックされたマーカーが定義済みのマーカーと等しい場合は、次のコードを実行します。

@Override
    public boolean onMarkerClick(Marker marker) {

        if (marker.equals(myMarker)) {
            Toast.makeText(this, "Add 'Directions to here' and 'Directions From here' buttons.", Toast.LENGTH_LONG).show();
        }
        return true;
    }
于 2014-12-24T19:36:50.427 に答える