【问题标题】:HERE Matrix Routing - Mapping results to original objects, C#HERE 矩阵路由 - 将结果映射到原始对象,C#
【发布时间】:2021-05-09 06:22:23
【问题描述】:

我正在使用 HERE Matrix Routing API 通过提供所需的运输模式来获取位置之间的距离和持续时间。

API 采用一组起点和一组目的地,非常适合同时计算多条路线。我只是不知道如何以良好的方式映射响应。

我有 4 条路线:

  • 点 1 到点 2
  • 点 3 到点 4
  • 第 5 点到第 6 点
  • 第 7 点到第 8 点

因此,我为 API 提供了 4 个起点 (1,3,5,7) 和 4 个目的地 (2,4,6,8) 的纬度和经度。 我在响应中得到一个包含距离的数组,其中 12 个。

现在我如何以良好的方式编写可以为我的 4 条路线拉出距离的逻辑?

这里有文档说:

每个数组代表一个二维矩阵,其中行对应于起点,列对应于目的地。数组中的第 k 个位置对应于由以下定义的矩阵中的 (i, j) 位置 关系:k = num_destinations * i + j

https://developer.here.com/documentation/matrix-routing-api/8.3.0/api-reference-swagger.html

示例请求:

{
  "origins": [
    {
      "lat": 52.5309,
      "lng": 13.3849
    },
    {
      "lat": 52.5202,
      "lng": 13.373
    }
  ],
  "destinations": [
    {
      "lat": 52.522,
      "lng": 13.4133
    },
    {
      "lat": 52.5163,
      "lng": 13.3777
    }
  ],
  "regionDefinition": {
    "type": "world"
  }
}

示例响应:

{
  "matrixId": "bc79a808-dbac-4e49-88f2-27ec66a473ef",
  "matrix": {
    "numOrigins": 1,
    "numDestinations": 2,
    "travelTimes": [
      1231,
      983
    ],
    "distances": [
      109,
      10
    ]
  },
  "regionDefinition": {
    "type": "circle",
    "center": {
      "lat": 52.53787,
      "lng": 13.40896
    },
    "radius": 10000
  }
}

我非常感谢一些帮助拉开距离。我将请求许多不同的路线,但我并不总是知道数量,所以我需要一个动态的解决方案。

【问题讨论】:

    标签: c# .net matrix routes


    【解决方案1】:

    我自己解决了。

    到目前为止,我的矩阵始终是正方形,并且由于我知道我的起点和终点在请求数组中具有相同的索引,因此根据 HERE 文档所述,计算公式并不难:

    k = num_destinations * i + j

    位置 k 的每个条目对应于公式中第 i 行第 j 列的矩阵中的一个条目:k = M * i + j

    因此,我对内部对象的响应映射现在如下所示:

    for (int i = 0; i < rideRouteInfoRequests.Count; i++)
    {
        var distanceIndex = matrixResponse.Matrix.NumDestinations * i + i;
        rideRouteInfoRequests[i].Distance = matrixResponse.Matrix.Distances[distanceIndex];
        var durationIndex = matrixResponse.Matrix.NumDestinations * i + i;
        rideRouteInfoRequests[i].Duration = matrixResponse.Matrix.TravelTimes[durationIndex];
    }
    

    此解决方案仅适用于我输入一个方阵的特定情况,我希望每个原点都匹配相应的(索引)目的地。

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 2019-09-13
      • 2021-05-20
      • 1970-01-01
      • 2020-06-11
      • 2012-11-12
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      相关资源
      最近更新 更多