現在、アンドロイドマップv2はクリック後マーカー位置にスナップします。私はこの動作を無効にしたいのですが、それを行うオプションはありません。アンドロイドマップをクリックした後でマーカーにスナップしないv2
誰かがそれを修正する方法を知っていますか?私はマーカーから読んだものに基づいて
現在、アンドロイドマップv2はクリック後マーカー位置にスナップします。私はこの動作を無効にしたいのですが、それを行うオプションはありません。アンドロイドマップをクリックした後でマーカーにスナップしないv2
誰かがそれを修正する方法を知っていますか?私はマーカーから読んだものに基づいて
- GoogleマップのAndroid API(https://developers.google.com/maps/documentation/android/marker#marker_click_events)
マーカーのクリックイベント
あなたは、マーカー上のクリックイベントをリッスンするためにOnMarkerClickListenerを使用することができます。このリスナーを に設定するには、GoogleMap.setOnMarkerClickListener(OnMarkerClickListener)を呼び出します。 ユーザーがマーカーをクリックすると、onMarkerClick(マーカー)が呼び出され、マーカーとして が引数として渡されます。このメソッドは、 がイベントを消費したかどうかを示すブール値を返します(デフォルト動作を抑制する)。 がfalseを返すと、カスタム動作に加えてデフォルトの動作が発生します。 マーカークリックイベントのデフォルトの動作は、情報ウィンドウ(利用可能な場合) を表示し、マーカーがマップの中央にくるようにカメラを移動することです。
このメソッドをオーバーライドして、マーカーを開き、trueを返してイベントを消費する可能性があります。
// Since we are consuming the event this is necessary to
// manage closing opened markers before opening new ones
Marker lastOpened = null;
mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
// Check if there is an open info window
if (lastOpened != null) {
// Close the info window
lastOpened.hideInfoWindow();
// Is the marker the same marker that was already open
if (lastOpened.equals(marker)) {
// Nullify the lastOpened object
lastOpened = null;
// Return so that the info window isn't opened again
return true;
}
}
// Open the info window for the marker
marker.showInfoWindow();
// Re-assign the last opened such that we can close it later
lastOpened = marker;
// Event was handled by our code do not launch default behaviour.
return true;
}
});
これはテストされていないコードですが、これは実行可能な解決策です。
おかげで、 DMAN我々は次のことを行うことができるはず、しかしmarker.isInfoWindowShown()
は常にfalseを返すためthis bugのために、それは動作しません表示されます
これは完璧な、ありがとう! –
@ D-32問題はありません! – DMCApps
うん!ありがとう! 私の場合は、onMapClick(marker.getPosition())を呼び出して、マーカーのクリックがマーカーの位置で地図をクリックするように動作するようにします。次に、イベントが処理されたことを通知するためにtrueを返します。 –
:しかし
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
if (marker.isInfoWindowShown()) {
marker.hideInfoWindow();
} else {
marker.showInfoWindow();
}
return true;
}
});
は、以下の同じ効果があり、作業を行います。
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
Marker currentShown;
public boolean onMarkerClick(Marker marker) {
if (marker.equals(currentShown)) {
marker.hideInfoWindow();
currentShown = null;
} else {
marker.showInfoWindow();
currentShown = marker;
}
return true;
}
});
唯一の情報ウィンドウは次のように(一度に表示されているのでGoogle Maps API v2 Developer Guideに記載されています)、情報ウィンドウが現在開いているマーカーがクリックされた場合、情報ウィンドウを非表示にするだけで済みます。
?どういう意味ですか?もっと詳しく説明してください。 – BBonDoo
私は同様の解決策を探しています。私の「スナップ」の解釈は、カメラをそのマーカーの場所に移動させることです。基本的に、ユーザーがマーカーをクリックしたときにカメラが動かないようにするにはどうすればよいですか? – DMCApps