Google 地图反向地理编码没有 return correct/accurate 地址
Google Maps reverse geocode doesn't return correct/accurate address
所以我有这个具体地址:Rijtakker 22, Meijel, Netherlands
这只是 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) 应用程序中,我制作了一个网络用户控件,用户可以在 Google 地图式字段中输入地址,它具有建议功能,可以自动完成等等。所有非常标准并且基于默认 Google 地图 API 行为/文档代码示例,显示 in this image。当用户选择一个地址时,一个或多个标记对象会出现在地图上。如果只有一个标记适用,则该标记的位置 (lat, lng) 将写入隐藏字段,如果多个标记适用,则被单击的标记的位置 (lat, lng) 将写入同一隐藏字段。在 PostBack 上,向反向地理编码 URL 发出 WebRequest 以检索所有地址信息。再一次,一切都很标准。对于上述地址,XML 中的纬度和经度值 return 为 51.3482464 和 5.8879746999999725
第一件奇怪的事情是,当我使用地理编码 URL 将地址转换为纬度和经度时,我得到的结果与 Google 地图用户控件中的标记不同。 link maps.googleapis.com/maps/api/geocode/xml?address=Rijtakker%2022,%20Meijel,%20Netherlands
returns
<location>
<lat>51.3482464</lat>
<lng>5.8879747</lng>
</location>
无论哪种方式,当对经度和纬度值进行反向地理编码时 return 一个地址范围,或者在 Google API 术语中 路线 ,而不是特定的 street_address:Rijtakker 2-40, 5768 Meijel, Netherlands。而不是实际正确的地址。我是使用反向地理编码 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 地图 API 文档中的地图示例 (developers.google.com/maps/documentation/javascript/examples/geocoding-reverse
)
我做错了什么?在(反向)地理编码过程中是否存在某些限制,即并非每个地址都可以准确转换?
这是 RANGE_INTERPOLATED
结果的正常行为
查看结果 geometry.location.type
,查看 Developer's Guide 了解其值的含义。简而言之,Google 地图在 Rijtakker、Meijel 中没有 building/house 22,但它确实有范围地址 (2-40) 并且能够在 22 通常所在的位置进行插值。
地理编码 Rijtakker 2, Meijel and Rijtakker 40, Meijel,结果位于街道的起点和终点。
相比之下,51.348165,5.887406 returns 一个 ROOFTOP
结果。
您还可能通过反向地理编码获得 RANGE_INTERPOLATED
结果,其中包含精确地址而不是地址范围,并且该精确地址可能会作为 RANGE_INTERPOLATED
或 ROOFTOP
结果进行地理编码,如果您的 latlng 比实际建筑物更接近地址范围。
示例:51.347234,5.886687 returns "Startebosweg 4, 5768 Meijel", which then geocodes as a ROOFTOP
result, and it's location 51.348299,5.886218 地理编码为相同的 ROOFTOP
结果。本段中 2 个经纬度之间的差距可能是由于底图数据中的故障造成的。
所以我有这个具体地址:Rijtakker 22, Meijel, Netherlands
这只是 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) 应用程序中,我制作了一个网络用户控件,用户可以在 Google 地图式字段中输入地址,它具有建议功能,可以自动完成等等。所有非常标准并且基于默认 Google 地图 API 行为/文档代码示例,显示 in this image。当用户选择一个地址时,一个或多个标记对象会出现在地图上。如果只有一个标记适用,则该标记的位置 (lat, lng) 将写入隐藏字段,如果多个标记适用,则被单击的标记的位置 (lat, lng) 将写入同一隐藏字段。在 PostBack 上,向反向地理编码 URL 发出 WebRequest 以检索所有地址信息。再一次,一切都很标准。对于上述地址,XML 中的纬度和经度值 return 为 51.3482464 和 5.8879746999999725
第一件奇怪的事情是,当我使用地理编码 URL 将地址转换为纬度和经度时,我得到的结果与 Google 地图用户控件中的标记不同。 link maps.googleapis.com/maps/api/geocode/xml?address=Rijtakker%2022,%20Meijel,%20Netherlands
returns
<location>
<lat>51.3482464</lat>
<lng>5.8879747</lng>
</location>
无论哪种方式,当对经度和纬度值进行反向地理编码时 return 一个地址范围,或者在 Google API 术语中 路线 ,而不是特定的 street_address:Rijtakker 2-40, 5768 Meijel, Netherlands。而不是实际正确的地址。我是使用反向地理编码 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 地图 API 文档中的地图示例 (developers.google.com/maps/documentation/javascript/examples/geocoding-reverse
)
我做错了什么?在(反向)地理编码过程中是否存在某些限制,即并非每个地址都可以准确转换?
这是 RANGE_INTERPOLATED
查看结果 geometry.location.type
,查看 Developer's Guide 了解其值的含义。简而言之,Google 地图在 Rijtakker、Meijel 中没有 building/house 22,但它确实有范围地址 (2-40) 并且能够在 22 通常所在的位置进行插值。
地理编码 Rijtakker 2, Meijel and Rijtakker 40, Meijel,结果位于街道的起点和终点。
相比之下,51.348165,5.887406 returns 一个 ROOFTOP
结果。
您还可能通过反向地理编码获得 RANGE_INTERPOLATED
结果,其中包含精确地址而不是地址范围,并且该精确地址可能会作为 RANGE_INTERPOLATED
或 ROOFTOP
结果进行地理编码,如果您的 latlng 比实际建筑物更接近地址范围。
示例:51.347234,5.886687 returns "Startebosweg 4, 5768 Meijel", which then geocodes as a ROOFTOP
result, and it's location 51.348299,5.886218 地理编码为相同的 ROOFTOP
结果。本段中 2 个经纬度之间的差距可能是由于底图数据中的故障造成的。