我使用“谷歌方向矩阵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号航站楼,英国豪恩斯洛”则由谷歌自动推荐。
任何帮助将不胜感激
答案 0 :(得分:2)
当您使用自动完成输入时,我可以建议在距离矩阵请求中使用位置ID而不是文本。
当用户选择一个地点时,您可以存储相应的地点ID,稍后在距离矩阵计算中使用它。
E.g。
将返回地址ID ChIJu8J5RChydkgROPKSCZojxCg
https://maps.googleapis.com/maps/api/place/autocomplete/json?input=London%2C%20UK&key=YOUR_API_KEY
将返回地点ID ChIJdd4hrwug2EcRmSrV3Vo6llI
现在执行地点ID的距离矩阵请求:
回复是:
{
"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
您可以轻松地将此方法应用于距离矩阵。
希望它有所帮助!