1

ユーザーの現在の場所を取得し、それを使用して sqlite データベースから結果を取得する iPhone アプリを構築する目的で CLLocation クラスを使用する方法を学習しようとしています。これを行うには、最初に CLLocation クラス、具体的には次のメソッドを使用してユーザーの現在地を取得する必要があります。

(void)locationManager: (CLLocationManager *)manager didUpdateToLocation: (CLLocation *)newLocation fromLocation: (CLLocation *)oldLocation {}

現在、正常にデプロイされたサンプル アプリに表示される座標を取得できます。ただし、更新を 1 つだけ (複数ではなく、これが必要です) 受信し、出力を NSLog コンソールに出力するように、少し変更しようとしました。関連するコードは次のようになります。

- (void) locationManager:(CLLocationManager *)manager 
 didUpdateToLocation:(CLLocation *)newLocation
        fromLocation:(CLLocation *)oldLocation {

numUpdates++;

NSString *lat = [[NSString alloc] initWithFormat:@"%g", newLocation.coordinate.latitude];
latitudeTextField.text = lat;

NSString *lng = [[NSString alloc] initWithFormat:@"%g", newLocation.coordinate.longitude];
longitudeTextField.text = lng;

NSString *acc = [[NSString alloc] initWithFormat:@"%g", newLocation.horizontalAccuracy];
accuracyTextField.text = acc;

if (numUpdates == 1) {

    [lm stopUpdatingLocation];
    NSLog(@"latitude: %i longitude: %i", lat, lng);

}

ただし、座標をコンソールに表示する代わりに (つまり、緯度は 37.3317、経度は -122.031)、次の出力が得られます。残念ながら、コードを実行するたびに異なります。

[Session started at 2010-11-03 01:43:36 -0400.]
2010-11-03 01:43:41.208 GPS[4702:207] latitude: 65138096 longitude: 65023248
Terminating in response to SpringBoard's termination.

[Session started at 2010-11-03 21:38:45 -0400.]
2010-11-03 21:39:37.072 GPS[5880:207] latitude: 65030208 longitude: 65070336
Terminating in response to SpringBoard's termination.

[Session started at 2010-11-03 21:53:12 -0400.]
2010-11-03 21:53:21.824 GPS[5899:207] latitude: 65042624 longitude: 65086352

誰でも私が間違っていることを見て、ユーザーの緯度と経度の位置の値を変数に正しく割り当て、それを NSLog コンソールに 10 進形式で出力する方法を教えてください。フォーマット?

4

2 に答える 2

0

GPSデータが正確でないため、位置が異なります。十分に正確なデータが必要な場合は、newLocation.horizo​​ntalAccuracyに基づいてフィルタリングすることにより、最初の3〜4個の場所を無視してください。

于 2010-11-04T03:48:27.453 に答える
0

%iint値を出力するためのものです。コードでは、lat と lng は NSStrings (オブジェクト) であるため、次を使用します%@

NSLog(@"latitude: %@ longitude: %@", lat, lng);

文字列フォーマット指定子を参照してください。

于 2010-11-04T02:24:02.937 に答える