Google地图反向地理编码无法返回正确/准确的地址

时间:2016-08-11 08:28:24

标签: javascript asp.net google-maps geocoding reverse-geocoding

所以我有这个具体地址: Rijtakker 22,Meijel,荷兰 这只是Google地图所知的普通地址,如www.google.nl/maps/place/Rijtakker+22,+5768+Meijel/@51.3482599,5.8857767,17z/data=!3m1!4b1!4m5!3m4!1s0x47c7379f181928e7:0x2a2900b2927e2ebc!8m2!3d51.3482566!4d5.8879654?hl=nl所示。

在我的一个(ASP.NET)应用程序中,我创建了一个Web用户控件,用户在Google Maps-esque字段中键入地址,它提供了建议,自动完成等功能。所有标准版均基于默认的Google Maps API行为/文档代码示例,显示为in this image。当用户选择地址时,地图上会出现一个或多个标记对象。如果只有一个标记适用,则该标记的位置(lat,lng)将写入隐藏字段,如果有多个标记适用,则单击标记的位置(lat,lng)将写入相同的隐藏字段领域。在PostBack上,对反向地理编码URL进行WebRequest以检索所有地址信息。再次,所有标准。如果是上述地址,则XML中返回的lat和lng值为 51.3482464 5.8879746999999725

首先奇怪的是,当我使用地理编码网址将地址转换为纬度和经度时,我得到的结果与Google地图用户控件中的标记不同。链接maps.googleapis.com/maps/api/geocode/xml?address=Rijtakker%2022,%20Meijel,%20Netherlands返回

<location>
    <lat>51.3482464</lat>
    <lng>5.8879747</lng>
</location>

无论哪种方式,当反向地理编码时,经度和纬度值都会返回地址范围,或者在Google API术语中返回路径,而不是特定的 street_address Rijtakker 2-40,5768 Meijel,荷兰。而不是实际正确的地址。我是使用反向地理编码网址(maps.googleapis.com/maps/api/geocode/xml?latlng=51.3482464,5.8879746999999725还是maps.googleapis.com/maps/api/geocode/xml?latlng=51.3482464,5.8879747)还是使用Google Maps API文档中的地图示例(developers.google.com/maps/documentation/javascript/examples/geocoding-reverse

我做错了什么?在(反向)地理编码过程中是否存在一些限制,其中并非每个地址都能准确转换?

1 个答案:

答案 0 :(得分:1)

这是RANGE_INTERPOLATED

结果的正常行为

查看结果&#39; geometry.location.type,请参阅Developer's Guide了解其值的含义。简而言之,谷歌地图在 Rijtakker,Meijel 中没有建筑/房屋 22 ,但它确实有一系列地址( 2-40 )并且能够插入22通常的位置。

地理编码Rijtakker 2, MeijelRijtakker 40, Meijel,结果在街道的开头和结尾。

相反,51.348165,5.887406会返回ROOFTOP结果。

您还可以通过反向地理编码获得RANGE_INTERPOLATED结果,其中包含精确地址而非地址范围,并且该精确地址可能会将地理编码为RANGE_INTERPOLATEDROOFTOP结果,如果你的latlng更接近地址范围而不是实际建筑。

示例:51.347234,5.886687返回&#34; Startebosweg 4,5768 Meijel&#34;,然后geocodes as a ROOFTOP result,以及它的位置51.348299,5.886218地理编码到同一个{{ 1}}结果。本段中2个latlngs之间的差距可能是由于底图数据出现故障。