V2マップの使用。
マーカーの追加を含め、基本的にすべて機能しました。
ただし、マーカーがタップされたときにアクションを実行する必要があるため、ハンドラーをインストールしました。
_thisMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override public boolean onMarkerClick(Marker marker) {
// Take some action here
return true;
}
}
);
_
唯一の問題は--onMarkerClick()
がまったく呼び出されないことです。理由がわかりません-マップが最初に作成されたとき、およびマーカーが配置された後にリスナーを作成しようとしましたが、違いはありません。
?
代わりにOnInfoWindowClickListenerを使用して、それを機能させることができました。マーカーのクリックに反応しない理由はわかりませんが。
これは私にとってはうまくいきます:
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を返します(つまり、デフォルトの動作が発生するはずです)。デフォルトの動作では、カメラがマップに移動し、情報ウィンドウが表示されます。
あなたはこれを単にスニペットとして使うことができます:
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;
}
});
GoogleMap mMap;
これを使って:
mMap.setOnMarkerClickListener((OnMarkerClickListener)this);
mMap.setOnMarkerClickListener(OnMarkerClickListener);ではありません。