0

C# を使用して Windows 8.1 ストア アプリを開発しましたが、ユーザーの現在の場所を検出したいと考えています。Wi-Fi に接続しているときは完璧な位置情報を取得できますが、3G/4G ネットワークに接続しているときは、現在地がまったく取得されないか、近くの場所が表示されることがあります。現在の場所を検出するために次のコードを使用しています

geolocator = new Geolocator();
geolocator.DesiredAccuracy = PositionAccuracy.High;
geolocator.DesiredAccuracyInMeters = 1000;
geolocator.MovementThreshold = 100;

//geolocator.ReportInterval = 500;
try
{
    Geoposition mygeoPosition = await geolocator.GetGeopositionAsync();
}
catch(UnauthorizedAccessException ex)
{
    UserMessageUtil.ShowMessage("Location is disabled in Settings");
    await Launcher.LaunchUriAsync(new Uri("ms-settings-location:"));
}
catch(Exception ex)
{
    UserMessageUtil.ShowMessage("We are sorry, location services are unavailable.");
}
geolocator.PositionChanged += geolocator_PositionChanged;

誰かが提案できますか、私は何か間違ったことをしていますか? 3G/4G ネットワークで現在地を確認できる他のアプリはありますか?

4

1 に答える 1

0

位置の計算に使用される方法によって位置精度が異なるため、これは予想されることです。以下は、最も一般的な消費者向けデバイスで使用されている位置情報の精度です (より正確な商用デバイスがありますが、ほとんどの携帯電話では使用されていません)。

  • GPS: 5 メートル - 15 メートル
  • WI-FI 三角測量: 10 メートル - 350 メートル
  • 携帯電話塔 三角測量: 40 メートル - 5 キロメートル
  • IP アドレスのジオコーディング: プライベート ネットワークまたはモバイル ネットワークを使用していない場合、50 キロメートル以内。

ご覧のとおり、現在地の検出に 3G/4G を使用している場合、場合によっては最大 5KM ずれることがあります。

于 2016-08-11T15:25:58.467 に答える