我在Google地图上有标记,一旦用户缩放到地图上的特定缩放级别,我想为其设置动画以使其不隐藏,然后当用户缩小时,标记再次隐藏。 / p>
在Snapchat的SnapMap中可以看到类似的功能。
这种行为如何实现?
在google map的didChangeposition
委托方法中,我可以掌握当前的缩放级别,但是从那里如何为标记添加动画效果?我没有看到一种方法来访问当前显示的标记数组。
有什么想法吗?
答案 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()
}
}