MKMapView setRegion не является константой - PullRequest
2 голосов
/ 19 ноября 2010

Я устанавливаю свой регион MKMapView внутри viewWillAppear: чтобы карта отображала хороший регион сразу же, как только пользователь его увидит:

[mapView setRegion:region animated:NO];

В первый раз, когда я это делаю, регион обрезают примерно так:

alt text

Затем, когда я устанавливаю точно такой же регион , я получаю что-то вроде этого:

alt text

Второй снимок экрана - это то, что я хочу получить с самого начала . Я думаю, это первый раз, когда я устанавливаю регион, карта не загружена полностью или что-то в этом роде. Любой указатель того, что я должен сделать, чтобы это исправить?

РЕДАКТИРОВАТЬ: Это, вероятно, связано: добавление аннотации к mapView до первого вызова viewDidAppear также не работает. PinView просто не отображается. Как я могу убедиться, что вид карты готов к использованию в viewWillAppear?

Ответы [ 3 ]

1 голос
/ 19 ноября 2010

Я наткнулся на этот поток , который предложил добавить задержку к вызову setRegion: (если вам все равно требуется вызывать его в методе viewWillAppear). Вроде глупо, но это работает.

- (void)viewWillAppear:(BOOL)animated {
    [self performSelector:@selector(centerMap:) withObject:nil afterDelay:0.01];
}

Мне действительно любопытно, чего не хватает в mapView, чтобы правильно перецентрировать без этой задержки.

1 голос
/ 19 ноября 2010

Сообщалось о проблемах, связанных с методом setRegion, некоторое время назад, я не знаю, были ли они исправлены с тех пор.Посмотрите на следующий пост на форумах Apple Dev:

https://devforums.apple.com/message/57488

0 голосов
/ 19 ноября 2010

Вы пытались сделать вызов из сообщения MKMapViewDelegate mapViewDidFinishLoadingMap?Возможно, уже достаточно поздно, чтобы правильно понять регион?

...