使用楼号和邮政编码取回确切地址 - UWP - MapService
Getting back the exact address using building number and postcode - UWP - MapService
所以我正在尝试使用 MapService for UWP 中的 MapLocationFinder
class 检索完整地址。
我正在使用函数 FindLocationsAsync
并传入以下内容:
MapLocationFinderResult result = await
MapLocationFinder.FindLocationsAsync(BuildingNumber + ", " + PostCode, null);
其中楼号为 20,邮政编码为 SW11 1BP。出于某种原因,这并没有返回街道名称……Address 变量不包含除伦敦以外的任何内容。我究竟做错了什么?我以为我可以通过邮政编码和街道号码进行完整的地址查找。
请检查文档 Perform geocoding and reverse geocoding . We must specify a maps authentication key before you can use map services. For using map service we also need to enable the location capability。
并且您可以检查MapLocationFinderResult
Status
属性以确保查询成功。
MapService.ServiceToken = "Token";
MapLocationFinderResult result =
await MapLocationFinder.FindLocationsAsync(
BuildingNumber + ", " + PostCode, null);
if (result.Status == MapLocationFinderStatus.Success)
{
var Text = "result = (" +
result.Locations[0].Point.Position.Latitude.ToString() + "," +
result.Locations[0].Point.Position.Longitude.ToString() + result.Locations[0].DisplayName + ")";
}
如果上述地址不包含街道名称,您可以使用上面的纬度经度进行反向地理编码,然后调用FindLocationsAtAsync
方法获取地址。
MapLocationFinderResult result =
await MapLocationFinder.FindLocationsAsync(
BuildingNumber + ", " + PostCode, null);
if (result.Status == MapLocationFinderStatus.Success)
{
var temp = "result = (" +
result.Locations[0].Point.Position.Latitude.ToString() + "," +
result.Locations[0].Point.Position.Longitude.ToString() + result.Locations[0].DisplayName + result.Locations[0].Address.Street + ")";
BasicGeoposition location = new BasicGeoposition();
location.Latitude = result.Locations[0].Point.Position.Latitude;
location.Longitude = result.Locations[0].Point.Position.Longitude;
Geopoint pointToReverseGeocode = new Geopoint(location);
// Reverse geocode the specified geographic location.
MapLocationFinderResult MyResult =
await MapLocationFinder.FindLocationsAtAsync(pointToReverseGeocode);
// If the query returns results, display the name of the town
// contained in the address of the first result.
if (result.Status == MapLocationFinderStatus.Success)
{
var text = "Street = " +
MyResult.Locations[0].Address.Street;
}
}
您搜索的字符串“20, SW11 1BP”不是定义明确的查询字符串。如果您想要精确匹配的地址,则需要提供门牌号和街道,该服务无法仅使用门牌号和 post 代码。您得到的结果是给定模糊字符串的最佳匹配 - 它只找到 post 代码。 lat/long returned 将是 post 代码的中心,可能靠近也可能不靠近街道,因此 lat/long 上的反向地理编码可能不会 return 正确的街道,绝对不会准确到那个楼号。
所以我正在尝试使用 MapService for UWP 中的 MapLocationFinder
class 检索完整地址。
我正在使用函数 FindLocationsAsync
并传入以下内容:
MapLocationFinderResult result = await
MapLocationFinder.FindLocationsAsync(BuildingNumber + ", " + PostCode, null);
其中楼号为 20,邮政编码为 SW11 1BP。出于某种原因,这并没有返回街道名称……Address 变量不包含除伦敦以外的任何内容。我究竟做错了什么?我以为我可以通过邮政编码和街道号码进行完整的地址查找。
请检查文档 Perform geocoding and reverse geocoding . We must specify a maps authentication key before you can use map services. For using map service we also need to enable the location capability。
并且您可以检查MapLocationFinderResult
Status
属性以确保查询成功。
MapService.ServiceToken = "Token";
MapLocationFinderResult result =
await MapLocationFinder.FindLocationsAsync(
BuildingNumber + ", " + PostCode, null);
if (result.Status == MapLocationFinderStatus.Success)
{
var Text = "result = (" +
result.Locations[0].Point.Position.Latitude.ToString() + "," +
result.Locations[0].Point.Position.Longitude.ToString() + result.Locations[0].DisplayName + ")";
}
如果上述地址不包含街道名称,您可以使用上面的纬度经度进行反向地理编码,然后调用FindLocationsAtAsync
方法获取地址。
MapLocationFinderResult result =
await MapLocationFinder.FindLocationsAsync(
BuildingNumber + ", " + PostCode, null);
if (result.Status == MapLocationFinderStatus.Success)
{
var temp = "result = (" +
result.Locations[0].Point.Position.Latitude.ToString() + "," +
result.Locations[0].Point.Position.Longitude.ToString() + result.Locations[0].DisplayName + result.Locations[0].Address.Street + ")";
BasicGeoposition location = new BasicGeoposition();
location.Latitude = result.Locations[0].Point.Position.Latitude;
location.Longitude = result.Locations[0].Point.Position.Longitude;
Geopoint pointToReverseGeocode = new Geopoint(location);
// Reverse geocode the specified geographic location.
MapLocationFinderResult MyResult =
await MapLocationFinder.FindLocationsAtAsync(pointToReverseGeocode);
// If the query returns results, display the name of the town
// contained in the address of the first result.
if (result.Status == MapLocationFinderStatus.Success)
{
var text = "Street = " +
MyResult.Locations[0].Address.Street;
}
}
您搜索的字符串“20, SW11 1BP”不是定义明确的查询字符串。如果您想要精确匹配的地址,则需要提供门牌号和街道,该服务无法仅使用门牌号和 post 代码。您得到的结果是给定模糊字符串的最佳匹配 - 它只找到 post 代码。 lat/long returned 将是 post 代码的中心,可能靠近也可能不靠近街道,因此 lat/long 上的反向地理编码可能不会 return 正确的街道,绝对不会准确到那个楼号。