web-dev-qa-db-ja.com

GoogleMapOnMarkerClickListenerを機能させることができません

V2マップの使用。

マーカーの追加を含め、基本的にすべて機能しました。

ただし、マーカーがタップされたときにアクションを実行する必要があるため、ハンドラーをインストールしました。

_thisMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

    @Override public boolean onMarkerClick(Marker marker) {
        //  Take some action here
        return true;
    }

}
);
_

唯一の問題は--onMarkerClick()がまったく呼び出されないことです。理由がわかりません-マップが最初に作成されたとき、およびマーカーが配置された後にリスナーを作成しようとしましたが、違いはありません。

13
nmw01223

代わりにOnInfoWindowClickListenerを使用して、それを機能させることができました。マーカーのクリックに反応しない理由はわかりませんが。

0
nmw01223

これは私にとってはうまくいきます:

GoogleMap mMap;
Marker marker_1;

マップを初期化した後、リスナーをマップに追加します。

mMap.setOnMarkerClickListener((OnMarkerClickListener) this);

そしてこれを呼ぶ

/**
 * handle marker click event
 */    
@Override
public boolean onMarkerClick(Marker marker) {
    // TODO Auto-generated method stub
    if(marker.equals(marker_1)){
        Log.w("Click", "test");
        return true;
    }
        return false;           
}

「true」を返す場合、クリックイベントは適切に処理されています。マーカーをクリックしてfalseを返すと、通常どおり情報ウィンドウがポップアップ表示されます。

Androidのドキュメントによると、クリックされたマーカーは、リスナーがイベントを消費した場合はtrueを返し(つまり、デフォルトの動作は発生しないはずです)、そうでない場合はfalseを返します(つまり、デフォルトの動作が発生するはずです)。デフォルトの動作では、カメラがマップに移動し、情報ウィンドウが表示されます。

9
Shawn Lien

あなたはこれを単にスニペットとして使うことができます:

import com.google.Android.gms.maps.GoogleMap.OnMarkerClickListener;

GoogleMap mGoogleMap;
Marker marker_1;

OnMapReady(GoogleMap googleMap)に以下を追加します。

mGoogleMap.setOnMarkerClickListener(new OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {

            // TODO Auto-generated method stub
            if(marker.equals(marker_1)){
                Log.w("Click", "test");
                return true;
            }
            return false;

        }
    });
1
Ingo

GoogleMap mMap;

これを使って:

mMap.setOnMarkerClickListener((OnMarkerClickListener)this);

mMap.setOnMarkerClickListener(OnMarkerClickListener);ではありません。

0
itai irdam