亚马逊AWS官方博客

宣布推出 Amazon Location Service 路线、地点和地图的新 API



今天,Amazon Location Service 发布了 17 个新的增强版 API,它们扩展并优化了路线地点地图功能,为开发人员带来了更加统一和简化的体验。这些更新通过引入增强功能和简化迁移流程,让 Amazon Location Service 更加易于上手和使用,适用于各类应用程序。

您现在可以使用高级路线优化、通行费计算、GPS 轨迹捕捉以及具有静态和动态渲染选项的各种地图样式,执行基于邻近度的搜索和预测建议,以及获取关于兴趣点的详细信息。

在 Amazon,我们的绝大多数路线图都是由客户反馈驱动的。许多使用 Amazon Location Service 构建应用程序的客户都表示,在处理基于位置的数据时,他们需要专门构建的 API 和更详尽的信息,比如联系方式和营业时间。尽管当前的 API 已为许多客户提供了有用的工具,但开发人员还是希望获得更多功能,比如详细的路线规划、基于邻近度的搜索、其他地点详细信息和静态地图图像。这些新的 API 能够满足这些需求,并提供更全面、开箱即用的定位解决方案。

新的和增强的功能
今天的发布直接响应反馈意见,推出了 10 个更新的 API 和 7 个全新的 API。每项服务——无论是路线规划、地点搜索还是地图展示——都经过了特定的增强,目的是为了支持更广泛的应用场景。

路线
Amazon Location Routes API 现在支持高级路线规划和自定义选项,允许用户:

  • CalculateIsolines,用于确定特定行程时间或距离内的服务区域
  • OptimizeWaypoints,用于确定最有效的路径点顺序,有助于最大限度地缩短行程时间或距离
  • 计算通行费,用于涉及收费公路的路线提供准确的费用估算
  • SnapToRoads,用于通过将点位精确匹配到路网上,实现 GPS 轨迹的精准映射

利用这些功能,您可以为用户提供更精确、更动态的路线规划体验。比如,物流公司可以根据实时交通状况,及时优化司机的送货路线,最大程度减少送货成本。

地图
更新后的 Amazon Location Maps API 包括更多由专业制图师精心设计的专用地图样式。这些地图样式提供专业设计,可以加快产品的上市速度,无需定制地图。此外,Static Map Image 功能允许开发人员将静态地图集成到应用程序中,这减少了对持续数据流的依赖,并提升了那些不需要交互的应用场景的性能。

Maps API 的主要功能包括:

  • GetTile,用于从图块集中下载具有指定的 X、Y 和 Z 轴值的图块
  • GetStyleDescriptor,用于返回有关样式的信息
  • GetStaticMap,可渲染用于报告或可视化目的的非交互式地图

地点
Amazon Location Places API 增强功能提供了更精细的搜索能力,满足了对位置数据细节要求更高的需求。新功能包括:

  • SearchNearbyAutocomplete,支持基于邻近度的查询,并启用预测文本功能,从而提供更佳的用户体验
  • 通过添加营业时间、联系方式以及其他兴趣点属性等分类信息,使得企业详细信息更加丰富

这些功能特别适合那些需要周边地点详细信息的应用,比如送餐服务或零售应用。想象一下,客户打开一个送餐应用程序,用 SearchNearby 查找周围的餐馆,并查看营业时间和联系方式等详细信息,以确认餐馆是否还在营业。一旦将多个订单分配给外卖员,应用程序就会利用 OptimizeWaypoints 功能,为取货和送货规划出最高效的路线。当外卖员在路上行驶时,SnaptoRoads 能够精确显示位置变化,从而提升客户实时追踪的体验。

Enhanced Location Service 实际应用
调用 API 非常简单。您可以使用 AWS 命令行界面 (AWS CLI)AWS SDK 或普通的 REST API。但是,在 Web 或移动应用程序的地图上显示信息,还需要一些额外的配置。虽然这个过程有详细记录,但由于内容太多,里无法详细说明。在本演示中,我将重点介绍如何使用 API。

Amazon Location Service 支持两种 API 调用的身份验证方式:一种是通过 AWS API 身份验证(AWS Sigv4 身份验证),另一种是通过 API 密钥。对于终端用户未通过身份验证或无法与 Amazon Cognito 集成的移动应用程序开发人员来说,API 密钥更为方便。这是前端应用程序推荐使用的身份验证方法。

为了演示 API 的多功能性以及如何轻松集成到应用程序中,我在演示的每个步骤中都结合使用了 AWS CLI、cURL 和图形 REST API 客户端。

第 1 步:创建 API 密钥

首先,我使用 AWS CLI 为应用程序创建一个 API 密钥。您还可以在 AWS 管理控制台中管理 API 密钥。

REGION=eu-central-1
KEYNAME=geo-key-seb

aws location create-key --region ${REGION} --key-name ${KEYNAME} --restrictions \
AllowActions="geo-routes:*","geo-places:*","geo-maps:*",\
AllowResources="arn:aws:geo-routes:${REGION}::provider/default",\
"arn:aws:geo-places:${REGION}::provider/default",\
"arn:aws:geo-maps:${REGION}::provider/default" \
--no-expiry 

{
    "Key": "v1.public.ey...cy",
    "KeyArn": "arn:aws:geo:eu-central-1:02345678901:api-key/geo-key-seb",
    "KeyName": "geo-key-seb",
    "CreateTime": "2024-09-29T09:35:53.115000+00:00"
}

该命令生成 API 密钥,我现在可以用它来调用 Amazon Location API。

第 2 步:获取地理坐标

接下来,我使用 cURL 调用 GeoCode 并在 QueryText 参数中传递地址,从而获取法国里尔市中心的地理坐标(经度纬度)。

$ curl --silent -X "POST" "https://places.geo.eu-central-1.amazonaws.com/v2/geocode?key=v1.public.ey...cy" \
       -d $'{ "QueryText": "Grand Place, Lille, France" }' 
 
{"ResultItems":[{"PlaceId":"AQ...5U","PlaceType":"Street","Title":"Grand'Place, 59800 Lille, France",
                 "Address":{"Label":"Grand'Place, 59800 Lille, France",
                 "Country":{"Code2":"FR","Code3":"FRA","Name":"France"},
                 "Region":{"Code":"HDF","Name":"Hauts-de-France"},"SubRegion":{"Name":"Nord"},
                 "Locality":"Lille","District":"Centre","PostalCode":"59800",
                 "Street":"Grand'Place","StreetComponents":[{"BaseName":"Grand'Place","Language":"fr"}]},
                 "Position":[3.06361,50.63706],
                 "MapView":[3.0628,50.6367,3.06413,50.63729],
                 "MatchScores":{"Overall":1,"Components":{"Address":{"Country":1,"Locality":1,"Intersection":[1]}}}}]}

这将返回多个数据点,包括市中心的 GPS 坐标:[3.06361,50.63706]。

第 3 步:搜索附近的地点

利用获取的坐标,我使用 REST API 客户端工具调用 SearchNearby API 来查找里尔市中心附近的兴趣点。

Amazon Location Service - 兴趣点 API 调用

在屏幕右侧,我可以看到 API 响应:附近地点的列表,例如餐馆、银行和停车场。我可以通过指定类别或限制搜索区域来进一步细化搜索。

SearchNearby API 接受可选的过滤器参数,该参数可帮助您将搜索范围限制在边界框内,或者指定包含或排除特定的商业连锁、类别、国家或食物类型。

"Filter": {
   "BoundingBox": [ number ],
   "ExcludeBusinessChains": [ "string" ],
   "ExcludeCategories": [ "string" ],
   "ExcludeFoodTypes": [ "string" ],
   "IncludeBusinessChains": [ "string" ],
   "IncludeCategories": [ "string" ],
   "IncludeCountries": [ "string" ],
   "IncludeFoodTypes": [ "string" ]
},

在我搜索附近的兴趣点时,返回的结果之一是麦当劳,这是一个全球知名的快餐品牌(🍔)。

 Amazon Location Service - SearchNearby 结果

第 4 步:获取行车路线

最后,我使用 AWS CLI 来计算比利时布鲁塞尔和法国里尔两个城市中心之间的行车路线。

aws location calculate-routes    \
    --origin 4.35278 50.84687      \
    --destination 3.06361 50.63706 \
    --key "v1.public.ey...cy"

响应结果包括一条用于在地图上绘制路线的折线,以及行车路线的详细步骤列表。

...
          "TravelMode": "Car",
          "Type": "Vehicle",
          "VehicleLegDetails": {
            "TravelSteps": [
              {
                "Duration": 15,
                "Distance": 75,
                "ExitNumber": [],
                "GeometryOffset": 0,
                "Type": "Depart"
              },
              {
                "Duration": 10,
                "Distance": 8,
                "ExitNumber": [],
                "GeometryOffset": 2,
                "Type": "Turn",
                "TurnStepDetails": {
                  "Intersection": [],
                  "SteeringDirection": "Right",
                  "TurnIntensity": "Typical"
                }
              },
...

第 5 步:在地图上显示行车路线

为了在地图上展示路线,我使用了 Maplibre 库,这是一个用于在 Web 和移动应用程序中显示地图的渲染引擎。按照 Amazon Location Service 开发人员指南,我构建了一个基本的应用程序来显示路线。

Amazon Location Service - 带路线的地图

除了 Maplibre,您还可以使用 AWS Amplify 在应用程序中集成和显示 Amazon Location 数据。

开始使用
借助这些全新和更新的 API,Amazon Location Service 可为您的业务需求提供更全面的地图和位置数据。这将有助于提高开发人员的敏捷性和可扩展性,从而加快开发生命周期。

要开始使用,请参阅7更新的 Amazon Location Service 开发人员指南,并立即开始集成这些功能。您还可以访问 Amazon Location Service 页面,以了解更多信息,或使用您最喜欢的 AWS SDK 试用 API,看看它们如何增强您的应用程序。

— seb


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。