
我没有得到我期望的行为.正如你在下面的两张图片中看到的那样,当放大时,我可以看到一个20的簇和一个向左的单个标记,但当我缩小直到它们在彼此的顶部时,我看不到它们的簇. 20集群仍然说20而不是21?
这是预期的行为吗?有没有办法可以使群集显示21而不是20
解决方法 这是DefaultClasterRenderer#onBeforeClusterRendered()中指定的默认行为: /** * Called before the marker for a Cluster is added to the map. * The default implementation draws a circle with a rough count of the number of items. */protected voID onBeforeClusterRendered(Cluster<T> cluster,MarkerOptions markerOptions) { int bucket = getBucket(cluster); BitmapDescriptor descriptor = mIcons.get(bucket); if (descriptor == null) { mcoloredCircleBackground.getPaint().setcolor(getcolor(bucket)); descriptor = BitmapDescriptorFactory.fromBitmap(mIconGenerator.makeIcon(getClusterText(bucket))); mIcons.put(bucket,descriptor); } // Todo: consIDer adding anchor(.5,.5) (IndivIDual markers will overlap more often) markerOptions.icon(descriptor);} 请注意,标记的文本是根据存储桶选择的,而不是根据群集中的确切项目数来选择的
快速解决方法是将描述符创建修改为:
descriptor = BitmapDescriptorFactory.fromBitmap(mIconGenerator. makeIcon(cluster.getSize());
当然,您可以实现自定义ClasterRenderer并将其提供给ClusterManager.这样您将负责渲染您的标记,但如果您只想将“20”更改为“21” – 我会先使用途径
编辑:
在评论中提出的问题:
如果要增加/减少分组项目的距离阈值 – 您可以修改用于群集的default algorithm.只需使用此常量(在您的情况下应该更小):
public static final int MAX_disTANCE_AT_ZOOM = 100; // essentially 100 dp.
但正确的解决方法是考虑Marker位图大小而不是常量值.我假设Mr. Broadfood离开那作为爱好者的作业:)
private Bounds createBoundsFromSpan(Point p,double span) { // Todo: Use a span that takes into account the visual size of the marker,not just its // LatLng. double halfSpan = span / 2; return new Bounds( p.x - halfSpan,p.x + halfSpan,p.y - halfSpan,p.y + halfSpan);} 总结 以上是内存溢出为你收集整理的android – 缩放时聚类地图标记,放大时不聚集全部内容,希望文章能够帮你解决android – 缩放时聚类地图标记,放大时不聚集所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)