首页 文章

Google Map 反向地理编码不会返回正确/准确的地址

提问于
浏览
2

所以我有这个具体的地址: Rijtakker 22, Meijel, Netherlands 这只是谷歌 Map 所知的普通地址,如 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)应用程序中,我显示了've made a web user control where the user types in an address in a Google Maps-esque field, it features suggestions, does autocompleting, et cetera. All pretty standard and based on default Google Maps API behavior / documentation code samples, it' . 当用户选择地址时, Map 上会出现一个或多个标记对象 . 如果只有一个标记适用,则该标记的位置(lat,lng)将写入隐藏字段,如果可以应用多个标记,则单击的标记的位置(lat,lng)将写入相同的隐藏字段 . 在PostBack上,对反向地理编码URL进行WebRequest以检索所有地址信息 . 再次,所有相当标准 . 如果是上述地址,则XML中返回的lat和lng值为 51.34824645.8879746999999725

第一个奇怪的事情是,当我使用地理编码URL将地址转换为纬度和经度时,我的结果与谷歌 Map 用户控件中的标记不同 . 链接 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, Netherlands . 而不是实际正确的地址 . 我是否使用反向地理编码网址( maps.googleapis.com/maps/api/geocode/xml?latlng=51.3482464,5.8879746999999725maps.googleapis.com/maps/api/geocode/xml?latlng=51.3482464,5.8879747 )或我使用Google Maps API文档中的 Map 示例( developers.google.com/maps/documentation/javascript/examples/geocoding-reverse

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

1 回答

  • 1

    这是 RANGE_INTERPOLATED 结果的正常行为

    请参阅结果 geometry.location.type ,请参阅Developer's Guide了解其值的含义 . 简而言之,Google Map 在 Rijtakker, Meijel 中没有建筑物/房子 22 ,但它确实有一个地址范围( 2-40 ),并且能够插入22通常的位置 .

    地理编码Rijtakker 2, MeijelRijtakker 40, Meijel,结果在街道的起点和终点 .

    相反,51.348165,5.887406返回 ROOFTOP 结果 .

    您也可以通过反向地理编码获得 RANGE_INTERPOLATED 结果,具有精确地址而不是地址范围,并且如果您的latlng更接近地址范围而不是实际建筑物,则精确地址可以地理编码为 RANGE_INTERPOLATEDROOFTOP 结果 .

    示例:51.347234,5.886687返回"Startebosweg 4, 5768 Meijel",然后返回geocodes as a ROOFTOP result,并且它的位置51.348299,5.886218地理编码为相同的 ROOFTOP 结果 . 本段中2个latlng之间的差距可能是由于底图数据中的毛刺 .

相关问题