【发布时间】:2014-04-03 04:04:22
【问题描述】:
我需要在地图上显示 >100 个标记并在单击标记后显示信息窗口。 我使用了 android google maps 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 属性。
【问题讨论】:
-
您从
onMarkerClick返回false的任何原因?当您使用InfoWindowAdapter时,它是否显示任何信息窗口? -
@MaciejGórski 当我返回
false时,会出现默认行为,如标记上的中心地图。当我使用自己的InfoWindowAdapter时,它会显示固定大小的窗口,其中包含部分内容。 -
如果除了示例中提供的代码之外没有任何代码,您可以删除
OnMarkerClickListener,因为显示信息窗口是默认行为。
标签: android android-maps-extensions