【发布时间】:2016-12-17 21:10:48
【问题描述】:
所以我有这个具体地址:Rijtakker 22, Meijel, Netherlands
这只是一个谷歌地图已知的普通地址,如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
第一个奇怪的事情是,当我使用地理编码 URL 将地址转换为纬度和经度时,我得到的结果与我的谷歌地图用户控件中的标记不同。链接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, 荷兰。而不是实际正确的地址。无论我使用反向地理编码 URL(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)
我做错了什么? (反向)地理编码过程是否存在一些限制,不是每个地址都可以准确转换?
【问题讨论】:
-
得到了另一个奇怪的地址:Zilleveld 7, Neeritter, Netherlands。该地址在 Google 地图中是已知的,但转到 maps.googleapis.com/maps/api/geocode/… 会返回路线而不是街道地址。难道API中的很多地址还是未知数?
-
这可能是partial_matches partial_match 的情况表明地理编码器没有返回原始请求的完全匹配,尽管它能够匹配请求的地址的一部分。您可能希望检查拼写错误和/或不完整地址的原始请求。这个thread也可能和你的困境类似。
-
拼写正确;在相关的用户控制中,还使用了“建议”(Google API)。
标签: javascript asp.net google-maps geocoding reverse-geocoding