Кажется, у меня проблема противоположная тому, что было у многих из тех, кто писал здесь о 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];
}