谷歌在 Android 上使用集群映射自定义标记图标
Posted
技术标签:
【中文标题】谷歌在 Android 上使用集群映射自定义标记图标【英文标题】:Google maps custom marker icon with clustering on Android 【发布时间】:2016-11-21 06:06:48 【问题描述】:我已经实现了Google Maps Clustering的代码
这是我活动中的代码
private void setUpClusterer()
mClusterManager = new ClusterManager<StoreItem>(this, mMap);
mMap.setOnCameraChangeListener(mClusterManager);
mMap.setOnMarkerClickListener(mClusterManager);
public void addItems(List<Store> stores)
for (Store store : stores)
mClusterManager.addItem(new StoreItem(store.getImage(), store.getLocation().getLatitude(), store.getLocation().getLongitude()));
private void removeAllItems()
mClusterManager.clearItems();
这是 StoreItem 类
public class StoreItem implements ClusterItem
private String url;
private final LatLng mPosition;
public StoreItem(String url, double lat, double lng)
this.url = url;
mPosition = new LatLng(lat, lng);
@Override
public LatLng getPosition()
return mPosition;
public String getUrl()
return url;
public void setUrl(String url)
this.url = url;
现在,我想通过 StoreItem 类中的 url 参数更改标记图标。
我该怎么做?
【问题讨论】:
【参考方案1】:考虑覆盖onBeforeClusterRendered。类似的东西会起作用:
BitmapDescriptor descriptor = BitmapDescriptorFactory.fromBitmap(here_goes_your_bitmap);
markerOptions.icon(descriptor);
请记住,代码仅用于示例。您必须手动将文本添加到位图并添加一些缓存机制以供实际使用。示例可以看DefaultClusterRenderer的源代码。
【讨论】:
仅供参考:两个链接现在都已失效 如果有人在寻找链接,我已经提交并编辑了答案,它可以在:github.com/googlemaps/android-maps-utils/blob/master/library/…【参考方案2】:你需要 @override 方法 onBeforeClusterItemRendered() 的 DefaultClusterRenderer 类 将 onBeforeClusterItemRendered 中的 iconurl 设置为 markerOptions 请查看以下代码:
private class CustomMapClusterRenderer<T extends ClusterItem> extends DefaultClusterRenderer<T>
CustomMapClusterRenderer(Context context, GoogleMap map, ClusterManager<T> clusterManager)
super(context, map, clusterManager);
@Override
protected boolean shouldRenderAsCluster(Cluster<T> cluster)
//start clustering if 2 or more items overlap
return cluster.getSize() >= Constants.MINIMUM_CLUSTER_SIZE;
@Override
protected void onBeforeClusterItemRendered(T item,
MarkerOptions markerOptions)
ClusterMarkerItem markerItem = (ClusterMarkerItem) item;
markerOptions.icon(BitmapDescriptorFactory.fromPath(markerItem.getURL()));
【讨论】:
我应该在哪里使用这个CustomMapClusterRenderer
类?以上是关于谷歌在 Android 上使用集群映射自定义标记图标的主要内容,如果未能解决你的问题,请参考以下文章