Для Google Maps iOS SDK, текущее местоположение иногда отображается в 0,0
Не уверен, почему это происходит, но когда это произойдет, мы бы предпочли не показывать пользователю, что его текущее местоположение составляет 0,0 (оно находится посреди океана у побережья Южной Африки). Есть ли способ определить, когда это происходит, чтобы мы могли показать сообщение об ошибке или что-то пользователю?
1 ответ
Похоже, вы не авторизованы для доступа к текущему местоположению устройства. Для этого вам нужно добавить эти два ключа в свой список:
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
Теперь, когда вы закончили с этим, вам нужно будет запросить авторизацию следующим образом:
if ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)])
{
[locationManager requestWhenInUseAuthorization];
}
Теперь, когда вы закончили авторизацию, вам нужно начать получать обновления местоположения. Для этого используйте эту строку:
[locationManager startUpdatingLocation];
Теперь, если вы хотите перейти в текущее местоположение, вам нужно реализовать этот метод здесь:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
CLLocation *location = [locations lastObject];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:location.coordinate.latitude longitude:location.coordinate.longitude zoom:currentZoom];
[self.gMapView animateToCameraPosition:camera];
}
Это будет постоянно обновлять карту с текущим местоположением. Если вы просто хотите перейти к текущему местоположению один раз, просто поместите условный оператор для него.
Если пользователь отказывает в разрешении, будет вызван следующий метод:
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
if([CLLocationManager locationServicesEnabled])
{
if([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)
{
// Put your alert here.
}
}
}