我使用BM REST地理编码服务来获取确定地址的Lat / Lng值。但是,由于某种原因,API有时返回不正确的值。例如,让我们来这个地址:1310 Prairie St Houston Texas Texas。
如果我将此地址放在https://www.bing.com/maps中,则显示正确的图钉和此lat / lng:29.758762,-95.359230。
如果我使用http://dev.virtualearth.net/REST/v1/Locations?addressLine=1310%20Prairie%20St%20Houston%20Texas%20United%20States&o=json&jsonp=PointCallback&key=MYKEY调用REST api,则API会返回一个完全不正确的值,非常非常远离正确的坐标。
39.443256378173828 -98.95733642578125
如果我尝试使用相同的地址,但使用Google地理编码API:https://maps.googleapis.com/maps/api/geocode/xml?address=1310+Prairie+St+Houston+Texas+United+States&key=MYKEY,则返回的值是正确的。
我在这里做错了什么想法?
答案 0 :(得分:1)
addressLine值用于地址的街道地址部分,而不是完整地址。如果要将完整地址作为单个字符串传递,则必须使用查询参数。这样做的原因是各个地址参数将被用作地理编码器,其中查询参数被解析为其各个部分。以下是查询的修改版本:
您还可以在此处找到相关文档:http://msdn.microsoft.com/en-us/library/ff701711.aspx
此外,只需要了解最佳做法,您应该在地址中使用逗号,如下所示,根据美国邮政服务的正确格式,将地址格式化为单个字符串。 " 1310 Prairie St,休斯顿,德克萨斯州,美国"。
我还建议您在使用REST服务时查看有关最佳做法的博客文章:http://blogs.bing.com/maps/2013/02/14/bing-maps-rest-service-tips-tricks/