Предотвращение постоянного масштабирования и центрирования MKMapView в соответствии с местоположением пользователя

Кажется, у меня проблема противоположная тому, что было у многих из тех, кто писал здесь о MKMapView . Вместо того, чтобы заставить его увеличивать масштаб и отображать текущее местоположение, я не могу заставить его остановить это.Вот что происходит:

  • Я запускаю приложение
  • MKMapView показывает мое местоположение синей точкой
  • Я уменьшаю масштаб карты и удаляю ее пальцами
  • Через несколько секунд MKMapView внезапно возвращается назад чтобы снова сосредоточиться на моем текущем местоположении

Я попытался сообщить своему CLLocationManager stopUpdatingLocation (безрезультатно, поскольку MKMapView ​​знает, как использовать CoreLocation ), и я попытался сообщить MKMapView setShowsUserLocation: NO (синяя точка не отображается вообще, что я не хочу). Я даже попытался удалить мой CLLocationManager (без эффекта). Что вызывает это и как мне это остановить?


Да, я действительно устанавливаю точность и расстояние диспетчера местоположения в -loadView .

Я не использую -mapViewDidFinishLoadingMap :. Вот моя реализация

-locationManager:didUpdateToLocation:fromLocation:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    // How many seconds ago was this new location created?
    NSTimeInterval t = [[newLocation timestamp] timeIntervalSinceNow];

    // CLLocationManagers will return the last found location of the device first,
    // you don't want that data in this case. If this location was made more than 3
    // minutes ago, ignore it.
    if (t < -180)
    {
        // This is cached data, you don't want it, keep looking
        return;
    }

    [locationManager stopUpdatingLocation];
}

. Я думаю, это то центрирование, о котором вы спрашиваете, @Anna Karenina:

- (void)mapView:(MKMapView *)mv didUpdateUserLocation:(MKUserLocation *)u
{
    CLLocationCoordinate2D loc = [u coordinate];
    // Display the region 500 meters square around the current location
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 500, 500);
    [mv setRegion:region animated:YES];
}
11
задан Atulkumar V. Jain 9 July 2012 в 06:13
поделиться