我需要在地图上显示> 100个标记,并在点击标记后显示信息窗口。 我使用了android谷歌地图api v2,但它与这么多的标记相比。所以我决定切换到android-maps-extensions。我做完后,点击标记后信息窗口停止显示。
这是我的代码:
private void prepareMap() {
SupportMapFragment fragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.locationsMap);
map = fragment.getExtendedMap();
ClusteringSettings settings = new ClusteringSettings();
settings.clusterOptionsProvider(new ClusterOptionsProvider() {
@Override
public ClusterOptions getClusterOptions(List<Marker> markers) {
float hue = BitmapDescriptorFactory.HUE_RED;
BitmapDescriptor icon = BitmapDescriptorFactory.defaultMarker(hue);
return new ClusterOptions().icon(icon);
}
});
settings.clusterSize(100);
settings.addMarkersDynamically(true);
map.setClustering(settings);
map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
// breakpoint here are working. marker is not null
marker.showInfoWindow();
return false;
}
});
}
public void onLoadFinished(android.support.v4.content.Loader loader, Cursor cursor) {
if (map != null) {
cursor.moveToFirst();
int count = cursor.getCount();
for (int i = 0; i < count; i++) {
Location location = new Location(cursor);
MarkerOptions options = new MarkerOptions();
options.position( new LatLng(location.getLatitude(), location.getLongitude()));
options.title(location.getTitle()); // title is not null
options.snippet(location.getAddress()); // address is not null
options.data(location);
map.addMarker(options);
cursor.moveToNext();
}
}
}
有什么建议吗?我尝试使用自己的InfoWindowAdapter,但它没有为适当的内容缩放此窗口,但是我在xml中使用了wrap_content属性。
答案 0 :(得分:0)
由于不支持在ClusterOptions
(尚未)上设置标题,因此您必须使用InfoWindowAdapter
(您可以单独提出问题,说明为什么它不能按您的意愿运行)或自己将title
添加到ClusterOptions
,并确保将其值转发到代表群集的virtual
标记。这听起来很复杂,但相当容易。您可能还想在GitHub上添加关于不支持clustrers的标题的问题
之后你可以使用类似的东西:
return new ClusterOptions().icon(icon).title("Test");
然后你必须找出最符合你需求的标题。您很可能希望使用List<Marker>
来计算这组标记的标题。
注意:如果缩放到足以显示单独的标记,则可以单击它们以显示标题。如果没有,那么代码中就会出现更多错误。