我在WPF DevExpress Map上使用Bing Maps API来返回特定地理位置(经度,纬度)的信息。
我需要的是地址,邮政编码,城市和国家/地区作为查询之外的单独项目。
问题是Bing Maps(通过DevExpress.Xpf.Map.GeocodeRequestResult)以非唯一格式返回地址String
,具体取决于位置(我怀疑国家/地区)。例如,地址String
可能会返回为:
......然后列表继续。
如何从Bing Maps查询中正确地找出地址,邮政编码,城市和国家/地区,而不考虑其返回的表格?
答案 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;
}