获取Windows Phone 8.1上给定CivicAddress的坐标/ Geopoint

时间:2015-01-16 10:28:10

标签: c# navigation geolocation windows-phone-8.1 coordinates

从我看过的地方,我发现如何获得一组特定坐标的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,但我需要知道它的坐标。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

MapLocationFinderResult有一些有用的属性,你应该能够恢复 GeoPoint 就像这样:

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

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

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

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" - 四个结果。它可能还取决于用户的语言。