Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 谷歌地图方向返回原点_Google Maps_Google Directions Api - Fatal编程技术网

Google maps 谷歌地图方向返回原点

Google maps 谷歌地图方向返回原点,google-maps,google-directions-api,Google Maps,Google Directions Api,我正在尝试获取起点->航路点->目的地的路线 除了一个特定的要求外,一切都很好: 起源(A点):帕纳马,卡勒·加斯帕尔·埃尔南德斯,贝尼多博士 航路点(B点):BAC Credomatic | Sucursal Plaza纽约,卡莱50号,巴拿马 目的地(A点):帕纳马,卡勒·加斯帕尔·埃尔南德斯,贝尼多博士 因此,如果我从A->B-发出请求,一切正常,使B->A也正常A->A也可以工作。一旦我为那个特定的(B)地址做了一个航路点,谷歌API就会返回零结果 检查URL:https://maps.

我正在尝试获取
起点->航路点->目的地的路线

除了一个特定的要求外,一切都很好:

起源(A点):帕纳马,卡勒·加斯帕尔·埃尔南德斯,贝尼多博士
航路点(B点):BAC Credomatic | Sucursal Plaza纽约,卡莱50号,巴拿马
目的地(A点):帕纳马,卡勒·加斯帕尔·埃尔南德斯,贝尼多博士

因此,如果我从
A->B
-发出请求,一切正常,使
B->A
也正常<代码>A->A
也可以工作。一旦我为那个特定的(B)地址做了一个航路点,谷歌API就会返回零结果

检查URL:
https://maps.googleapis.com/maps/api/directions/json?key=&mode=driving&origin=PH+贝尼多%2C+Calle+Gaspar+O.+Hern%C3%A1ndez%2C+Panam%C3%A1&目的地=PH+Benidor%2C+Calle+Gaspar+O.+Hern%C3%A1ndez%2C+Panam%C3%A1&备选方案=真值和单位=公制和航路点=BAC+Credomatic+|+Sucursal+广场+纽约%2C+Calle+50%2C+Panam%C3%A1

更新
地址取自GoogleAutoCompleteAPI字段,所以我假设它们的格式正确。从
A->B
到相同地址的路由运行良好
https://maps.googleapis.com/maps/api/directions/json?key=API_KEY&alternatives=true&units=metric&mode=driving&origin=PH+Benidor%2C+Calle+Gaspar+O.+Hern%C3%A1ndez%2C+Panam%C3%A1&目的地=BAC+Credomatic+Sucursal+Plaza+New+York%2C+Calle+50%2C+Panam%C3%A1

回应


因此,如果地址位于
航路点
参数中,我假设地址有问题。

我检查了方向API请求,其中包含您问题中的起点、目的地和航路点

https://maps.googleapis.com/maps/api/directions/json?origin=PH%20Benidor%2C%20Calle%20Gaspar%20O.%20Hern%C3%A1ndez%2C%20Panam%C3%A1&destination=PH%20Benidor%2C%20Calle%20Gaspar%20O.%20Hern%C3%A1ndez%2C%20Panam%C3%A1&mode=driving&waypoints=BAC%20Credomatic%7CSucursal%20Plaza%20New%20York%2C%20Calle%2050%2C%20Panam%C3%A1&key=MY_API_KEY

响应包含以下地理编码航路点:

"geocoded_waypoints":[
{
  "geocoder_status":"OK",
  "place_id":"ChIJxX3EIvqorI8RRhwI3jYajZc",
  "types":[
    "premise"
  ]
},
{
  "geocoder_status":"OK",
  "place_id":"ChIJZ1RH5IDoaY8RcqGCRNAAPQw",
  "types":[
    "establishment","finance","point_of_interest"
  ]
},
{
  "geocoder_status":"OK",
  "place_id":"ChIJf1seg-OorI8R_66YzaG7hko",
  "types":[
    "bank","establishment","finance","food","point_of_interest","restaurant"
  ]
},
{
  "geocoder_status":"OK",
  "place_id":"ChIJxX3EIvqorI8RRhwI3jYajZc",
  "types":[
    "premise"
  ]
}]
让我们看一下地点ID为ChIJZ1RH5IDoaY8RcqGCRNAAPQw的航路点。它对应于您请求中的“BAC Credomatic”。如果您使用地理编码工具检查地点ID,您将看到“BAC Credomatic”被解析为位于洪都拉斯岛上的商业地点,汽车无法到达

这就是零结果的原因。指定航路点地址时必须更加精确。请参阅以下说明如何正确设置地址字符串格式的文档:


我希望这有帮助

谢谢你的回答!但仍不清楚:1。为什么它没有航路点(简单的
A->B
)工作?2.我在查询中输入的所有地址都来自Google自动完成字段,所以我假设它们已经标准化了。如果您使用place Autocomplete,强烈建议使用place ID而不是格式化文本。使用位置ID,您将获得更好的结果。请查看以了解更多详细信息。此外,您还可以检查这个使用位置ID获取方向的示例。在本例中,只有起点和终点,但您也可以实现航路点:
"geocoded_waypoints":[
{
  "geocoder_status":"OK",
  "place_id":"ChIJxX3EIvqorI8RRhwI3jYajZc",
  "types":[
    "premise"
  ]
},
{
  "geocoder_status":"OK",
  "place_id":"ChIJZ1RH5IDoaY8RcqGCRNAAPQw",
  "types":[
    "establishment","finance","point_of_interest"
  ]
},
{
  "geocoder_status":"OK",
  "place_id":"ChIJf1seg-OorI8R_66YzaG7hko",
  "types":[
    "bank","establishment","finance","food","point_of_interest","restaurant"
  ]
},
{
  "geocoder_status":"OK",
  "place_id":"ChIJxX3EIvqorI8RRhwI3jYajZc",
  "types":[
    "premise"
  ]
}]