MKMapView и setRegion: анимированные:визуальные элементы карты не обновляются

StackOverflow https://stackoverflow.com/questions/1095508

Вопрос

Приветствую вас!Я пытаюсь использовать MKMapView (Просмотр MKMapView) без каких-либо примеров кода Apple, хотя есть несколько других, отличающихся ясностью.(Я знаю, "Прочитайте понятное руководство". Я это делал, но это не на 100% понятно, поэтому, пожалуйста, потерпите меня в этом вопросе.)

Вот такая ситуация.У меня есть MKMapView (Просмотр MKMapView) объект, к которому я добавил набор из примерно десяти Обозначение mkpin Объекты.Пока все идет так хорошо.Все распределяется / высвобождается разумно, и, похоже, от Инструментов нет никаких жалоб.

При первоначальном отображении я настроил Мккоординатный регион объект с центральной точкой в нашем первом местоположении вывода и (произвольным) размахом 0,2 x 0,2.Затем я звоню:

[mapView setRegion:region animated:YES];
[mapView regionThatFits:region];

Ух ты!Это сработало хорошо.

Тем временем ...У меня также есть сегментированный элемент управления, позволяющий перемещаться к каждому местоположению вывода.Итак, когда я просматриваю список, карта анимируется для каждого нового местоположения pin-кода с новой парой вызовов setRegion: анимированный: и Регион, который подходит: ...или, по крайней мере, такова идея.

Хотя карта "перемещается" в новое местоположение pin-кода, сама карта под ним не обновляется.Вместо этого я вижу свой пин-код на сером / пустом фоне карты... до тех пор , пока Я подталкиваю карту в любом направлении, пусть и слегка.Тогда карта просвечивает насквозь!(Если я перемещаюсь только на небольшое расстояние от предыдущего местоположения пин-кода, я обычно вижу ту часть карты, которая уже была загружена.)

Я подозреваю, что я делаю здесь что-то глупое, но я не смог понять, что именно, по крайней мере, не из документов MapKit.Возможно, я использую неправильные вызовы?(Ну, мне действительно нужно установить регион хотя бы один раз, да?Перемещение этого, похоже, не помогает.) Я также пробовал использовать setCenterCoordinate:анимированный: - та же проблема.

На данный момент я ничего не предполагаю (без каламбура).Просто пытаюсь найти свой путь.

Подсказки приветствуются / ценятся!

Обновить:Зовущий setRegion: анимированный: и Регион, который подходит: в первый раз, за которым последовали setCenterCoordinate:анимированный: при обходе списка это не имеет никакого эффекта.Однако интересная находка:Если я изменю значение animated на NO в обоих случаях, карта обновится!!!Только тогда, когда для него установлено значение "ДА".(Что случилось?!Является анимированным:сломанный?Этого не может быть ...???)

Это было полезно?

Решение

Оказывается, обновление карты не работает при использовании СИМУЛЯТОРА.Когда я пытаюсь setCenterCoordinate:анимированный: на устройстве я делай ознакомьтесь с обновлением карты внизу.

Итог:Я доверял симулятору соответствовать устройству с точки зрения поведения при обновлении карты.Увы, я ошибся!Урок усвоен."Не позволяй этому случиться с тобой" . :)

Другие советы

Вам нужно вызвать setRegion:animated: вызовите в контексте основного потока.Просто сделайте что-то вроде:

....
[self performSelectorOnMainThread:@selector(updateMyMap) withObject:nil waitUntilDone:NO];

}

-(void) updateMyMap {
    [myMap setRegion:myRegion animated:YES];    
}

и это должно сработать в любом случае (анимированный он или нет), с обновленной картой внизу.

Странный гул.Карта обновляется на моем Mac даже в симуляторе.Может быть, настройка сети (прокси или что-то еще), которая помешала бы виджету карты загружать плитки в симулятор?

Несмотря на то, что это старая тема, я решил поделиться своим опытом.Похоже, анимация карты не работает только на устройствах под управлением iOS 3.1.x и симуляторе под управлением 3.1.x .Мой разработчик iPod touch с версией 3.1.3 не может увеличить масштаб изображения, если включена анимация.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top