osmdroid 集群过多
Too many clusters with osmdroid
我在我的应用程序中使用 osmdroid 库使用 osm 地图。我已经使用以下代码在 osm 地图中成功实现了聚类
private void populateMarkers(final List<Datum> datumList) {
RadiusMarkerClusterer poiMarkers = new RadiusMarkerClusterer(this);
map.getOverlays().add(poiMarkers);
for (int i = 0; i < datumList.size(); i++) {
Marker marker = new Marker(map);
marker.setPosition(new GeoPoint(Double.parseDouble(datumList.get(i).getLat()), Double.parseDouble(datumList.get(i).getLng())));
Drawable currentDraw = ResourcesCompat.getDrawable(getResources(), R.drawable.location_marker, null);
marker.setIcon(currentDraw);
final int finalI = i;
marker.setOnMarkerClickListener(new Marker.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker, MapView mapView) {
if (marker.isInfoWindowShown()) {
InfoWindow.closeAllInfoWindowsOn(mapView);
} else {
getMarkerDetails(marker, datumList.get(finalI).getId());
}
return false;
}
});
poiMarkers.add(marker);
Drawable clusterIconD = getResources().getDrawable(R.drawable.marker_cluster);
Bitmap clusterIcon = ((BitmapDrawable) clusterIconD).getBitmap();
poiMarkers.setIcon(clusterIcon);
map.invalidate();
}
progressDialog.dismiss();
}
这行得通,但问题是它向附近的许多小集群显示,而不是单个大集群places.See下图就是我的意思
我也在使用 osmdroid bonus pack 依赖项
进行集群
如果您查看 RadiusMarkerClusterer
的 source,您可以看到有一个 setRadius
方法:
/** Set the radius of clustering in pixels. Default is 100px. */
public void setRadius(int radius){
mRadiusInPixels = radius;
}
我想你所要做的就是设置一个更大的半径来将更多的点合并到一个集群中。
我在我的应用程序中使用 osmdroid 库使用 osm 地图。我已经使用以下代码在 osm 地图中成功实现了聚类
private void populateMarkers(final List<Datum> datumList) {
RadiusMarkerClusterer poiMarkers = new RadiusMarkerClusterer(this);
map.getOverlays().add(poiMarkers);
for (int i = 0; i < datumList.size(); i++) {
Marker marker = new Marker(map);
marker.setPosition(new GeoPoint(Double.parseDouble(datumList.get(i).getLat()), Double.parseDouble(datumList.get(i).getLng())));
Drawable currentDraw = ResourcesCompat.getDrawable(getResources(), R.drawable.location_marker, null);
marker.setIcon(currentDraw);
final int finalI = i;
marker.setOnMarkerClickListener(new Marker.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker, MapView mapView) {
if (marker.isInfoWindowShown()) {
InfoWindow.closeAllInfoWindowsOn(mapView);
} else {
getMarkerDetails(marker, datumList.get(finalI).getId());
}
return false;
}
});
poiMarkers.add(marker);
Drawable clusterIconD = getResources().getDrawable(R.drawable.marker_cluster);
Bitmap clusterIcon = ((BitmapDrawable) clusterIconD).getBitmap();
poiMarkers.setIcon(clusterIcon);
map.invalidate();
}
progressDialog.dismiss();
}
这行得通,但问题是它向附近的许多小集群显示,而不是单个大集群places.See下图就是我的意思
我也在使用 osmdroid bonus pack 依赖项
进行集群如果您查看 RadiusMarkerClusterer
的 source,您可以看到有一个 setRadius
方法:
/** Set the radius of clustering in pixels. Default is 100px. */
public void setRadius(int radius){
mRadiusInPixels = radius;
}
我想你所要做的就是设置一个更大的半径来将更多的点合并到一个集群中。