集群标记显示不准确

Posted

技术标签:

【中文标题】集群标记显示不准确【英文标题】:cluster markers displaying inaccurately 【发布时间】:2021-02-25 04:58:54 【问题描述】:

我已尝试在 Google Developers toutorial 之后实现集群管理器,但与仅使用 googleMap.addMarker();(example) 相比,我的标记显示非常不准确。

Here is an image comparison of the two

我想它与addClusterPoints() 中的offset 有关,但是当我更改除数(60d)时,唯一的变化是点分布多远,但位置仍然不正确。 I've tried changing the value 的 60d 和我发现 60d 分布更广,而 >60d 分布更少。

有人能解释一下offset 在做什么以及如何让分数准确显示吗?

private void addClusterPoints()
    List<LatLng> locations= new ArrayList<>(getLatLongList());
    for(int i=0; i < locations.size(); i++)
       double offset = i /60d;
       latLng = locations.get(i);
       double lat = latLng.latitude + offset;
       double lng = latLng.longitude + offset;
       mapClusterItem offsetItem = new mapClusterItem(lat, lng, "Tile "+i, "Snippet"+i);
       clusterManager.addItem(offsetItem);
    
    

【问题讨论】:

偏移量将标记的位置移动偏移量 - 较小的除数会增加偏移量,从而将其向北和向东移动(基于增加的分子,第一个标记比最后一个标记移动得更远)。目前尚不清楚您移动标记的动机是什么 - 如果您可以扩展它可能会有所帮助。 您的循环也存在潜在问题:您从某个吸气剂创建locations,然后使用循环索引访问sneezeLocations - 似乎您应该只使用locations。跨度> 感谢您的反馈,sneezeLocationslocations 相同,我只是在更改名称以提出此问题时错过了这一点;但我现在已经修好了。此外,当没有偏移时,您会在正确的位置显示正确的标记。干杯。 【参考方案1】:

正如安迪所说,问题出在offset。我删除了offset,标记显示在它们的预期位置。

我引用的Google Developers tutorial 有offset,所以我认为这是过程的一部分,但事实证明它完全不相关。老实说,他们决定将其包含在教程中,我真的觉得很奇怪。我能想到他们为什么要这样做(因为他们不提供)的唯一原因是在非常靠近的项目之间创建一些空间。

【讨论】:

以上是关于集群标记显示不准确的主要内容,如果未能解决你的问题,请参考以下文章

MKMapItem.openInMaps() 50% 的时间准确地显示地点标记

Android:集群标记计数未使用自定义标记正确显示

无法单击标记 - 谷歌地图集群Android,无法在谷歌地图中显示信息窗口

OverlappingMarkerSpiderfier 显示哪些标记位于“蜘蛛集群”中?

Google Maps iOS:移动相机以显示集群内的所有标记

Google Mark Cluster:以特定缩放级别显示集群中的所有标记