MKMapView: Как установить диапазон региона на основе точности? - PullRequest
4 голосов
/ 11 февраля 2010

Я внедряю картографическое приложение на iPhone. Я хочу, чтобы карта увеличивала текущее местоположение пользователя. Я хотел бы увеличить масштаб на основе точности (эмуляция работы приложения «Карты»).

Я реализую этот метод:

    - (void)locationManager:(CLLocationManager *)manager 
didUpdateToLocation:(CLLocation *)newLocation 
fromLocation:(CLLocation *)oldLocation {

Проблема, с которой я сталкиваюсь, состоит в том, что CLLocation обеспечивает мне точность со свойствами горизонтальной точности и вертикальной точности, что в итоге означает метры. Однако для центрирования карты я использовал это:

MKCoordinateRegion region;
MKCoordinateSpan span;
region.center = newLocation.coordinate; 
span.latitudeDelta=.005;  //THIS IS HARDCODED
span.longitudeDelta=.005; //THIS IS HARDCODED   
region.span = span;

[mapView setRegion:region animated:YES];

Я ищу способ вычисления latitudeDelta (в градусах) на основе горизонтальной точности (в метрах).

Это не должно быть точное преобразование (я не ожидаю формулу преобразования, которая потребует довольно большого количества вычислений, включая текущее местоположение), только некоторые приблизительные значения.

Есть идеи?

Спасибо. Gonso

Ответы [ 2 ]

13 голосов
/ 11 февраля 2010

Нет необходимости делать расчеты. Просто используйте MKCoordinateRegionMakeWithDistance().

0 голосов
/ 22 июня 2012

Я использую следующий код для установки центра и диапазона, который будет отображаться в MapView. Это должно работать.

MKCoordinateRegion region = {{0,0},{.5,.5}}; 
region.center.latitude = doubleLattitude; //user defined
region.center.longitude = doubleLongitude;//user defined
[mapView setRegion:region animated:YES]; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...