我很困惑,关于如何获得地图可见区域的缩放级别和半径(使用mapkit mapview)。
这是我正在寻找的(根据需要,他们中的任何一个或两者) -
截至目前,我正在使用let updatedRadius = (mapView.camera.altitude)/1000
来获取相机的高度,并且如果updatedRadius值为> 25.0,我正在展示彩色圆点。低于25.0,我会显示徽标。我在regionDidChanged
这样做
这种做法是否正确?
最终,应该发生的是,每当用户缩小时,半径都会发生变化。我需要将此更改后的半径发送到我的REST以获取更新列表。
什么是纬度经度增量,我们可以使用这些值得到可见区域的半径/宽度吗?
let latitudeDeltaVal = mapView.region.span.latitudeDelta
let longitudeDeltaVal = mapView.region.span.longitudeDelta
有人可以说明需要做些什么吗?
答案 0 :(得分:5)
由于您需要在区域更改时调用api,您需要在mapView的委托函数RegionDidChange
中计算半径。
func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
let centralLocation = CLLocation(latitude: mapView.centerCoordinate.latitude, longitude: mapView.centerCoordinate.longitude)
self.centralLocationCoordinate = mapView.centerCoordinate
print("Radius - \(self.getRadius(centralLocation))")
}
func getRadius(centralLocation: CLLocation) -> Double{
let topCentralLat:Double = centralLocation.coordinate.latitude - mapView.region.span.latitudeDelta/2
let topCentralLocation = CLLocation(latitude: topCentralLat, longitude: centralLocation.coordinate.longitude)
let radius = centralLocation.distanceFromLocation(topCentralLocation)
return radius / 1000.0 // to convert radius to meters
}