Google地图:自动建议的地址问题

时间:2016-10-04 06:03:22

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

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

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

问题:这只发生在一些地址

  
    

当用户开始输入终端并从Google建议的地址“Terminal 2,Hounslow,United Kingdom”中选择地址时

  

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

但是,如果我将地址“Terminal 2,Hounslow,United Kingdom”更改为“Terminal Two,Hounslow,United Kingdom”手动(将数字值“2”更改为字母“two”)。它工作正常。

我不知道为什么会这样?而“2号航站楼,英国豪恩斯洛”则由谷歌自动推荐。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

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

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

E.g。

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

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

希望它有所帮助!