高德地图API之猎鹰服务

“猎鹰”是高德地图提供的一套轨迹管理服务。为了便于理解服务接口(API)中的术语,这里假想一个应用的场景:假设你有一个货物运输的车队,名叫“飞奔2020”,车队里每辆车都有一个车牌号,如“京Z54321”、“京A09876”,等等。你想做一款应用,追踪每辆车的历史轨迹,而高德地图提供的猎鹰服务恰好可以满足你的需求。

一、术语:

  • 开发者密钥(key):要想利用高德地图API开发应用,首先必须注册成为开发者,具体方法见《加油2017-1:认识API》。注意,在申请key时,服务平台必须选择“Web服务”。

  • 服务(Service):要想创建一个基于猎鹰服务的应用,首先必须申请一个服务,并给这个服务起个名字,例如“飞奔2020”。申请服务需要提供开发者密钥,服务名称不能重复,应用中的所有功能都建立在这个服务名称之下。

  • 终端(Terminal):猎鹰服务追踪的是车的位置,因此车队里的每辆车都是一个终端,需要为每辆车注册一个名称,以车牌号为名称是不错的选择,如“京Z54321”。

  • 轨迹(Trace):每辆车都会有既往的行使路线,在路线上会有许多标记点,如出发地库房、高速公路入出口、目的地库房等,这些标记点连在一起就组成了车辆的行驶轨迹。

  • 标记点(Point):终端会在指定地点报告自己的位置信息,其中包括经纬度、时间、车速、行驶方向、海拔高度等等,这些信息中只有经纬度和时间是必填项,其他则是非必填项。

二、关键技术

如果按照信息的流向划分,猎鹰服务大致可以分为两类,一是信息抓取类服务,如查询服务、查询终端等,二是信息上传类服务,如申请服务、创建终端、上传标记点等等。

不同类型的服务在实现技术上也有所不同。同样是向服务端发出请求,请求的方式分为GET、POST两种,前者适用于信息的抓取,后者适用于信息的上传。我们在《加油2017》系列文章中采用的都是GET方式,而在本文的案例中,两种方式都会用到。

GET方式使用起来相对简单,所有请求的信息都被拼写成URL地址,如下面的字串:

https://tsapi.amap.com/v1/track/service/list?key=fcf656fd381b328bc36d5dd7fbf5f95e

这个网址用于获得开发者名下所有服务,其中“?key=…”是参数名和参数值。

POST方式使用起来稍显复杂,它的请求由三个部分组成:

  • 请求网址:一个URL地址,如
    https://tsapi.amap.com/v1/track/service/add(申请服务)

  • 请求头:指明信息的类型,如Content-Type= application/x-www-form-urlencoded(表单格式)

  • 请求体:将要上传的数据

无论是GET方式,还是POST方式,在请求发出后,服务端都会给出响应,并在客户端触发一个“响应”事件,这个事件中携带了服务端返回的结果。

在App Inventor中,Web客户端组件用于向服务端发出请求,并侦听服务端的“响应”事件,在App Inventor中“响应”事件即“收到文本”事件。本文将采用这个组件,来实现一些简单的猎鹰服务功能。这里重点讲解服务、终端、轨迹的创建、删除及查询功能,其他功能请读者参照本文的例子,对照服务商提供的开发文档自行完成。技术文档地址:https://lbs.amap.com/api/track/summary。

在AppInventor中创建一个项目——猎鹰2019,在项目中添加一个按钮、一个标签及一个web客户端组件,然后将开发工具切换到编程视图,开始编写程序。

三、 服务的申请、删除及查询

1、服务的申请

(1)API接口规格

  • 网址:
    https://tsapi.amap.com/v1/track/service/add

  • 请求方式:POST

  • 请求参数:

  • key:开发者密钥

  • name:即将申请的服务名称

  • desc:对于名称的描述,非必填项

(2)全局变量

将申请服务所需的数据保存在全局变量中,以避免重复输入字符,代码如图1所示。注意请求头和申请服务数据中的列表结构,它们都是两级列表。

图1 申请服务所需的全局变量

(3)按钮点击事件处理程序

代码如图2所示。

图2 申请服务所需的程序

(4)web客户端收到文本事件处理程序

代码如图3所示。

图3 Web客户端收到文本事件的处理程序

(5)测试

点击按钮,很快收到服务器返回的结果,如图4所示。注意图中的”sid”:98678,这是申请到的服务编号,具有唯一性,此后的所有操作都必须提供一个编号。

图4 申请服务的返回结果

2、删除服务

删除服务的操作需要提供两个参数:开发者key及服务编号sid,代码如图5所示。

图5 删除服务的相关代码

3、服务查询

服务查询操作只需要提供一个参数:开发者key,代码如图9所示。注意查询功能的请求方式是GET。

图6 查询全部申请过的服务

四、终端的创建、查询及删除

1、创建终端

(1)API接口规格

  • 终端申请网址:
    https://tsapi.amap.com/v1/track/service/add

  • 请求方式:POST

  • 必填参数:

  • key:开发者密钥

  • sid:服务编号

  • name:终端名称(如京Z54321),在同一个sid之下终端名称不允许重复。

(2)编写程序

将创建终端的网址及数据保存为全局变量,代码如图7所示。

图7 与创建终端有关的程序

(3)测试

测试结果如图8所示,仔细察看服务端返回的信息,其中count表明共创建了一个终端,createtime是创建时间(毫秒数),name是车牌号,注意tid(233773284),这是系统自动生成的一个编号,具有唯一性,是后续修改或删除操作的必填项。

图8 测试:创建终端

2、删除终端

删除终端的操作需要提供三个参数:开发者key、服务编号sid及终端编号tid,代码如图9所示。

图9 删除终端的程序

3、查询终端

查终端的操作有两个必填项:开发者key及服务编号sid,此时将返回全部终端信息。如果同时提供的终端编号tid,则返回该终端的信息,代码如图10所示。

图10 查询终端的程序

五、轨迹的创建、标记点的上传与查询

1、创建轨迹

(1)接口规格

  • 网址:
    https://tsapi.amap.com/v1/track/trace/add

  • 请求方式:POST

  • 请求参数:

  • key:开发者密钥

  • sid:服务的唯一编号

  • tid:终端的唯一编号

(2)编写程序

利用图10中的程序查询已有的终端,并为某个终端创建轨迹,代码如图11所示。

图11 创建轨迹的程序

(3)测试

测试结果如图12所示,观察服务端返回的信息,其中的”trid”:20就是刚刚创建的轨迹,下面的上传标记点操作需要用到这个trid。

图12 测试:创建轨迹

2、上传标记点

(1)接口规格

  • 网址:
    https://tsapi.amap.com/v1/track/point/upload

  • 请求方式:POST

  • 请求参数:

  • key:开发者密钥

  • sid:服务的唯一编号

  • tid:终端的唯一编号

  • trid:轨迹的唯一编号

  • point2:标记点信息

○ location:经纬度

○ locatetime:当前时间(毫秒数)

○ speed:速度(非必填项)

注意:(1)可以上传单个标记点,也可以批量上传多个标记点;(2)标记点信息要求以JSON格式提供,下面是两个标记点批量上传的具体写法(只上传必填项)。

[{"location":"116.397428,39.90923","locatetime":1544176895000},

{"location":"116.397435,39.90935","locatetime":1544176913000}]

(2)编写程序

根据接口规格编写程序,注意提供正确的sid、tid、trid值,否则上传操作会失败。代码如图13所示。

图13 上传标记点的程序

(3)测试

测试结果如图14所示,返回的信息中最后显示的“OK”表明上传成功。

图14 测试:批量上传标记点

3、查询标记点

查询标记点的操作有四个必填项:开发者key、服务编号sid、终端编号tid及轨迹编号trid,请求方式为GET,具体代码如图15所示。

图15 查询标记点的程序

测试结果如图16所示。返回数据中有许多英文单词,如data、counts、distance等等,它们的具体含义请参见猎鹰服务的技术文档:

https://lbs.amap.com/api/track/lieying-kaifa/api/grasproad。

图16 测试:查询标记点

4、解析JSON数据

在图16中,返回的数据为JSON格式,这不是提供给人类阅读的格式,需要将数据转为列表,再逐一对列表项进行解析。具体代码如图17所示。这里只解析的外层数据,至于每个标记点的内部数据,也可以仿照此法加以解析。

图17 解析JSON数据的程序

上述程序的执行结果如图18所示。从图中可以看到我们刚刚上传的两个标记点,它们之间的空间距离是13米,时间距离是18秒。

图18 测试:解析JSON数据

以上是对猎鹰服务的简单介绍,更多的功能请参考地图服务商提供的开发文档。

(0)

相关推荐