Как создать 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)