谷歌地图:自动建议地址问题

Posted

技术标签:

【中文标题】谷歌地图:自动建议地址问题【英文标题】:Google Map : Auto suggested address issue 【发布时间】:2016-10-04 06:03:22 【问题描述】:

我正在使用“谷歌方向矩阵 api”在两个地址点(包括航路点)之间生成方向路线。要从用户那里获取地址输入,我使用的是谷歌的Place Autocomplete。

 var options = 
            componentRestrictions: country: 'UK'
;
var fromText = document.getElementById('start');
var fromAuto = new google.maps.places.Autocomplete(fromText,options);

问题:仅在某些地址发生这种情况

当用户开始像 terminal 一样输入并从 google 建议地址 “Terminal 2, Hounslow, United Kingdom”中选择地址时

假设这是源地址,另一个地址是“伦敦,英国”。填写这些地址后,当我点击“生成地图”按钮时。弹出错误“方向请求因 NOT_FOUND 而失败”

但是,如果我手动将地址“英国豪恩斯洛 2 号航站楼”更改为 “英国豪恩斯洛 2 号航站楼”(将数值“2”更改为字母“2”)。它工作正常。

我不知道为什么会这样?而“Terminal 2, Hounslow, United Kingdom”是 Google 自动推荐的。

任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

当您使用自动完成输入时,我可以建议在距离矩阵请求中使用地点 ID 而不是文本。

当用户选择一个地点时,您可以存储相应的地点ID,并在以后的距离矩阵计算中使用它。

例如

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Terminal%202%2C%20Hounslow%2C%20United%20Kingdom&components=country%3AGB&key=YOUR_API_KEY

将返回地点 ID ChIJu8J5RChydkgROPKSCZojxCg

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=London%2C%20UK&key=YOUR_API_KEY

将返回地点 ID ChIJdd4hrwug2EcRmSrV3Vo6llI

现在对地点 ID 执行距离矩阵请求:

https://maps.googleapis.com/maps/api/distancematrix/json?origins=place_id%3AChIJu8J5RChydkgROPKSCZojxCg&destinations=place_id%3AChIJdd4hrwug2EcRmSrV3Vo6llI&key=YOUR_API_KEY

回复是:


    "destination_addresses":[
       "London, UK"
     ],
     "origin_addresses":[
         "London Heathrow Terminal 2, Compass Centre, Nelson Road, Longford, Hounslow TW6 2GW, UK"
     ],
     "rows":[
         
             "elements":[
                 
                     "distance":
                         "text":"28.7 km",
                         "value":28661
                     ,
                     "duration":
                         "text":"49 mins",
                         "value":2940
                     ,
                     "status":"OK"
                  
              ]
          
       ],
       "status":"OK"
   

您可以在 Maps javascript API 中执行类似的操作。请看一下这个使用带有地点 ID 的路线服务计算路线的示例:

http://jsbin.com/xuyisem/1/edit?html,output

您可以轻松地将这种方法应用于距离矩阵。

希望对你有帮助!

【讨论】:

以上是关于谷歌地图:自动建议地址问题的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图自动完成:只输出地址,没有国家和城市

使用 jQuery Mobile 自动完成谷歌地图

Angular 谷歌地图 (AGM) 自动完成

php 谷歌地址自动填写重力表单列表字段中的地图

谷歌地图返回两条不同的路线

带有多个标记的谷歌地图自动中心