iPhone - Обновление аннотации субтитров в mapkit - PullRequest
1 голос
/ 18 апреля 2011

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

У меня есть кнопка, позволяющая сбросить булавку. Это действие получает координаты местоположения пользователя, а затем вызывает [начало геокодера], которое получает полный адрес с помощью обратного геокодера, генерирует пользовательскую аннотацию и затем вызывает [mapView addAnnotation: customPlacemark].

Моя проблема заключается в том, что при использовании этого порядка следования, когда нет соединения WiFi (только 3G или, возможно, Edge), пин-код требует много для сброса, потому что нужно получить информацию об обратном геокодировании.

Так что в основном мне нужно удалить пин без субтитров, и из viewDidAnnotation вызвать геокодер, а внутри reverseGeocoder обновить субтитры, но я не уверен, как это сделать.

Я хочу отобразить аннотацию без указания адреса и обновить ее, когда она получит информацию от обратного геокодера.

Есть предложения?

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 18 апреля 2011

MKMapView наблюдает за изменениями своих аннотаций через КВО.Поэтому, если вы обновляете свойства вашей аннотации в соответствии с KVO, она должна просто работать.

Например, когда обратный геокодер возвращает адрес для вашей аннотации, вы сначала объявляете свойства title и subtitleвот-вот изменятся:

[self willChangeValueForKey:@"title"];
[self willChangeValueForKey:@"subtitle"];

Обратите внимание, что вышеприведенный код предполагается в классе аннотаций.

Затем обновите аннотацию информацией из геокодера.Когда вы закончите:

[self didChangeValueForKey:@"subtitle"];
[self didChangeValueForKey:@"title"];

Обратите внимание, что порядок для didChangeValueForKey: изменился, так как они должны быть правильно вложены, как HTML-теги.

Это также работает для свойства coordinate, это заставит штифт двигаться.

0 голосов
/ 18 апреля 2011

Я бы поместил аннотацию, сохранил бы ссылку на нее в свойстве, затем, когда обратный геокодер перезвонит, использовал ссылку на аннотацию и обновил бы ее свойства.

...