【发布时间】:2018-05-27 21:43:18
【问题描述】:
我需要根据城市和省名获取具有代表性的加拿大邮政编码。我最初的方法是使用 Google 的地理编码 API 将城市、省份转换为 [lat,lng] 反向地理编码以获取匹配的地址,并从中提取邮政编码。城市和省份来自使用谷歌地图自动完成的表格,所以我知道它们(至少几乎)总是有效的。在某些测试中,这运行良好,但我很快在我们的实际数据中遇到了一个失败的案例:马尼托巴省的雪湖。
https://maps.googleapis.com/maps/api/geocode/json?address=Snow+Lake%2C+Manitoba&key=MYKEY
在几何部分,我得到:
location
lat 54.87856679999999
lng -100.0220321
location_type "APPROXIMATE"
但每当我查找该位置(包括不同级别的精确度)时,我都会得到不包括邮政编码的结果。
https://maps.googleapis.com/maps/api/geocode/json?latlng=54.8785668,-100.0220321&key=MYKEY
我也尝试过使用从各种事物返回的place_id,但没有运气。奇怪的是,如果我在常规的谷歌地图网站上搜索马尼托巴省的雪湖,它会精确定位并告诉我邮政编码是 R0B 1M0。那么为什么他们的网站提供了很好的信息,而不是 API 呢?即使我将第二个 URL 中的位置替换为 Google 地图在搜索后的 URL 中的位置 (54.8808471,-100.0274579),我仍然无法取回邮政编码,如果我使用的地址它给出了那个位置(531 Lakeshore Drive)。
通过反复试验(查看 Google 地图中的一些街道名称),我发现搜索 117 Balsam St. 会同时提供邮政编码和位置,我可以通过反向地理编码来获取邮政编码。但是我的传入数据没有街道名称或编号,只有城市和省,所以这不是解决方案。这个地址确实为我提供了 location_type 的 ROOFTOP,而不是我为其他一些人得到的 APPROXIMATE 或 RANGE_INTERPOLATED。
有人知道这里的交易是什么吗?有没有一种可靠的方法可以用来从这个 API 中获取我需要的东西,或者它只是一个偶然的命题?
【问题讨论】:
标签: google-maps google-geocoding-api