Sprawdzanie usług lokalizacji iOS
Mam widok z mapą i przyciskiem (jak kiedyś aplikacja Mapy), który pozwala użytkownikowi wyśrodkować i powiększyć swoją aktualną lokalizację na mapie. Jeśli nie mogę użyć metody locationServicesEnabled (zawsze zwraca YES), czy powinienem utworzyć atrybut BOOL, aby sprawdzić, czy metoda didFailWithError jest wywołana i czy mogę wywołać metodę button?
Dzięki za przeczytanie.Edited:
Ten kod nie działa dla mnie. Używam symulatora. Zawsze dostaję tak pytając locationServicesEnabled.
// Gets the user present location.
- (IBAction)locateUser:(id)sender {
if([CLLocationManager locationServicesEnabled]) {
CLLocationCoordinate2D coordinate;
coordinate.latitude = self.mapView.userLocation.location.coordinate.latitude;
coordinate.longitude = self.mapView.userLocation.location.coordinate.longitude;
[self zoomCoordinate:coordinate];
} else {
[[[[UIAlertView alloc] initWithTitle:@"Warning." message:@"Location services are disabled."
delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease] show];
}
}
4 answers
W preferencjach masz dwie opcje wyłączenia usług lokalizacji. Pierwszą opcją jest globalny przełącznik, który wyłącza usługę lokalizacji dla wszystkich aplikacji "[CLLocationManager locationServicesEnabled]". Druga opcja umożliwia wyłączenie usługi lokalizacji dla niektórych aplikacji, ale nie dla wszystkich aplikacji.
Aby sprawdzić, czy jest wyłączony globalnie i czy jest wyłączony dla Twojej aplikacji:
if([CLLocationManager locationServicesEnabled] &&
[CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied)
{
...
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-14 08:29:33
"locationServicesEnabled" sprawdza, czy użytkownik włączył Usługi lokalizacji w preferencjach. Twój MapView prawdopodobnie już sprawdza tę wartość i nie powinien ustawiać żadnych wartości na " self.mapView.userLocation " jeśli usługi lokalizacyjne nie są dostępne. To pytanie może dać ci więcej informacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:53:12
Ja też napotkałem ten problem i wciąż znajduję odpowiedź.
Upewnij się, że authorizationStatus wymaga iOS4.2+ i + (BOOL)locationServicesEnabled wymaga iOS4.0... A dla poprzednich wersji iOS jest to - (BOOL)locationServicesEnabled...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-22 20:39:45
- (BOOL) enableLocationServices
{
if ([CLLocationManager locationServicesEnabled])
{
self.locationManager.distanceFilter = 10;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[self.locationManager startUpdatingLocation];
[self.mapview setUserTrackingMode:MKUserTrackingModeFollow animated:YES];
return YES;
}
else
{
return NO;
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-11 11:37:53