65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 TomTom Maps API 进行路线计算

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2019年1月10日

CPOL
viewsIcon

6965

在本文中,我将通过几个示例向您介绍路由API。我们还将讨论汽油车和电动车的消耗模型,并使用这些模型来规划您车辆的最佳路线。

TomTom的路线测绘引擎功能强大,并且随着最近宣布TomTom API可供开发者集成到他们的应用程序中,您现在可以利用路由引擎的强大功能并与您的消费者共享。

在本文中,我将通过几个示例向您介绍路由API。我们还将讨论汽油车和电动车的消耗模型,并使用这些模型来规划您车辆的最佳路线。

最后,我们将讨论您可以从API请求的不同路线类型,并提供其他文档和工具的链接,以帮助您了解更多信息并采取下一步措施。

如何生成您的个人API密钥

您可以在TomTom开发者门户上找到开始使用TomTom API所需的一切。您首先要做的是在该门户上创建一个帐户。从主页,输入您的电子邮件地址,然后点击“获取免费API密钥”按钮。

图 1 TomTom 开发者门户

过程的下一步是选择一个用户名并通读条款和条件。您的免费帐户每天支持最多2,500次免费事务。需要注意的是,如果每天2,500次API事务不够,可以通过访问开发者仪表板中的“我的积分”屏幕购买更多事务。

一封包含设置帐户密码链接的电子邮件将发送到您的邮箱,然后您就可以开始使用了。在请求 API 密钥之前,您需要配置一个应用程序。在您的仪表板中,点击“+ 添加应用”按钮。

应用程序需要一个名称,并且您需要启用应用程序需要访问的API。在此示例中,我们将使用的产品是路由API产品。如果您正在跟进,请选择路由API产品,然后点击创建应用。

图 2 创建新应用程序

设置好应用程序后,您可以从应用程序对象内的“密钥”选项卡访问API密钥。该密钥标记为消费者API密钥。下面的每个URL调用都包含ReplaceWithYourAPIKeyHere作为密钥。(您需要将其替换为您的密钥。)

本文重点介绍如何使用TomTom路由API,但开发者还可以使用具有类似功能的Web和移动SDK。您可以从以下链接了解更多关于每个SDK的信息

计算路线

我们将探索应用程序需要调用的API来确定两点之间的路线。我将使用API调用来使本文尽可能与语言无关。API默认以XML格式返回数据。我个人偏好JSON格式的数据,因此我们将添加必要的参数来启用它。

在此场景中,让我们考虑一下我们降落在西雅图/塔科马机场并租车前往CenturyLink体育场的情况。我们将假装要去观看海鹰队比赛或参加音乐会。我们将以纬度/经度对的形式将地点发送到API。

  • SEATAC租车 - 47.460858, -122.292098
  • CenturyLink体育场停车场 - 47.595409, -122.328979

让我们从确定最快的路线开始。我们将向TomTom API的路由端点发送一个GET请求。当前路由API版本是1,它作为路径参数传递。起点和终点也作为路径参数传递,我们将API密钥作为查询参数包含在内。

https://api.tomtom.com/routing/1/calculateRoute/47.460858,-122.292098:47.595409,-122.328979/json?key=ReplaceWithYourAPIKeyHere
图3 API调用以确定两点之间的路由器

这条特定路线包含275个路线点,因此我在下面包含了一个缩减版本。

{
 "formatVersion": "0.0.12",
 "copyright": "Copyright 2018 TomTom International BV. ...",
 "privacy": "TomTom keeps information that tells us how ...",
 "routes": [
   {
     "summary": {
       "lengthInMeters": 19997,
       "travelTimeInSeconds": 1003,
       "trafficDelayInSeconds": 0,
       "departureTime": "2018-09-26T01:07:30-07:00",
       "arrivalTime": "2018-09-26T01:24:12-07:00"
     },
     "legs": [
       {
         "summary": {
           "lengthInMeters": 19997,
           "travelTimeInSeconds": 1003,
           "trafficDelayInSeconds": 0,
           "departureTime": "2018-09-26T01:07:30-07:00",
           "arrivalTime": "2018-09-26T01:24:12-07:00"
         },
         "points": [
           {
             "latitude": 47.46087,
             "longitude": -122.29207
           },
           ...
           {
             "latitude": 47.5954,
             "longitude": -122.32907
           }
         ]
       }
     ],
     "sections": [
       {
         "startPointIndex": 0,
         "endPointIndex": 275,
         "sectionType": "TRAVEL_MODE",
         "travelMode": "car"
       }
     ]
   }
 ]
}
图4 路线的缩减结果

结果提供了距离和时间信息,以及任何交通延误以及预计的出发和到达时间。API还允许您将出发时间或到达时间作为查询参数提交,以防您想在将来探索基于时间限制的不同选项。您可以在路由API文档中找到如何使用这些和其他选项。

最快、最短和最经济的路线

API允许为不同标准优化路线。不同的路线类型包括

  • 最快 - 最快的路线
  • 最短 - 按距离计算的最短路线
  • 环保 - 努力在经济性和速度之间取得平衡
  • 刺激 - 最具挑战性的地形路线。最大化山丘和转弯,并避开高速公路。

我们可以将路线类型作为附加查询参数包含在URL中。让我们更新原始URL以返回经济路线。

https://api.tomtom.com/routing/1/calculateRoute/47.460858,-122.292098:47.595409,-122.328979/json?key=ReplaceWithYourAPIKeyHere&routeType=eco
图5 最经济路线的更新路线API请求

我将上面查询的结果映射到每种路线类型,以便您可以进行比较。

路线类型 距离(公里) 时间(分钟:秒)
最快 19.99公里 16:42
最短 16.81公里 22:42
环保 19.99公里 16:42
刺激 16.81公里 22:42
图6 不同路线之间的比较

如果我们包含更多关于我们驾驶车辆的信息,我们可以获得更准确的结果,并为我们驾驶的车辆类型识别更好的路线。让我们考虑如何为具有传统内燃机和电动汽车的汽车传递额外信息。

定义燃油消耗模型

在此示例中,让我们看一下宝马430i。美国环保局报告显示,我们可以在高速公路上获得大约34英里/加仑的油耗。我们需要进行一些计算,将这些数字转换为公制单位。API需要速度和每100公里升数相结合。当我们使用在线计算器时,我们得到每100公里升数为6.9。

我们需要将发动机类型设置为combustion(内燃机),然后以消耗对的形式传递消耗数据。如果提供更多值,每个对之间用冒号分隔。

https://api.tomtom.com/routing/1/calculateRoute/47.460858,-122.292098:47.595409,-122.328979/json?key=ReplaceWithYourAPIKeyHere&routeType=fastest&vehicleEngineType=combustion&constantSpeedConsumptionInLitersPerHundredkm=80,6.92
图7 为内燃机传递消耗模型

当结果返回时,我们将有一个额外的数据点需要考虑:fuelConsumptionInLiters(在摘要部分),如下所示。

{
 ...
 "routes": [
   {
     "summary": {
     "lengthInMeters": 19997,
     "travelTimeInSeconds": 1003,
     "trafficDelayInSeconds": 0,
     "departureTime": "2018-09-26T02:15:10-07:00",
     "arrivalTime": "2018-09-26T02:31:52-07:00",
     "fuelConsumptionInLiters": 1.369581
   },
   ...
 ]
}
图8 路线的燃油消耗结果

定义电动消耗模型

电动消耗类似,只是值基于kWh而不是每百公里升数。让我们考虑一下,如果我们要驾驶一辆2018款日产Leaf,电池容量为40 kWh,如何创建这个模型。我们需要提交的值是每100公里使用的kWh量。根据一些数学计算和几次换算,我们可以预期Leaf将在

  • 30公里/小时的速度下,每100公里消耗16.75 kWh。
  • 80公里/小时的速度下,每100公里消耗20.94 kWh。

我们需要将发动机类型更改为electric(电动),然后将我们的消耗模型包含在标记为constantSpeedConsumptionInkWhPerHundredkm的参数中

https://api.tomtom.com/routing/1/calculateRoute/47.460858,-122.292098:47.595409,-122.328979/json?key=ReplaceWithYourAPIKeyHere&routeType=fastest&vehicleEngineType=electric&constantSpeedConsumptionInkWhPerHundredkm=30,16.75:80,20.94
图9 为电动发动机传递消耗模型

结果与汽油消耗请求类似,kWh的消耗量包含在摘要部分,如下所示。

{
 ...
 "routes": [
   {
     "summary": {
       "lengthInMeters": 19997,
       "travelTimeInSeconds": 1003,
       "trafficDelayInSeconds": 0,
       "departureTime": "2018-09-26T02:28:56-07:00",
       "arrivalTime": "2018-09-26T02:45:38-07:00",
       "batteryConsumptionInkWh": 4.3892717
   },
   ...
 ]
}
图10 路线的能源消耗结果

路由API的其他选项

我们上面创建的消耗模型可以为所选路线的消耗提供合理的估计,但我们可以在请求中添加额外信息,以进一步优化结果。包含这些信息对于一个连接到车辆并且可以从车辆监控系统中获取指标的应用程序特别有用。

API定义了您可以在请求中包含的附加参数。这些参数包括但不限于

  • 加速和减速效率
  • 车辆指标 - 重量、负载类型、最高速度
  • 效率 - 上坡和下坡行驶

您可以通过TomTom详尽而详细的文档了解更多关于路由API的信息。该文档包含有关API当前版本的信息,或者请求和响应中包含的参数及其关联数据类型的信息。以下资源直接与路由API产品相关。

路由API资源管理器

此资源提供了API的实现细节,包括可用的端点、要使用的参数以及每个端点预期的响应。该页面还为您提供了尝试每个端点的示例调用的机会。

路由文档

路由API文档包含有关每种路线请求类型可用参数、预期格式以及每个参数应为的数据类型的更详细信息。响应也提供类似信息。

© . All rights reserved.