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