计算MKCoordinateRegion具有固定对角线距离
问题描述:
欲计算与30公里的对角线距离和区域的比例的MKCoordinateRegion应该是相同的地图帧。 我的方法是这样的:计算MKCoordinateRegion具有固定对角线距离
let alpha = atan(mapView.frame.width/mapView.frame.height).radiansToDegrees
let beta = 90 - alpha
let spanDiagonal = 30_000.0
let spanWidth = spanDiagonal * Double(cos(beta.degreesToRadians))
let spanHeight = sqrt(spanDiagonal * spanDiagonal + spanWidth * spanWidth)
let region = MKCoordinateRegionMakeWithDistance(mapView.centerCoordinate, spanWidth, spanHeight)
let tlLat = region.center.latitude + (region.span.latitudeDelta/2.0)
let tlLong = region.center.longitude - (region.span.longitudeDelta/2.0)
let brLat = region.center.latitude - (region.span.latitudeDelta/2.0)
let brLong = region.center.longitude + (region.span.longitudeDelta/2.0)
let tl = CLLocationCoordinate2D(latitude: tlLat, longitude: tlLong)
let br = CLLocationCoordinate2D(latitude: brLat, longitude: brLong)
print(MKMetersBetweenMapPoints(MKMapPointForCoordinate(tl), MKMapPointForCoordinate(br)))
我计算出的画面的角度,然后用这种角度的三角形和30000基地这导致了我认为正确的跨度高度和宽度。
,我的问题是对角的区域是10公里大。我认为造成这种情况的原因是米转换成度,这在某种程度上是错误的。
你看到一个问题,我的方法或你知道什么更好的方法来计算与帧的相同比例的区域,对角30公里和相同中心的地图吗?