Получить TopLeft и BottomRight от MKCoordinateRegion MKMapView
Я проверил свойства в документации для MKCoordinateRegion
, MKCoordinateSpan
а также MKMapView
чтобы увидеть, что есть способ получить TopLeft и BottomRight Lat Long из вида карты, и я не нашел ни одного. Я знаю, что промежуток дает мне длинную дельту Lat, но есть ли способ получить фактические длинные значения TopLeft и BottomRight из вида карты без необходимости выполнять странные вычисления?
Я нашел это.
Не уверен, что это достаточно точно. Есть какие-нибудь голоса за это?
3 ответа
Я не думаю, что эти вычисления квалифицируются как странные:
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);
Простые вычисления, реализованные в 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)
Вы уверены, что получили +- правильно? Я не получил полезных результатов с этим. Когда я переключил +-, я сделал. Может быть, мой код неисправен где-то еще, хотя;)
Долгота указывается как угловое измерение в диапазоне от 0 ° на главном меридиане до +180° на восток и -180 ° на запад. Греческая буква λ (лямбда),[3][4] используется для обозначения местоположения места на Земле к востоку или западу от Первого меридиана.
Технически, широта - это угловое измерение в градусах (отмеченное °) в диапазоне от 0 ° на экваторе (низкая широта) до 90° на полюсах (90° с.ш. или +90° для северного полюса и 90° с.ш. или −90° для Южного полюса).
(Википедия)