根据swift中地图的缩放级别显示某个区域中Google地图中的标记数

时间:2017-01-24 10:32:15

标签: ios swift google-maps

我在iOS应用程序中使用GMap。

我已经根据我们的数据添加了一组标记。

但是当地图缩小时,标记会相互重叠,这似乎不太好。

我需要根据地图缩放级别显示标记的数量或数量。意味着如果2个标记彼此重叠,则显示单个标签,文本2作为标记,依此类推......

2 个答案:

答案 0 :(得分:1)

Google地图不提供此类API或委托功能来处理您的事情,但您可以做的是每次缩小地图时您都可以获得当前的缩放级别并将之前的标记替换为单个自定义[2个位置] ]标记。

//替换标记

您可以创建一个继承自GMSMarker类的自定义标记类“MyMarker.class”,现在如果要提供从数组到标记的数据索引,则在“MyMarker.class”中添加变量markerID。将数组的数组索引分配给markerID,并根据缩放级别更改特定标记。

找到可见区域

func snapToMarkerIfItIsOutsideViewport(m: GMSMarker) {

    let region: GMSVisibleRegion = mapView.projection.visibleRegion()
    let bounds: GMSCoordinateBounds = GMSCoordinateBounds(region: region)
    if !bounds.containsCoordinate(m.position) {
        // marker is outside the visible map, do something
    }
}

答案 1 :(得分:1)

您搜索的内容为marker clustering

请参阅Google Maps iOS SDK: Marker Clustering

中的此文档

它使用ios utils: https://github.com/googlemaps/google-maps-ios-utils