我正在开发一个应用程序,它根据当前位置周围的半径显示某些标记。半径在100-5000米之间。我用一个改变半径UISlider
并重新绘制GMSCircle
.
我的问题是我想根据滑块值更新相机变焦,但我不知道要按哪个比例划分。
这就是我在中创建相机的方式viewDidLoad
初始缩放值为15的方法:
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:locationManager.location.coordinate.latitude longitude:locationManager.location.coordinate.longitude zoom:15];
这是我正在做的事情的屏幕截图。
有谁知道我应该使用什么比例来相应地移动缩放?
多谢!
Granit
这是获取边界的更简单的解决方案GMSCircle
。
它不依赖于 MapKit,并且避免了改变相机位置的两个调用(moveCamera
and animateToLocation
)
import GoogleMaps
extension GMSCircle {
func bounds () -> GMSCoordinateBounds {
func locationMinMax(_ positive : Bool) -> CLLocationCoordinate2D {
let sign: Double = positive ? 1 : -1
let dx = sign * self.radius / 6378000 * (180 / .pi)
let lat = position.latitude + dx
let lon = position.longitude + dx / cos(position.latitude * .pi / 180)
return CLLocationCoordinate2D(latitude: lat, longitude: lon)
}
return GMSCoordinateBounds(coordinate: locationMinMax(true),
coordinate: locationMinMax(false))
}
}
将此文件添加到您的项目后,您所要做的就是:
let update = GMSCameraUpdate.fit(myCircle.bounds())
myMap.animate(with: update)
where myCircle
and myMap
被实际的圆圈和地图取代。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)