5

こんにちは友人 gps の精度の問題に関する多くの投稿を見てきましたが、常に機能していません。

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

    NSString  *latstr = [NSString stringWithFormat:@"%f", newLocation.coordinate.latitude];
    NSString  *longstring=[NSStringstringWithFormat:@"%f",newLocation.coordinate.longitude];

     if (abs(howRecent)>5.0)
     {
         [self.locationManager startUpdatingLocation];
         return;
      }
    if(abs(newLocation.horizontalAccuracy)<0.0f)
    {
        [self.locationManager startUpdatingLocation];
        return;
    }
    if(newLocation.horizontalAccuracy>65.0f)
    {
        [self.locationManager startUpdatingLocation];
        return;
    }
    self.latstring = [latstr copy];
    self.longstr = [longstring copy];

    if((updateLocationFirst||loadFirstView))
    {    
        [[NSUserDefaults standardUserDefaults]setObject:latstring forKey:@"Latitude"];
        [[NSUserDefaults standardUserDefaults]setObject:longstr forKey:@"Longitude"];
        [self displayParticularDaySpecial];
        loadFirstView=FALSE;
        updateLocationFirst=FALSE;
        [self.locationManager stopUpdatingLocation];
    }
}

ここでの問題は、精度の値を減らしている場合、一部のアドレスに関して緯度と経度をGoogle APIに送信しているため、読み込みに時間がかかり、目的地に関して目的地に到達したときにこの値に問題があることです0.6マイルの差。

4

2 に答える 2

2

Location Awareness Programming Guideを参照してください。このガイドには、現在地を特定するための優れたプログラミング例が記載されています。

そのドキュメントのデモでわかるように、標準のロケーション マネージャーを起動するときに、通常、必要な精度を指定します。また、ロケーション マネージャーを開始すると、再度開始する必要はありません (コード サンプルで実行しているように見えます)。このdidUpdateLocationsメソッドは、精度を上げながら何度も呼び出されますが、すべて単独で行われます。ロケーション マネージャーを再度起動する必要はありません。オフにするまで継続します。定義上、 に参加している場合は、didUpdateLocations既にオンになっていることを意味します。

また、古いものを使用していることにも気付きましたdidUpdateToLocation。iOS 6 用にプログラミングしている場合は、そのメソッドdidUpdateLocationsの現在のバージョンであるを使用する必要があります。CLLocationManagerDelegate

最後に、現在地を取得するのに時間がかかるとのことです。それは非常に可能です。実際、特定の地域では、非常に近づくことはありません (または、まったく近づくことはありません)。あなたのアプリは、正確な位置情報を取得するには時間がかかると想定する必要があります。実際に正確な位置情報を取得できない場合は、適切に処理する必要があります (可能性は非常に高い)。

于 2012-11-26T22:46:31.673 に答える
1

CLLocationManager で desiredLocationAccuracy を設定しましたか? デフォルトでは、範囲はやや広いです。

非常に正確な値を取得するには、しばらく時間がかかります。

于 2012-11-26T22:46:08.773 に答える