将请求路由航点与响应匹配

时间:2021-06-18 06:41:44

标签: google-directions-api

我们使用 Google Places API 响应来获取点坐标并基于该坐标创建路线。假设我们有一条包含以下点的路线:

  • 开始位置:-33.8688183、151.209295
  • 结束位置:-33.8932815、151.2002498(地点 ID:ChIJWyT7PtqxEmsRg59cHS34gWY)

航点:

  1. 33.89247270000001、151.2009867(地点 ID:ChIJ_Z4XL9qxEmsReObjD0D6XKw)
  2. 33.89252739999999、151.2009257(地点 ID:ChIJa3IEJtqxEmsRGyWFE8kn7NY)
  3. 33.8932815、151.2002498(地点 ID:ChIJWyT7PtqxEmsRg59cHS34gWY)
  4. 33.8921901、151.2011243(地点 ID:ChIJKffLgNmxEmsR9dlYTFfUBvM)。

然后使用这条数据调用 Directions API 以获得优化的路线,它按预期工作。请求响应 OK 状态和以下航点数据:

[
  {
    geocoder_status: "OK",
    place_id: "ChIJM34u9j-uEmsRVDO3doXlG5Q",
    types: [
      "establishment",
      "point_of_interest",
      "real_estate_agency",
    ],
  },
  {
    geocoder_status: "OK",
    place_id: "ChIJa3IEJtqxEmsRGyWFE8kn7NY",
    types: [
      "street_address",
    ],
  },
  {
    geocoder_status: "OK",
    place_id: "ChIJAQ8cKdqxEmsRLEenjwpbc2E",
    types: [
      "establishment",
      "point_of_interest",
    ],
  },
  {
    geocoder_status: "OK",
    place_id: "ChIJwRKfP9qxEmsROQZzfX-atzk",
    types: [
      "street_address",
    ],
  },
]

从上面的响应来看,似乎只有一个航点与请求(4)中的相同,其他似乎有不同的地点 ID(即使它实际上指向相同的位置)。 现在这会导致我们的问题,因为我们无法将请求中的停止与响应中的数据进行匹配。 有没有办法将一些额外的元数据(如外部 ID)传递给给定的航路点,因此当它从 API 返回并以不同的方式进行地理编码时,我们可以将其与请求的元数据进行匹配,如下所示:

{
    geocoder_status: "OK",
    place_id: "ChIJwRKfP9qxEmsROQZzfX-atzk",
    external_id: "applicationPointId",
    types: [
      "street_address",
    ],
  },

否则,无法将确切的航点图钉与我们希望在地图上显示的一些附加信息进行匹配。 对于任何路由方案,这似乎都是一个非常典型的用例,但我在文档中找不到任何解决此问题的内容。 任何帮助将不胜感激。

0 个答案:

没有答案