16

longClickListsnerグーグルマップv2のマーカーにを設定する方法はありますか?ユーザーにマーカーを長押しさせ、情報を削除または表示するオプションを含むダイアログを表示させたい。これはできますか?

4

8 に答える 8

17

もう一つ提案があります。

まず、マーカーをドラッグ可能にします。

mapa.addMarker(new MarkerOptions()  ...     
      .setDraggable(true);

次のようにリスナー setOnMarkerDragListener を作成した後:

mapa.setOnMarkerDragListener(new OnMarkerDragListener() {

            @Override
            public void onMarkerDragStart(Marker marker) {
                // TODO Auto-generated method stub
                //Here your code
            }

            @Override
            public void onMarkerDragEnd(Marker marker) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onMarkerDrag(Marker marker) {
                // TODO Auto-generated method stub

            }
        });

そして、必要に応じてオーバーライドできます (通常は onMarkerDragStart で長いクリックをシミュレートします)。

それが役に立てば幸い

于 2013-03-15T02:53:52.667 に答える
14

Marker クラスには LongClickListener がありません。このアプローチは完璧とは言えませんが、ここでは何ができるかについてのアイデアを示します。

GoogleMap オブジェクトのロング クリック リスナーを設定します。長いクリックで、クリックした位置がマーカーに十分近いかどうかを確認します。この近さのしきい値を決定するには、マップのズーム レベルを使用できます。

これはあまり良くないサンプルコードです。私はそれを試していませんが、あなたのニーズに合うかもしれません。

    map.setOnMapLongClickListener(new OnMapLongClickListener() {

            @Override
            public void onMapLongClick(LatLng latLng) {
                for(Marker marker : yourMarkerList) {
                    if(Math.abs(marker.getPosition().latitude - latLng.latitude) < 0.05 && Math.abs(marker.getPosition().longitude - latLng.longitude) < 0.05) {
                        Toast.makeText(MapActivity.this, "got clicked", Toast.LENGTH_SHORT).show(); //do some stuff
                        break;
                    }
                }

            }
        });
于 2013-03-13T17:43:07.573 に答える
3

赤谷の答えは悪いアプローチではありませんが、プロジェクトにcom.google.maps.android:android-maps-utils:0.3+ ライブラリが含まれている場合は、距離について正確に知ることができます:

double distance = SphericalUtil.computeDistanceBetween( 
    marker.getPosition(), 
    latLng 
);
if( distance < 50 ) { // closer than 50 meters?
    //..do stuff..
}
于 2015-07-10T08:44:16.840 に答える
3

ARP の回答は問題ありませんが、厄介な問題があります。ドラッグを開始するとマーカーが上に移動し、終了してもマーカーは指で指している位置よりも高い位置にあります。

http://www.youtube.com/watch?v=RxAHHJD4nU8をご覧ください

于 2013-12-07T15:38:40.127 に答える