在 Windows Phone 上为给定的 CivicAddress 获取 Coordinates/Geopoint 8.1
Get Coordinates/Geopoint for given CivicAddress on 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 像这样:
Geopoint point = result.Locations.FirstOrDefault().Point;
这是您问题中的代码。但是,如果您想根据名称查找内容,则可以使用 MapLocationFinder.FindLocationsAsync:
MapLocationFinderResult result = await MapLocationFinder.FindLocationsAsync("Hospital", myGeopoint, maxResults);
Geopoint point = result.Locations.FirstOrDefault().Point;
GeoPoint 在这个方法中用作辅助 - 区域中可能有很多 'Hospitals' 并且该方法应该 return 最近的一个。
编辑 - 更多信息:
如果您不想提供任何起始 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"
- 四个结果。它可能还取决于用户的语言。
从我看过的所有地方,我找到了如何获得一组特定坐标的 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 像这样:
Geopoint point = result.Locations.FirstOrDefault().Point;
这是您问题中的代码。但是,如果您想根据名称查找内容,则可以使用 MapLocationFinder.FindLocationsAsync:
MapLocationFinderResult result = await MapLocationFinder.FindLocationsAsync("Hospital", myGeopoint, maxResults);
Geopoint point = result.Locations.FirstOrDefault().Point;
GeoPoint 在这个方法中用作辅助 - 区域中可能有很多 'Hospitals' 并且该方法应该 return 最近的一个。
编辑 - 更多信息:
如果您不想提供任何起始 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"
- 四个结果。它可能还取决于用户的语言。