Кажется, у меня есть противоположная проблема со многими из тех, что были размещены здесь около MKMapView
. Вместо того, чтобы не получить его для увеличения и отображения текущего местоположения, я не могу заставить его прекратить это делать. Вот что происходит:
- Я запускаю приложение
- MKMapView показывает мое местоположение с голубой точкой
- Я уменьшаю и удаляю карту, используя пальцы.
- Через несколько секунд MKMapView неожиданно увеличит масштаб, чтобы снова центрировать свое текущее местоположение.
Я пробовал передать CLLocationManager
stopUpdatingLocation
stopUpdatingLocation
(нет эффекта, так как MKMapView
знает, как использовать CoreLocation
), и я попытался передать MKMapView
на setShowsUserLocation:NO
(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];
}