質問

iOS4.0の前に CoreLocation 高度を正しく報告していましたが、今では常に0フィートとして報告されています。

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    NSString *tLatitude  = [NSString stringWithFormat:@"%3.5f", newLocation.coordinate.latitude]; 
    NSString *tLongitude = [NSString stringWithFormat:@"%3.5f", newLocation.coordinate.longitude];
    /*  the following returns 0 */
    NSString *tAltitude  = [NSString stringWithFormat:@"%i",    newLocation.altitude];

    /* theres more code, but it's not relevant, 
                      and this worked prior to iOS 4.0*/
    [manager stopUpdatingLocation];
}

デバイスやシミュレータで作業していないのですが、他の誰かがこの問題を経験していますか?

役に立ちましたか?

解決

使用している場合 startMonitoringSignificantLocationChanges, 、iOS 4.0を新しい機能であるため、高度の更新は取得されません。この低電力モードは、セルタワーのみを使用してユーザーの位置を把握し、この方法は高度を報告しません。

より一般的には、iPhoneにはあなたの場所を把握する3つの方法があります - セルタワー、Wi-Fi、およびGPS。 GPSが使用されている場合にのみ高度が得られます。だからあなたがあなたを設定したとしても desiredAccuracy ユーザーが屋内である場合、iPhoneがGPS信号を取得できず、セルまたはWi-Fiにフォールバックすることはおそらくない場合、デバイスにGPSを使用するように非常に正確に設定します。その場合、高度は得られません。また、iPod Touchを使用しているユーザーを考慮してください。Wi-Fi経由で場所を取得する機能があるため、高度も報告しません。

他のヒント

試してみることができる2つのこと。まず第一に、ロケーションマネージャーを設定してみてください desiredAccuracykCLLocationAccuracyBest.

それがうまくいかない場合は、削除してみてください [manager stopUpdatingLocation];, 、およびput a NSLog の中に didUpdateToLocation 高度で。時々、高度を表示する前に少し絞り込む必要があります。

から コアロケーションデータ型参照:

CLLocationDistance データ型(高度のデータ型)は double. 。あなたがあなたのために使用しているフォーマッタ stringWithFormat です integer. 。あなたはあなたの高度をanに投げ込む必要があります integer, 、最初に、または使用します double (%f)フォーマッタ。

コアの場所は、常にすぐに高度を報告するとは限りません。私は通常、「成功」デリゲート方法で高度ゼロをチェックします。高度がまだ0の場合、チェックし続けます。そうしないと、cor脱体を回します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top