【问题标题】:Difference results between Geocoding services and search on gMap地理编码服务与 gMap 搜索之间的差异结果
【发布时间】:2013-04-24 12:53:46
【问题描述】:

我想获取此地址的经纬度:Boulevard de la Marne Zone industrielle, COULOMMIERS, 77120, France

我正在将 api 添加到我的页面中:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script>

当我使用 gmaps 时结果很好,但当我想通过 API 检索它时:

 geocoder = new google.maps.Geocoder();
 geocoder.geocode({ 'address': myAdress, 'region': 'FR'}, function (results, status) {...});

它执行以下请求:

https://maps.googleapis.com/maps/api/js/GeocodeService.Search?4sBoulevard%20de%20la%20Marne%20%20Zone%20industrielle%20%20COULOMMIERS%2077120%20&7sUS&9sfr-FR&callback=_xdc_._lsoj9s&token=53058

结果就在巴马科附近……

如果我使用视口边界,它会执行以下请求:

https://maps.googleapis.com/maps/api/js/GeocodeService.Search?4sBoulevard%20de%20la%20Marne%20%20Zone%20industrielle%20%20COULOMMIERS%2077120%20&6m6&1m2&1d40.513799&2d-5.844727000000034&2m2&1d51.727028&2d10.854491999999936&7sUS&9sfr-FR&callback=_xdc_._c84svr&token=29019

它更好(它在法国),但事实并非如此

该查询在网站谷歌地图上运行良好: https://maps.google.fr/maps?q=Boulevard+de+la+Marne++Zone+industrielle,++COULOMMIERS,+77120&hl=fr&ll=48.487486,3.922119&spn=1.541855,4.22699&sll=50.485474,25.620117&sspn=23.748757,67.631836&hq=Boulevard+de+la+Marne++Zone+industrielle,++COULOMMIERS,+77120&radius=15000&t=m&z=9

似乎获得它的唯一方法是执行以下请求: http://maps.googleapis.com/maps/api/geocode/json?address=Boulevard%20de%20la%20Marne%20Zone%20industrielle,%20COULOMMIERS,%2077120&components=country:FR&sensor=false

我不明白为什么我使用视口而不是国家时结果不同(两个结果都在视口的范围内)

【问题讨论】:

  • Google 地图更像是场所服务的实现而非地理编码,因此您可以考虑同时请求场所服务

标签: javascript google-maps google-maps-api-3 google-geocoder


【解决方案1】:

Boulevard de la Marne Zone industrielle, COULOMMIERS, 77120, France 不是地址,而是“地方”。

地理编码器从该输入中找到 Via De La Marne 的位置:

http://www.geocodezip.com/v3_example_geo2.asp?addr1=Boulevard de la Marne Zone industrielle, COULOMMIERS, 77120, France&geocode=1

Found 1 results for Boulevard de la Marne Zone industrielle, COULOMMIERS, 77120, France
[ 0 ]: Av De La Marne, Bamako, Mali (12.6417952, -7.988396299999977)

Places API 的第一个结果看起来更正确:

http://www.geocodezip.com/v3_example_geo2.asp?addr1=Boulevard de la Marne Zone industrielle, COULOMMIERS, 77120, France&place=1

Found 20 results for Boulevard de la Marne Zone industrielle, COULOMMIERS, 77120, France
[ 0 ]: Zone Industrielle, Boulevard de la Marne, Coulommiers, France (48.804329, 3.0923729999999523)
[ 1 ]: Boulevard de la Marne, Coulommiers, France (48.803048, 3.092110000000048)
[ 2 ]: 21 Boulevard de la Marne, Coulommiers, France (48.806634, 3.0937430000000177)
...

【讨论】:

    【解决方案2】:

    这里有两件事在起作用。

    “Boulevard de la Marne Zone industrielle, COULOMMIERS, 77120, France”由于“Zone industrielle”部分,未被地理编码 API 识别为地址。如果您删除该部分,它就可以正常工作:

    Boulevard de la Marne, COULOMMIERS, 77120, France

    此外,我在 Google 地图数据中发现了一个问题(一个罕见的例子),但我认为修复它不会有助于解决上述问题。

    该地点由 Places API 文本搜索找到:

    https://maps.googleapis.com/maps/api/place/textsearch/json?radius=50000&location=0,0&query=Boulevard%20de%20la%20Marne%20Zone%20industrielle,%20COULOMMIERS,%2077120&key=YOUR_API_KEY

    当通过 place_id 查询 Places Details 时,您会注意到 address_components 中没有 route 组件。这表明该地点与道路没有正确关联。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多