在 Windows Phone 8.1 上获取给定公民地址的坐标/地理点



从我看过的地方,我找到了如何获取一组特定坐标的CivicAddress,如下所示(感谢@Romasz的回答):

var geolocator = new Geolocator();
geolocator.DesiredAccuracyInMeters = 100;
Geoposition position = await geolocator.GetGeopositionAsync();
// reverse geocoding
BasicGeoposition myLocation = new BasicGeoposition {
     Longitude = position.Coordinate.Longitude,
     Latitude = position.Coordinate.Latitude
};
Geopoint pointToReverseGeocode = new Geopoint(myLocation);
MapLocationFinderResult result = await MapLocationFinder.FindLocationsAtAsync(pointToReverseGeocode);
string country = result.Locations[0].Address.Country;

但是,我有CivicAddress,但我需要知道它的坐标。我该怎么做?

MapLocationFinderResult 有一些有用的属性,您应该能够检索地理点像这样:

Geopoint point = result.Locations.FirstOrDefault().Point;

这是针对您问题中的代码。但是,如果您想根据名称查找某些内容,则可以使用MapLocationFinder.FindLocationsAsync:

MapLocationFinderResult result = await MapLocationFinder.FindLocationsAsync("Hospital", myGeopoint, maxResults);
Geopoint point = result.Locations.FirstOrDefault().Point;

此方法中的 GeoPoint 用作帮助程序 - 区域中可能有许多"医院",该方法应返回最近的医院。


编辑 - 更多信息:

如果不想提供任何起始 GeoPoint,请提供默认的 GeoPoint

MapLocationFinderResult result = await MapLocationFinder.FindLocationsAsync("Lizbona", new Geopoint(new BasicGeoposition()), 5);
var point = result.Locations.ToList();

请记住,结果取决于您在字符串中输入的内容,对于上面的例子,我得到了两个结果 - 一个在葡萄牙,地理定位Lat = 38,72 Long = -9,15,第二个在波兰,地理定位Lat = 52,67 Long = 16,48(波兰城镇的统计)。两者都存在并且都是正确的 - 这只取决于您的输入。另一方面,如果我搜索"Lizbon" - 我只会得到一个结果,如果"Lisbon" - 四个结果。这可能还取决于用户的语言。

相关内容

  • 没有找到相关文章

最新更新