0
대각선 길이가 30km 인 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)))
I 프레임의 각도와 다음이 각도 삼각형과이 내가 올바른 범위의 높이와 너비를 생각했던 결과 30000의 기본으로 계산합니다.
내가 가진 문제는 그 지역의 대각선이 약 10km 더 큽니다. 나는 이것이 계량기가 어떤 각도로도 단위로 변환되는 원인이라고 생각합니다.
내 접근 방식에 문제가 있는지, 30 킬로미터 대각선 및 프레임과 같은 비율로 지역을 계산하는 더 좋은 방법을 알고 계십니까?