一次只在每个标记上显示信息窗口

28

我想展示类似于this的东西。

我能够在地图上显示所有标记,但是我想在所有标记都填充时显示每个标记的信息窗口。 我到目前为止尝试过这个,但它只显示一个标记的信息窗口。

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();
}
1个回答

26

无法同时显示多个信息窗口。文档中指出:

点击标记时,信息窗口允许您向用户显示信息。 一次只能显示一个信息窗口。如果用户单击另一个标记,则当前信息窗口将被隐藏,并显示新的信息窗口。

您可能需要查看Google Maps Android API Utility Library中的气泡图标。 气泡图标为标记添加了更强大的呈现选项,但不会改变它们的行为。这意味着您仍然无法同时显示多个信息窗口,但气泡图标将使您能够在每个标记上显示更多的信息:

添加IconGenerator以在标记上显示信息片段。这个实用程序提供了一种使您的标记图标看起来有点像信息窗口的方法,因为标记本身可以包含文本和其他内容。优点是您可以同时保持多个标记处于打开状态,而一次只能打开一个信息窗口。您还可以设置标记样式,更改标记和/或内容的方向,并更改标记的背景图像/九宫格。

更新:使用气泡图标的示例(请注意,您需要根据这些说明向项目中添加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);

3
有没有办法在文本字段中添加自定义标记,以显示除信息窗口之外的所有标记上的所有标题? - Ram Mandal
@Ram Mandal,我已经更新了我的答案,并附上了一个示例。 - antonio
感谢你的建议,兄弟。非常感谢你的帮助。 - Ram Mandal
我在地图上有一些标记,想将 IconGenerator 显示为 InfoWindow。但如果我这样做,我的标记和 IconGenerator 的文本会反复出现。我该如何添加偏移量来解决这个问题? - mehmet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接