2016-12-17 2 views
3

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

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) 
2

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

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

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

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

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

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

Таким образом, вы будете иметь что-то вроде:

let rect = MKCoordinateRegionMakeWithDistance(center, 50 * 1609.34, 50 * 1609.34) 
+0

Почему вы нам 50 * 1609.34 сделать широты и долготы расстояние в метрах? –

+2

@CharlesJr: 1609.34 - 1 миля в метрах, поэтому Avt преобразует ваши 50 миль в эквиваленты метров, используемые для 'CLLocationDistance'. – leanne

Смежные вопросы