У меня, похоже, есть проблема, противоположная многим из тех, что выложены здесь о 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];
}
Я думаю, это то, о чем вы спрашиваете, @ Анна Каренина:
- (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];
}