iOS Swift Google Maps SDK在特定缩放级别显示标记吗?

时间:2018-07-04 19:54:50

标签: ios swift google-maps

我在Google地图上有标记,一旦用户缩放到地图上的特定缩放级别,我想为其设置动画以使其不隐藏,然后当用户缩小时,标记再次隐藏。 / p>

在Snapchat的SnapMap中可以看到类似的功能。

这种行为如何实现?

在google map的didChangeposition委托方法中,我可以掌握当前的缩放级别,但是从那里如何为标记添加动画效果?我没有看到一种方法来访问当前显示的标记数组。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这是我在Swift中使用标准MapKit的方法:

/**
     Tells the mapview delegate the mapview visible region was changed. The window size is checked then
     the correct icon size is displayed on the map.
     - parameter mapView: The map view whose visible region changed.
     - parameter animated: If true, the change to the new region was animated.
     */
    func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) {

        let zoomWidth = mapView.visibleMapRect.size.width
        //print(zoomWidth)
        if Int(zoomWidth) < 15000  {
            self.mapView.addAnnotations(self.stopArr)
            imageZoom = imageArr[1]! //32px
        } else if Int(zoomWidth) >= 15000 && Int(zoomWidth) < 20000 {
            imageZoom = imageArr[0]! //16px
            self.mapView.addAnnotations(self.stopArr)
        } else {
            imageZoom = imageArr[0]! //16px
            self.mapView.removeAnnotations(self.stopArr)
        }
    }

stopArr是包含我的注释的Array类型的属性。 Google SDK中可能有类似的东西。查看此页面:https://developers.google.com/maps/documentation/ios-sdk/events。也许mapView:didChangeCameraPosition:是吗?

答案 1 :(得分:1)

您可以使用googlemaps的“ didchange”委托 例如:

 val recurringWork: PeriodicWorkRequest = PeriodicWorkRequest.Builder(TestingWorker::class.java, 1, TimeUnit.SECONDS).build()
 WorkManager.getInstance()?.enqueue(recurringWork)

如果您想添加动画进场,这对我有用

func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) {
    if mapView.camera.zoom >= 16 {
         // ADD YOUR MARKERS HERE
    } else {
        mapView.clear()
    }
}