iOS6 iPhone App Как увеличить до userLocation только один раз?

Приведенный ниже код - это метод, который я использовал для увеличения местоположения пользователя, но затем остановил его от постоянного изменения масштаба после того, как пользователь перемещает карту. Проблема с этим методом заключается в том, что когда он запрашивает разрешение на данные о расположении пользователя в приложении, и я выбираю «да», он ничего не делает. Мне нужно покинуть страницу и вернуться, прежде чем она увеличится правильно.

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if ([self.mapView showsUserLocation])
    {
        MKCoordinateRegion region;
        region.center = self.mapView.userLocation.coordinate;

        MKCoordinateSpan span;
        span.latitudeDelta  = .50; // Change these values to change the zoom
        span.longitudeDelta = .50;
        region.span = span;

        [self.mapView setRegion:region animated:YES];

        self.mapView.showsUserLocation = NO;}
}

Вышеупомянутый метод должен отслеживать изменения местоположения пользователя, а затем устанавливать местоположение, как только оно будет найдено. Затем я задаю условие в операторе if, чтобы остановить его - в противном случае он продолжит возвращаться к местоположению пользователя, когда вы перемещаете карту.


person Adama    schedule 20.02.2013    source источник


Ответы (1)


Мне кажется, что для self.mapView.showsUserLocation установлено значение FALSE, когда появляется всплывающее окно, потому что он еще не знает местоположение пользователя. Чтобы обойти эту проблему, я бы посоветовал просто использовать вашу собственную переменную. Создайте глобальное логическое значение в этом классе и используйте его вместо self.mapView.showsUserLocation. Также убедитесь, что эта функция действительно вызывается после того, как пользователь соглашается на всплывающее окно. Вы были NSLogging?

person WolfLink    schedule 21.02.2013