Xamarin,Android:为什么我得到错误的坐标?
Xamarin, Android: Why am I getting wrong coordinates?
所以我遇到了这个问题 - 下面的代码是我应用程序中 class 的一部分。
现在,这个 class 给了我关于我所在位置的坐标。总是离我真正应该去的地方只有几百米。为什么会这样?这可能是因为我不要求 "fine" 准确度?
谢谢 :)
public void OnLocationChanged(位置位置)
{
_currentLocation = location;
{
// this is needed for my mocked location
GlobalElapsedRealTime = _currentLocation.ElapsedRealtimeNanos;
GlobalLatitude = _currentLocation.Latitude;
GlobalLongitude = _currentLocation.Longitude;
// Log.Debug("2", "Your Real Location is at " + GlobalLongitude + " // " + GlobalLatitude);
}
}
public void InitializeLocationManager()
{
_locationManager = ctxt.GetSystemService(Context.LocationService) as LocationManager;
if (_locationManager.AllProviders.Contains(LocationManager.NetworkProvider)
&& _locationManager.IsProviderEnabled(LocationManager.NetworkProvider))
{
_locationProvider = LocationManager.NetworkProvider;
Log.Debug("1", "Location Manager has been initialized!");
}
else
{
_locationProvider = String.Empty;
}
}
public void StartLocationUpdates()
{
_locationManager.RequestLocationUpdates(_locationProvider, 0, 0, this);
}
因为您使用的是LocationManager.NetworkProvider
。这会根据手机信号塔和已知的 WiFi 热点猜测您的位置,并不是特别准确。在几百米外听起来是对的。可能有助于确定您所在的城市或郊区,但不能用于更准确的跟踪。
尝试使用 LocationManager.GPSProvider
并确保 ACCESS_FINE_LOCATION
权限已启用。修复可能需要更长的时间,但会更准确。准确度取决于 运行 所在的设备(phone GPS 可能非常好但不完全准确,因为通常根据价格选择芯片),以及您可以获得多少修复 - 高例如,建筑物可能会干扰它。
更多详情:
https://developer.android.com/reference/android/location/LocationManager.html#GPS_PROVIDER
所以我遇到了这个问题 - 下面的代码是我应用程序中 class 的一部分。 现在,这个 class 给了我关于我所在位置的坐标。总是离我真正应该去的地方只有几百米。为什么会这样?这可能是因为我不要求 "fine" 准确度?
谢谢 :)
public void OnLocationChanged(位置位置) {
_currentLocation = location;
{
// this is needed for my mocked location
GlobalElapsedRealTime = _currentLocation.ElapsedRealtimeNanos;
GlobalLatitude = _currentLocation.Latitude;
GlobalLongitude = _currentLocation.Longitude;
// Log.Debug("2", "Your Real Location is at " + GlobalLongitude + " // " + GlobalLatitude);
}
}
public void InitializeLocationManager()
{
_locationManager = ctxt.GetSystemService(Context.LocationService) as LocationManager;
if (_locationManager.AllProviders.Contains(LocationManager.NetworkProvider)
&& _locationManager.IsProviderEnabled(LocationManager.NetworkProvider))
{
_locationProvider = LocationManager.NetworkProvider;
Log.Debug("1", "Location Manager has been initialized!");
}
else
{
_locationProvider = String.Empty;
}
}
public void StartLocationUpdates()
{
_locationManager.RequestLocationUpdates(_locationProvider, 0, 0, this);
}
因为您使用的是LocationManager.NetworkProvider
。这会根据手机信号塔和已知的 WiFi 热点猜测您的位置,并不是特别准确。在几百米外听起来是对的。可能有助于确定您所在的城市或郊区,但不能用于更准确的跟踪。
尝试使用 LocationManager.GPSProvider
并确保 ACCESS_FINE_LOCATION
权限已启用。修复可能需要更长的时间,但会更准确。准确度取决于 运行 所在的设备(phone GPS 可能非常好但不完全准确,因为通常根据价格选择芯片),以及您可以获得多少修复 - 高例如,建筑物可能会干扰它。
更多详情:
https://developer.android.com/reference/android/location/LocationManager.html#GPS_PROVIDER