0

位置を追跡するために、iOS8.1 SDK に従ってアプリに必要な変更を加えました。以下のコードを使用して緯度と経度を取得していますが、緯度と経度の値を取得していません。緯度と経度の値を取得するには、これ以外の変更を行う必要がありますか?

appdelegate.h で:

CLLocationManager *locationManager;

appdelegate.m で:

- (void)applicationDidBecomeActive:(UIApplication *)application{
    if (locationManager==nil) {
        locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
            [locationManager requestAlwaysAuthorization];
        }
        [locationManager startUpdatingLocation];
    }

    CLLocation *location = [locationManager location];
    CLLocationCoordinate2D coordinate = [location coordinate];
    NSLog(@" location details %f %f ",locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude);
}

Info.plist ファイル内

 <key>NSLocationAlwaysUsageDescription</key>
<string>This will be used to obtain or track your location.</string>
4

3 に答える 3

2

CLLocationManager が実際に場所を取得したときに通知を受けるために CLLocationManagerDelegate を使用していないと思います。Location Manager からすぐに場所を取得しようとしても、更新の開始を要求しただけなので、ほぼ確実に毎回値が返されません。

あなたがする必要があるのは次のとおりです。

1) appdelegate クラスを appdelegate.m で CLLocationManager のデリゲートとして宣言します。

self.locationManager = self;

2) CLLocationManagerDelegate プロトコルを採用するよう appdelegate.h ファイルに指示します。

@interface AppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate>

3) CLLocationManagerDelegate によって提供される locationManager:didUpdateLocations メソッドを appdelegate.m に実装します。

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { }

4) 実装したメソッドで探している場所を取得します。:)

C スタイルの逆参照演算子を使用しているため、Apple が提供するドキュメントを参照することをお勧めします。Objective-C 言語の初心者であると思われます。

于 2014-11-05T12:57:54.900 に答える
0

設定から権限を確認しましたか?デリゲート メソッドでその場所が配信されることを期待する必要があります。ユーザーが同意した後。そうでなければ、マネージャーがその場で場所を確保できるかどうかわかりません。

于 2014-11-05T12:58:29.517 に答える
0

また、サービスを有効にする必要があります

if([CLLocationManager resolveClassMethod:@selector(locationServicesEnabled)]) {
    [CLLocationManager locationServicesEnabled];
}
于 2014-11-05T13:03:28.090 に答える