所以我有这个具体地址: 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
)
我做错了什么?在(反向)地理编码过程中是否存在一些限制,其中并非每个地址都能准确转换?
答案 0 :(得分:1)
这是RANGE_INTERPOLATED
查看结果&#39; geometry.location.type
,请参阅Developer's Guide了解其值的含义。简而言之,谷歌地图在 Rijtakker,Meijel 中没有建筑/房屋 22 ,但它确实有一系列地址( 2-40 )并且能够插入22通常的位置。
地理编码Rijtakker 2, Meijel和Rijtakker 40, Meijel,结果在街道的开头和结尾。
相反,51.348165,5.887406会返回ROOFTOP
结果。
您还可以通过反向地理编码获得RANGE_INTERPOLATED
结果,其中包含精确地址而非地址范围,并且该精确地址可能会将地理编码为RANGE_INTERPOLATED
或ROOFTOP
结果,如果你的latlng更接近地址范围而不是实际建筑。
示例:51.347234,5.886687返回&#34; Startebosweg 4,5768 Meijel&#34;,然后geocodes as a ROOFTOP
result,以及它的位置51.348299,5.886218地理编码到同一个{{ 1}}结果。本段中2个latlngs之间的差距可能是由于底图数据出现故障。