次の方法でデフォルトのマーカーをGoogleMapに追加しています。
GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.editMapMap)).getMap();
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(currentLocation.getCoordinate());
markerOptions.title(Utils.getLocationString(currentLocation.getCoordinate()));
markerOptions.snippet("Blah");
locationMarker = map.addMarker(markerOptions);
locationMarker.setDraggable(true);
マーカーを常にタッチせずにタイトルとスニペットを表示するにはどうすればよいですか?また、タッチ時にそれらを非表示にすることを無効にします。
それは非常に簡単です:
locationMarker.showInfoWindow();
マーカーを表示および非表示にする方法は2つあります。ブール値の戻り値は、デフォルトの動作が行われないようにする(false)か、発生するようにする(true)だけです。つまり、イベントを消費したかどうかをシステムに通知します。 Google API Reference をご覧ください。
private GoogleMap.OnMarkerClickListener onMarkerClickedListener = new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
if (marker.isInfoWindowShown()) {
marker.hideInfoWindow();
} else {
marker.showInfoWindow();
}
return true;
}
};
mGoogleMap.setOnMarkerClickListener(onMarkerClickedListener);
showInfoWindow()
を使用し、以下のようにマーカーを追加します。
Marker marker = mMap.addMarker(new MarkerOptions().position(currentPosition).title("Your text"));
marker.showInfoWindow();
onMarkerClickListener
に対してfalseを返すだけで、trueを返すとinfoWindow
が表示されます。
マーカーをクリックしたときにタイトルを非表示にするには:
map.setOnMarkerClickListener(this);
...
@Override
public boolean onMarkerClick(Marker arg0) {
Log.i(TAG,"marker arg0 = "+arg0);
return false;
}
Trueを返すとタイトルが表示され、falseを返すとタイトルは表示されません。
ホールドですが、ここに私の答えがあります:
ドキュメントには、情報ウィンドウが一度に1つずつ表示されるというテキストがあるため、それを行う方法はありません。
「情報ウィンドウを使用すると、ユーザーがマーカーをタップしたときに情報を表示できます。一度に1つの情報ウィンドウのみが表示されます。ユーザーがマーカーをクリックすると、現在の情報ウィンドウが閉じられ、新しい情報ウィンドウが表示されます。ユーザーが現在情報ウィンドウを表示しているマーカーをクリックすると、その情報ウィンドウが閉じられ、再び開きます。」
私はこの質問が古いことを知っていますが、誰かに役立つ場合に備えて、ここに答えを投稿します。
私の場合、情報ウィンドウは機能しません。タイトルがある場合にのみ表示し、表示するのに十分でない場合は隠して、互いに重ならないようにします。
インターネットで解決策を見つけられなかったので、袖をまくり、問題を解決するこのライブラリを作成しました。
https://github.com/androidseb/Android-google-maps-floating-marker-titles
仕組みのプレビューを次に示します。