GeoCoordinateWatcher标签的纬度和经度

时间:2018-05-25 00:59:14

标签: c# asp.net

我从其中一个论坛得到的代码,我试图获取客户端计算机(用户)的经纬度。
但它让我回到了一个不为人知的位置 我是否需要添加或更改此内容。

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;
}

1 个答案:

答案 0 :(得分:1)

您是否尝试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查看状态。