下面的代码是从一个论坛中获得的,我正在尝试获取客户端计算机(用户)的纬度和经度。
但是,这给了我一个未知的位置。
我是否需要对此进行添加或更改。

public string GetUserLocation()
{
    string coords = "";
    GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
    watcher.Start();
    GeoCoordinate coord = watcher.Position.Location;
    if (!watcher.Position.Location.IsUnknown)
    {
        double lat = coord.Latitude;
        double longi = coord.Longitude;
        coords = lat + "," + longi;
    }
    else
    {
        return coords="Unknown latitude and longitude.";
    }
    return coords;
}

最佳答案

您是否尝试过watcher.TryStart来查看观察者是否已正确初始化?

bool started = watcher.TryStart(false, TimeSpan.FromMilliseconds(2000));
if (!started)
{
   Console.WriteLine("GeoCoordinateWatcher timed out on start.");
}


还要检查GeoCoordinateWatcher的状态和权限


  可以检查Status属性以确定数据是否可用。
  如果有数据,您可以一次从
  位置属性,或通过处理接收连续的位置更新
  PositionChanged事件。
  
  权限,状态和位置属性支持
  INotifyPropertyChanged,以便应用程序可以将数据绑定到这些
  属性。


这是检查权限的方法:

if (watcher.Permission == GeoPositionPermission.Granted)
{
   // you have permission...
}


然后您可以See here检查状态。

关于c# - 要标记的GeoCoordinateWatcher纬度和经度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50520080/

10-11 23:31