Как создать MKCoordinate регион, аналогичный радиусу 50 миль в ios Swift?

Я пытаюсь создать область, похожую на радиус окружности, используя CLLocation. Я понимаю логику радиуса и то, как она измеряется в метрах, но не очень понятно для координатной области MK и как долго дельта и дельта широты переводятся в область. Я хотел бы получить 75-мильный регион. Вот мой код....

let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))

Если бы вы могли предоставить объяснение больше, чем просто краткий ответ, это будет оценено.

2 ответа

Решение

Если вы пытаетесь создать реальную круговую область:

let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
let radius: CLLocationDistance = 60350.4    // meters for 37.5 miles
let regionIdentifier = "CircularRegion"     // any desired String

let circularRegion = CLCircularRegion(center: center, radius: radius, identifier: regionIdentifier)

Вы можете использовать функцию MKCoordinateRegionMakeWithDistance:

Создает новый MKCoordinateRegion из указанных значений координат и расстояний.

func MKCoordinateRegionMakeWithDistance(
_ centerCoordinate: CLLocationCoordinate2D, 
_ latitudinalMeters: CLLocationDistance, 
_ longitudinalMeters: CLLocationDistance) -> MKCoordinateRegion

centerCoordinate - центральная точка новой координатной области.

latitudeMeters - величина расстояния с севера на юг (измеряется в метрах), используемая для пролета.

longticalMeters - количество расстояний между востоком и западом (измеряется в метрах) для использования в пролете.

Так что у вас будет что-то вроде:

let rect = MKCoordinateRegionMakeWithDistance(center, 50 * 1609.34, 50 * 1609.34)
Другие вопросы по тегам