Получить TopLeft и BottomRight от MKCoordinateRegion MKMapView
Я проверил свойства в документации для MKCoordinateRegion, MKCoordinateSpan и MKMapView, чтобы увидеть, как можно получить TopLeft и BottomRight Lat Long из представления карты, и я не нашел их. Я знаю, что диапазон дает мне длинную дельту Лат, но есть ли способ получить фактические longLeft и BottomRight lat longs от просмотра карты без необходимости делать странные вычисления?
Я нашел это
Как получить широту и долготу карты влево-вправо и влево в MapKit
Не уверен, что это достаточно точно. Все голоса за это?
Ответы
Ответ 1
Я не думаю, что эти вычисления считаются странными:
CLLocationCoordinate2D center = region.center;
CLLocationCoordinate2D northWestCorner, southEastCorner;
northWestCorner.latitude = center.latitude + (region.span.latitudeDelta / 2.0);
northWestCorner.longitude = center.longitude - (region.span.longitudeDelta / 2.0);
southEastCorner.latitude = center.latitude - (region.span.latitudeDelta / 2.0);
southEastCorner.longitude = center.longitude + (region.span.longitudeDelta / 2.0);
Ответ 2
Простые вычисления, реализованные в Swift 3.0 как расширение:
extension MKCoordinateRegion {
var northWest: CLLocationCoordinate2D {
return CLLocationCoordinate2D(latitude: center.latitude + span.latitudeDelta / 2,
longitude: center.longitude - span.longitudeDelta / 2)
}
var northEast: CLLocationCoordinate2D {
return CLLocationCoordinate2D(latitude: center.latitude + span.latitudeDelta / 2,
longitude: center.longitude + span.longitudeDelta / 2)
}
var southWest: CLLocationCoordinate2D {
return CLLocationCoordinate2D(latitude: center.latitude - span.latitudeDelta / 2,
longitude: center.longitude - span.longitudeDelta / 2)
}
var southEast: CLLocationCoordinate2D {
return CLLocationCoordinate2D(latitude: center.latitude - span.latitudeDelta / 2,
longitude: center.longitude + span.longitudeDelta / 2)
}
}
Использование:
var region: MKCoordinateRegion = ... some region here
print("North - West", region.northWest)
Ответ 3
Вы уверены, что получили + - правильно? Я не получил полезных результатов. Когда я переключил +, я сделал. Может быть, мой код испорчен где-то в другом месте;)
Долгота задается как измерение angular от 0 ° в Главном Меридиане до + 180 ° на восток и -180 ° на запад. Греческая буква λ (лямбда), [3] [4] используется для обозначения местоположения места на Земле на восток или запад от Главного Меридиана.
Технически, широта - это измерение angular в градусах (обозначено знаком "°" ) от 0 ° на экваторе (низкая широта) до 90 ° на полюсах (90 ° с. ш. или + 90 ° для Северного полюса и 90 ° S или -90 ° для Южного полюса).
(Википедия)