谷歌地图:自动建议地址问题
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
您可以轻松地将这种方法应用于距离矩阵。
希望对你有帮助!
【讨论】:
以上是关于谷歌地图:自动建议地址问题的主要内容,如果未能解决你的问题,请参考以下文章