Как получить координаты аннотации карты? - PullRequest
0 голосов
/ 20 марта 2012

Я хочу, чтобы IBAction центрировал регион моей карты в аннотации. Аннотация добавляется в просмотр карты следующим образом:

myAnnotation *pinLoc=[[myAnnotation alloc] init];
pinLoc.coordinate = mapview.centerCoordinate;
pinLoc.title = @"Title";
pinLoc.subtitle = @"subtitle";
[mapview addAnnotation:pinLoc];

Я бы хотел получить его и как-нибудь переместить центр региона:

- (IBAction)findPin:(id)sender {

    MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } };

    region.center.latitude = pinLoc.coordinate.latitude;
    region.center.longitude = pinloc.coordinate.longitude;
    region.span.latitudeDelta = 0.001f;
    region.span.longitudeDelta = 0.001f;
    [mapview setRegion:region animated:YES]; 
    [mapview setDelegate:self];
}

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

1 Ответ

1 голос
/ 20 марта 2012

Самый простой способ - сохранить ссылку на аннотацию при ее добавлении.

Например, вы можете объявить свойство сохранения с именем pinToRemember типа myAnnotation и после добавления аннотации сделать это, чтобы сохранить его на потом:

[mapview addAnnotation:pinLoc];
self.pinToRemember = pinLoc;

Тогда в findPin: вы бы сделали:

if (pinToRemember == nil)
    return;

region.center = pinToRemember.coordinate;


В качестве альтернативы вы можете выполнить поиск в свойстве массива annotations вида карты и найти интересующую вас аннотацию, найдя ее title или другое пользовательское свойство. Это можно сделать с помощью простого цикла for.


Вы говорите, что у вас есть «способ узнать, находится ли пин внутри многоугольника», но этот ответ также может быть полезен:
Как определить, находится ли аннотация внутри MKPolygonView (iOS)

...