Преобразование расстояния в MKMapView в расстояние для UIView - PullRequest
2 голосов
/ 07 декабря 2011

Как преобразовать расстояние (например, 400 метров) в MKMapView в расстояние для UIView?Я хочу показать MKAnnotationView, который зависит от текущего уровня масштабирования на MKMapView.

Ответы [ 2 ]

9 голосов
/ 07 декабря 2011

Сначала создайте регион длиной 400 метров:

MKCoordinateRegion myRegion = MKCoordinateRegionMakeWithDistance(mapView.centerCoordinate, 400, 0);

После этого используйте методы конвертирования области для получения реального прямоугольника:

CGRect myRect = [mapView convertRegion: myRegion toRectToView: nil];
NSLog(@"width for 400m is %f", myRect.size.width);

Надеюсь, это поможет.

5 голосов
/ 07 декабря 2011

У вас есть несколько селекторов в MKMapView для преобразования координат UIView на экране в географические координаты (и также geo -> screen):

- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view
- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view

Я предполагаю, что 400 метров - это расстояние между двумя координатами, поэтому если у вас есть ссылка на 2 CLLocationCoordinate2D структуры.
Просто используйте - (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view, чтобы получить соответствующий CGPoint (= экранные координаты), и тогда вы сможете рассчитать расстояние до экрана.

...