如何处理同一地址上的多个位置并对其进行聚类?

jus*_*dev 5 google-maps google-maps-api-3 ios swift

我在Swift开发的iOS应用程序中使用带有集群的谷歌地图.在谷歌地图上有一些具有相同纬度和经度的标记.当用户放大到群集中仅有两个位置的点并且在显示标记时稍微缩放一点时,这些标记会出现闪烁(闪烁)并且它们彼此快速叠加(一个在另一个上).

如何在用户放大时完成,并且群集中只有两个标记具有相同的地址和位置,以便不将它们从群集中分割为标记,以便它们保持群集状态?有没有办法从集群中获取标记谢谢你的答案.

Arp*_*ain 11

我有同样的问题,为了克服闪光效应,它给出了相似的纬度和经度值的微小变化.

func checkIfMutlipleCoordinates(latitude : Float , longitude : Float) -> CLLocationCoordinate2D{

        var lat = latitude
        var lng = longitude

        // arrFilterData is array of model which is giving lat long

        let arrTemp = self.arrFilteredData.filter {

            return (((latitude == $0.latitute) && (longitude == $0.longitute)))
        }

        // arrTemp giving array of objects with similar lat long 

        if arrTemp.count > 1{
            // Core Logic giving minor variation to similar lat long

            let variation = (randomFloat(min: 0.0, max: 2.0) - 0.5) / 1500
            lat = lat + variation
            lng = lng + variation
        }
        let finalPos = CLLocationCoordinate2D(latitude: CLLocationDegrees(lat), longitude: CLLocationDegrees(lng))
        return  finalPos
    }

 func randomFloat(min: Float, max:Float) -> Float {
        return (Float(arc4random()) / 0xFFFFFFFF) * (max - min) + min
    }
Run Code Online (Sandbox Code Playgroud)

checkIfMutlipleCoordinates只要您设置标记位置,只需打电话

 let position = checkIfMutlipleCoordinates(latitude: yourlatitute!, longitude: yourlongitute!)
Run Code Online (Sandbox Code Playgroud)


Ron*_*hes 5

我很抱歉迟到了,但是:从 SDK 的 1.4.0(2013 年 7 月)版本开始,GMSOverlay(GMSMarker 子类)上有一个名为“zIndex”的属性。

如文档中所述:

较高 zIndex 值的叠加将绘制在较低 zIndex 值的切片图层和叠加之上。

相等的值会导致未定义的绘制顺序。

闪烁可能是因为两个标记都有 zIndex == 0

无论如何,这对我有用。


Man*_*hak 2

Google 地图 iOS SDK 的已知行为

如果您正在创建自定义标记并使用 iconView 属性来更改图标的图像,如果坐标完全相同,它将给出闪烁效果。这是谷歌地图 iOS SDK 的一个已知问题。尝试使用默认标记代替并查看如果问题仍然存在。