Bing Maps API:将信息返回为“地址,城市,国家,邮编”

时间:2014-08-21 07:41:44

标签: wpf devexpress bing-maps

我在WPF DevExpress Map上使用Bing Maps API来返回特定地理位置(经度,纬度)的信息。

我需要的是地址,邮政编码,城市和国家/地区作为查询之外的单独项目。

问题是Bing Maps(通过DevExpress.Xpf.Map.GeocodeRequestResult)以非唯一格式返回地址String,具体取决于位置(我怀疑国家/地区)。例如,地址String可能会返回为:

  1. 地址,城市,国家,邮编(例如在俄罗斯)
  2. 地址,Zip City(德国)
  3. 地址,城市,邮编(美国)
  4. ......然后列表继续。

    如何从Bing Maps查询中正确地找出地址,邮政编码,城市和国家/地区,而不考虑其返回的表格?

1 个答案:

答案 0 :(得分:0)

我不太熟悉DevExpress中的地图,但我知道你可以从Bing Maps获得一个结构化的地址对象。如果您使用Bing Maps REST服务,则可以对坐标进行反向地理编码,使其返回结构化地址。由于您在WPF中工作,您可以在此处找到有关如何在.NET中使用Bing Maps REST服务的文档: http://msdn.microsoft.com/en-us/library/jj819168.aspx

http://msdn.microsoft.com/en-us/library/jj870778.aspx

以下是GetResponse方法的更新版本:

private async Task<Response> GetResponse(Uri uri)
{
    System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
    var response = await client.GetAsync(uri);

    using (var stream = await response.Content.ReadAsStreamAsync())
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Response));
        return ser.ReadObject(stream) as Response;
    }
}

在项目中拥有DataContracts并调用REST服务的方法之后,只需将REST请求放在一起即可。有关如何创建反向地理编码器请求的文档,请访问:http://msdn.microsoft.com/en-us/library/ff701710.aspx

一旦您收到服务的回复,您就可以获得如下地址:

Response r = await GetResponse(new Uri("YOUR REST service request"));

if (r != null &&
    r.ResourceSets != null &&
    r.ResourceSets.Length > 0 &&
    r.ResourceSets[0].Resources != null &&
    r.ResourceSets[0].Resources.Length > 0)
{
    var location = r.ResourceSets[0].Resources[0] as BingMapsRESTService.Common.JSON.Location;

    var address = location.Address;
}