所以我已经设置了一个地图,并且我使用函数addMarkersToMap()
添加了带有图标和标题的所有标记,但它们非常稀疏,因此我想要对它们进行聚类。我有没有办法聚集我已在地图上设置的标记?我发现这个代码非常适合从.json文件进行聚类,但是我的标记已经在地图上设置了,我不知道如何使用已设置的图标和标题聚类标记。
protected void startDemo() {
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(51.503186, -0.126446), 10));
mClusterManager = new ClusterManager<MyItem>(this,map);
map.setOnCameraChangeListener(mClusterManager);
try {
readItems();
} catch (JSONException e) {
Toast.makeText(this, "Problem reading list of markers.", Toast.LENGTH_LONG).show();
}
}
private void readItems() throws JSONException {
InputStream inputStream = getResources().openRawResource(R.raw.radar_search);
List<MyItem> items = new MyItemReader().read(inputStream);
for (int i = 0; i < 5; i++) {
double offset = i / 60d;
for (MyItem item : items) {
LatLng position = item.getPosition();
double lat = position.latitude + offset;
double lng = position.longitude + offset;
MyItem offsetItem = new MyItem(lat, lng);
mClusterManager.addItem(offsetItem);
}
}
答案 0 :(得分:0)
您不能同时使用群集以及已设置的自定义标记(包含标题和代码段)。
开始使用群集后,群集管理员将负责所有标记添加和相关任务。
但所有希望都没有丢失!!
您可以在为集群管理器创建的MarkerItem对象中添加POJO变量,它们的getter和setter。
然后,您可以在地图活动中创建这样的类,
class OwnIconRendered extends DefaultClusterRenderer<MyItem> {
public OwnIconRendered(Context context, GoogleMap map,
ClusterManager<MyItem> clusterManager) {
super(context, map, clusterManager);
}
@Override
protected void onBeforeClusterItemRendered(MyItem item, MarkerOptions markerOptions) {
//markerOptions.icon(item.getIcon());
markerOptions.snippet(item.getContact());
markerOptions.title(item.getName());
super.onBeforeClusterItemRendered(item, markerOptions);
}
}
并为您的clustermanager设置此渲染,如下所示
mClusterManager.setRenderer(new OwnIconRendered(activity.getApplicationContext(), getMap(), mClusterManager));
有关详细说明,请参阅我所提及的答案。 http://stackoverflow.com/questions/27745299/how-to-add-title-snippet-and-icon-to-clusteritem