IOS 8 Mapview Текущее местоположение не срабатывает
MKMapview
текущее местоположение пользователя не срабатывает в iOS-8
, предыдущие iOS-7
и iOS-6
работают нормально.
self.mapView.delegate = self;
self.mapView.showsUserLocation =YES;
В этой строке для автоматического вызова методов делегирования текущего местоположения пользователя
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
}
но он не срабатывает в iOS-8
.
Ответы
Ответ 1
В iOS8 вам нужно запросить авторизацию пользователя, прежде чем получить свое местоположение.
Существует два типа запроса:
-[CLLocationManager requestWhenInUseAuthorization]
позволяет вам определять местоположение пользователя только тогда, когда приложение пробуждается.
-[CLLocationManager requestAlwaysAuthorization]
позволяет вам находить местоположение пользователя, даже если оно находится в фоновом режиме.
Вы можете выбирать между ними соответственно.
Например, поставьте это перед началом обновления местоположения:
// ask for authorization
CLLocationManager * locationManager = [[CLLocationManager alloc] init];
// check before requesting, otherwise it might crash in older version
if ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
[locationManager requestWhenInUseAuthorization];
}
Кроме того, не забудьте добавить две клавиши
NSLocationWhenInUseUsageDescription
и
NSLocationAlwaysUsageDescription
в ваш info.plist.
Оставьте значения пустыми для использования сообщений по умолчанию или вы можете настроить их самостоятельно, введя значения.
Ответ 2
В ios 8 Требуется авторизация, как указано ниже
NSString * osVersion = [[UIDevice currentDevice] systemVersion];
if ([osVersion floatValue]>= 8.0 ) {
[_CLLocationManager requestAlwaysAuthorization]; //Requests permission to use location services whenever the app is running.
// [_CLLocationManager requestWhenInUseAuthorization]; //Requests permission to use location services while the app is in the foreground.
}
[_CLLocationManager startUpdatingLocation];
И вам нужно добавить два ключа в plist
1.NSLocationAlwaysUsageDescription
2.NSLocationWhenInUseUsageDescription
![enter image description here]()
Ответ 3
В iOS 8 Mapview Current Location fire с использованием
Вы можете установить в свой файл .plist
<key>NSLocationWhenInUseUsageDescription</key>
<string>Your app name Or Other string</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Your app name Or Other string</string>
И ваша сторона кода, которую вы только реализуете,
CLLocationManager * locationmanager = [CLLocationManager new];
locationmanager.delegate = self;
locationmanager.distanceFilter = kCLDistanceFilterNone;
locationmanager.desiredAccuracy = kCLLocationAccuracyBest;
[locationmanager startUpdatingLocation];
[locationmanager requestAlwaysAuthorization];
- (void) locationManager: (CLLocationManager *) manager didUpdateLocations: (NSArray *) местоположения
{
location = [locations objectAtIndex:0];
[locationmanager stopUpdatingLocation];
}
Я использую это приложение для моего идеального местоположения.