0

我使用 C# 开发了一个 Windows 8.1 Store App,我想检测用户的当前位置。当我连接到 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

这是意料之中的,因为定位精度取决于用于计算位置的方法。以下是大多数常见消费设备中使用的定位方法的准确性(有些商业设备更准确,但在大多数手机中没有使用):

  • 全球定位系统:5 米 - 15 米
  • WI-FI三角测量:10米 - 350米
  • 手机塔三角测量:40米-5公里
  • IP 地址地理编码:如果不在专用或移动网络上,则在 50 公里内。

如您所见,当依靠 3G/4G 来检测您的位置时,在某些情况下最多可以偏离 5KM。

于 2016-08-11T15:25:58.467 回答