web-dev-qa-db-ja.com

一度にすべてのマーカーに情報ウィンドウを表示する

のようなものを見せたいthis

マップ上のすべてのマーカーを表示できますが、すべてのマーカーが読み込まれるたびにすべてのマーカーに情報ウィンドウを表示したいです。これまでこれを試しましたが、マーカー情報ウィンドウが1つだけのすべてのマーカーが表示されます。

for (int i = 0; i < jobsDtoList.size(); i++) {
    Double latitude = Double.parseDouble(jobsDtoList.get(i).getSiteLatitude());
    Double longitude = Double.parseDouble(jobsDtoList.get(i).getSiteLongitude());

    LatLng latLng = new LatLng(latitude, longitude);
    MarkerOptions TP = new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromResource(R.mipmap.job_marker));
    googleMap.addMarker(TP).showInfoWindow();
}
22
Ram Mandal

一度に複数の情報ウィンドウを表示することはできません。 ドキュメント から:

情報ウィンドウを使用すると、ユーザーがマーカーをタップしたときに情報を表示できます。 一度に表示される情報ウィンドウは1つだけです。ユーザーが別のマーカーをクリックすると、現在の情報ウィンドウが非表示になり、新しい情報ウィンドウが表示されます。

Google Maps Android API Utility Library のバブルアイコンをご覧ください。バブルアイコンはマーカ​​ーのより強力なレンダリングオプションを追加しますが、変更はしません。つまり、一度に複数の情報ウィンドウを表示することはできませんが、バブルアイコンを使用すると、各マーカーの詳細情報を表示できます。

IconGeneratorを追加して、マーカーに情報のスニペットを表示します。このユーティリティを使用すると、マーカー自体にテキストやその他のコンテンツを含めることができるため、マーカーアイコンを情報ウィンドウのように見せることができます。 利点は、同時に複数のマーカーを開いたままにすることができるのに対し、一度に開くことができる情報ウィンドウは1つだけであることです。マーカーのスタイルを設定したり、マーカーやコンテンツの向きを変更したり、マーカーの背景画像/ 9パッチを変更したりすることもできます。

更新:バブルアイコンを使用した例(Google Maps Android APIユーティリティライブラリを この手順 に従ってプロジェクトに追加する必要があることに注意してください):

LatLng latLng = new LatLng(latitude, longitude);

TextView text = new TextView(context);
text.setText("Your text here");
IconGenerator generator = new IconGenerator(context);
generator.setBackground(context.getDrawable(R.drawable.bubble_mask));
generator.setContentView(text);
Bitmap icon = generator.makeIcon();

MarkerOptions tp = new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromBitmap(icon));
googleMap.addMarker(tp);
16
antonio