web-dev-qa-db-ja.com

iOS位置情報サービスの確認

地図とボタン(かつてのマップアプリのような)を備えたビューがあり、ユーザーは地図上の現在の場所を中央に配置してズームできます。 locationServicesEnabledメソッドを使用できない場合(常にYESを返す)、didFailWithErrorメソッドが呼び出されているかどうかを確認し、buttonメソッドを呼び出すことができるかどうかを確認するためにBOOL属性を作成する必要がありますか?

読んでくれてありがとう。

編集:

このコードは私には機能しません。シミュレータを使用しています。 locationServicesEnabledを要求すると、常にYESが表示されます。

// 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];     
    }
}
20

設定には、位置情報サービスを無効にする2つのオプションがあります。最初のオプションは、すべてのアプリの位置情報サービスを無効にするグローバルスイッチ「[CLLocationManagerlocationServicesEnabled]」です。 2番目のオプションでは、一部のアプリでは位置情報サービスを無効にできますが、すべてのアプリでは無効にできません。

グローバルに無効化されているかどうか、およびアプリで無効化されているかどうかを確認するには、以下を使用します。

if([CLLocationManager locationServicesEnabled] && 
   [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied)
{
...
}
99
Robin

「locationServicesEnabled」は、ユーザーが環境設定で位置情報サービスを有効にしているかどうかを確認します。 MapViewはおそらくこの値をすでにチェックしており、位置情報サービスが利用できない場合は「self.mapView.userLocation」に値を設定しないでください。 このSO質問はあなたにもう少し情報を与えるかもしれません。

1
Nippysaurus

私もこの問題に遭遇し、まだ答えを見つけています。

authenticationStatusにはiOS4.2 +が必要であり、+(BOOL)locationServicesEnabledにはiOS4.0が必要であることに注意してください...以前のiOSバージョンでは、-(BOOL)locationServicesEnabled ...

1
lin zheng
- (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;
    }
}
1
P.J.Radadiya