MapView привязывается к исходному местоположению - помогите! - PullRequest
0 голосов
/ 09 февраля 2011

У меня есть mapView с пользовательскими аннотациями, и я столкнулся с проблемой на iPhone бета-тестера. MapView не позволит пользователю перемещаться в любое место ... как только вы попытаетесь переместиться, он вернется к исходным координатам.

Есть идеи, почему? Это не происходит в симуляторе, и я замечаю это немного на моем собственном устройстве ... но это постоянная проблема на другом устройстве.

Большое спасибо!

static BOOL haveAlreadyReceivedCoordinates = NO;

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation  {
    if(haveAlreadyReceivedCoordinates) {
    return;
    }

    haveAlreadyReceivedCoordinates = YES;

    CLLocationCoordinate2D loc = [newLocation coordinate];
    [mapView setCenterCoordinate:loc];
}

1 Ответ

1 голос
/ 10 февраля 2011

Icky поставил вас на правильный путь. Вам не следует постоянно переустанавливать центр карты на то, что вы получите от менеджера локаций. Менеджер местоположения отправит вам все виды обновлений.

Возможно, вы захотите использовать обновление только один раз, а затем проигнорировать будущие обновления (установив какой-либо флаг), или вы можете центрировать карту по местоположению пользователя, только когда пользователь нажимает кнопку. В последнем случае единственное, что вам нужно сделать в didUpdateToLocation:, это сохранить новое местоположение в некоторой переменной-члене.

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

...