1. 7 海图GIS平台开发
Shipxy
  • 船讯网API服务概述
  • 注册与创建应用
  • 多语言SDK引入
  • AI大模型接入MCP服务
  • 视频监控AI识别预警服务
    • 视频监控服务接入指南
    • 视频监控API服务说明
    • 视频监控场景应用指南
    • 视频监控服务FAQ与最佳实践
  • AI智能体应用
    • 运力资源智能体
    • 船舶风控智能体
    • 运输规划智能体
    • 航次时效预测智能体
    • 船舶安全监控智能体
    • 多式联运协同智能体
    • 大宗贸易态势分析智能体
  • 1 船舶查询
    • 1.1 船舶位置查询
      • 1.1.1 单船位置查询
      • 1.1.2 多船位置查询
      • 1.1.3 船队位置查询
    • 1.2 船舶模糊查询
      GET
    • 1.3 周边船舶查询
      GET
    • 1.4 区域船舶查询
      GET
    • 1.5 船舶船籍查询
      GET
    • 1.6 船舶档案查询
      GET
  • 2 港口查询
    • 2.1 港口信息查询
    • 2.2 港口当前靠泊船查询
    • 2.3 港口当前到锚船查询
    • 2.4 港口预抵船舶查询
  • 3 历史行为
    • 3.1 船舶历史轨迹查询
    • 3.2 船舶互相搭靠记录查询
  • 4 挂靠记录
    • 4.1 船舶历史挂靠记录
    • 4.2 船舶挂靠指定港口记录
    • 4.3 船舶当前挂靠信息
    • 4.4 港口挂靠历史船舶
  • 5 航线规划
    • 5.1 点到点航线规划
    • 5.2 港到港航线规划
    • 5.3 预计到达时间(ETA)查询
  • 6 天气气象
    • 6.1 新全球气象
      • 6.1.1 实时气象数据
      • 6.1.2 未来气象预报
    • 6.2 全球台风
      • 6.2.1 获取全球台风列表
      • 6.2.2 获取单个台风信息
    • 6.3 国内港口潮汐
      • 6.3.1 查询国内潮汐观测站列表
      • 6.3.2 查询单个观测站潮汐详情
    • 6.4 全球港口潮汐
      • 6.4.1 查询全球潮汐观测站列表
      • 6.4.2 查询单个观测站潮汐详情
    • 6.5 海区气象
    • 6.6 单点海洋气象
    • 6.7 历史气象记录
  • 7 海图GIS平台开发
    • 7.1 快速入门:从注册到接入
    • 7.2 地图引擎基础:地图控制与业务绘制
    • 7.3 船位展示服务
    • 7.4 历史轨迹服务
    • 7.5 图层与气象服务
    • 7.6 航线绘制与区域回放服务
    • 7.7 Vue项目接入指南
    • 7.8 API Key安全实践:后端代理接入
  • 8 海事数据
    • 8.1 航行警告查询
  • 9 监控推送
    • 9.1 监控船队管理
      • 9.1.1 创建船队
      • 9.1.2 更新船队信息
      • 9.1.3 查询船队
      • 9.1.4 删除船队
      • 9.1.5 船队船舶增加
      • 9.1.6 船队船舶批量更新
      • 9.1.7 船队船舶删除
    • 9.2 区域监控推送
      • 9.2.1 区域创建
      • 9.2.2 区域更新
      • 9.2.3 区域查询
      • 9.2.4 区域删除
      • 9.2.5 区域监控推送内容
    • 9.3 船舶航速提醒推送
      • 9.3.1 新增船舶订阅
      • 9.3.2 删除订阅船舶信息
      • 9.3.3 查询订阅船舶列表
      • 9.3.4 船舶航速异常推送
    • 9.4 实时船位推送
    • 9.5 船舶到离港事件推送
    • 9.6 船舶动态ETA推送
    • 9.7 船舶AIS信号消失事件推送
    • 9.8 船舶搭靠事件推送
  • 文档附录
    • 船舶类型对照表
    • 服务码返回说明
    • 海区对照表
    • 航行状态对照表
    • 绕航节点清单
    • 航标类型对照表
  1. 7 海图GIS平台开发

7.4 历史轨迹服务

适用版本:船讯网海图 GIS 平台 ElaneMap H5 API 3.5
前置阅读:建议先阅读《7.1-快速入门:从注册到接入》《7.2-地图引擎基础:地图控制与业务绘制》《7.3-船位展示服务》,了解地图初始化、密钥(ak)配置与船位服务后再阅读本篇。

1. 服务概述#

1.1 什么是轨迹服务#

轨迹服务(TrackService)是 ElaneMap H5 平台提供的船舶历史轨迹查询与展示服务,底层实现类为 TrackServiceImpl(轨迹管理实现类)。主要能力包括:
按 MMSI + 起止时间自动查询船舶历史轨迹数据并绘制(addAndShowByUrl)
将自有的轨迹点数据(Track 对象集合)绘制到地图(add / addAndShow)
轨迹样式定制:线颜色、线宽、虚线、方向箭头、起终点圆圈、拐点标签等
轨迹点信息标签(lable):船名、MMSI、速度、航迹向、时间、距起点/终点距离等
轨迹航速曲线分析弹框(showTrackAnalysis)
轨迹回放:随轨迹自动弹出播放器,动态回放船舶航行过程(isEnablePlayer)
多条轨迹的统一管理:显示、隐藏、删除、查询
所有已添加的轨迹都存放在轨迹容器 items 中,元素结构为 {trackId: trackId, data: tracks, symbol: null, options: options, ship: ship}。

1.2 创建方式#

参数说明:
参数类型说明
mapL.Map地图对象
optionsObject设置信息(可选)
调用后 map.trackService 被实例化为 TrackServiceImpl 对象,下文所有方法均通过它调用。

2. 轨迹查询与展示#

2.1 完整示例(轨迹查询)#

选择船舶 MMSI 与起止日期,调用 addAndShowByUrl 自动从数据接口拉取轨迹数据并绘制。
要点说明:
addAndShowByUrl(mmsi, btime, etime, options, callBack, tp, vy, auto_viewzoom):btime/etime 为秒级 Unix 时间戳;tp 为轨迹数据类型(0:普通,1:抽稀,2:完整,默认 0);vy 为航程(0:无,1:有,默认 0);auto_viewzoom 是否自适应展示,默认 true。
多次查询会叠加多条轨迹,用 removeAll() 一次清除全部轨迹。

2.2 轨迹 options 参数表#

以下参数用于 add / addAndShow / addAndShowByUrl 的 options,以主文档第 5 节(轨迹服务)与 TrackServiceImpl 类文档为准。
参数类型默认值说明
lineColor颜色-轨迹线颜色
lineWeightnumber1线粗细
circleOverColor颜色-拐点(轨迹点)鼠标滑过时的颜色
dashbooleanfalse(实线)是否为虚线,true:虚线,false:实线(注:主文档第 5 节注释表述为"true:实线",与类文档及官方示例相反,以 TrackServiceImpl 类文档与示例用法为准)
dashArrayArray[5,5]虚线参数(虚线段间隔)
startShowbooleantrue是否显示"起点"图标
endShowbooleantrue是否显示"终点"图标
directionShowbooleanfalse轨迹方向三角是否展示
isDilutebooleantrue是否抽稀
isEnablePlayerbooleanfalse是否需要播放轨迹(为 true 时显示轨迹回放播放器)
isShowLablebooleantrue是否显示 lable(轨迹点信息标签)
lableMapObjectnull自定义附加 lable 显示,如 {"time": "xxxxx"}
lableFieldsArray["name", "mmsi", "sog", "cog", "utc", "kn"]lable 显示的字段,可选 key:["name","mmsi","sog","cog","utc","kn","ed","md","draught","dest","eta","navistatus","rot","hdg"]
tipHideTimeOutnumber8000轨迹/航线 tip 超时关闭时间设置(毫秒)
startCircleTypenumber1起始圆圈样式类型,0:不显示,1:同心圆,2:普通圆圈(与拐点相同)
endCircleTypenumber1结束圆圈样式类型,取值同 startCircleType
startCircleColor颜色'#06c84a'起始圆圈填充色
endCircleColor颜色'#f70006'结束圆圈填充色
shipColor颜色-船舶颜色(配合 addAndShowByUrl 使用)
shipLineColor颜色-船舶边框颜色(配合 addAndShowByUrl 使用)
lableFields 各字段含义与展示格式:
字段含义展示格式
name船名船名:{1}
mmsiMMSIMMSI:{1}
sog速度速度:{1}节
cog航迹向航迹向:{1}度
utc时间时间:{1}
kn距起点距离距起点距离:{1}海里
ed距终点距离距终点距离:{1}海里
md下一段航程下一段航程:{1}海里
draught吃水-
dest目的地-
eta预到时间-
navistatus航行状态-
rot旋转角速度-
hdg船首向-

2.3 addAndShow 参数说明#

addAndShow(trackId, tracks, options, ship, auto_viewzoom) 将已有轨迹数据添加到地图并展示,如果 options 中设置了 isEnablePlayer: true,会同时显示播放器。
参数类型说明
trackIdString轨迹 ID,轨迹在轨迹容器中的唯一标识
tracksArrayTrack 对象集合,每个轨迹点必填 utc(时间,秒)、sog(航速)、lng(经度)、lat(纬度),可选 hdg(船首向)、from(数据来源)等
optionsObject设置信息,见 2.2 参数表
shipCanvasShip船舶静态数据 {name: 船名, mmsi: MMSI, from: 数据来源, navistatus: 航行状态, draught: 吃水};回放时可含 length(船长)、width(船宽)用于绘制回放船型
auto_viewzoomboolean是否自适应展示(地图视野自动包含整条轨迹),默认 true
返回值:Object,结构为 {trackId: trackId, data: [], symbol: {}, options: {}, ship: ship}。
主文档第 5 节示例:

3. 自定义轨迹#

当您已有轨迹点数据(例如自有 AIS 接收机、后端数据库导出的数据)时,可不依赖数据接口,直接构造 Track 对象数组调用 addAndShow 绘制。
要点说明:
轨迹点必填字段:utc(秒级时间戳)、sog(航速)、lng、lat。
trackId(示例中 "truck_id_001")自行指定,后续 show/hide/remove/has/get 均通过该 ID 操作。
构造数据时请保证轨迹点按时间顺序排列,否则轨迹线会出现回绕。

4. 轨迹航速曲线#

showTrackAnalysis 在地图上弹出航速曲线分析弹框:横轴为时间,纵轴为航速,直观展示该时间段内船舶的加减速过程。关闭弹框使用 _closeAllTrackAnalysisPopups()。
要点说明:
showTrackAnalysis(mmsi, btime, etime, going, tp, vy, popupOptions):前 6 个参数与 getTrackInfoByUrl 相同(going 是否连续查询、tp 数据类型、vy 航程),最后一个是弹框配置 {width, height, offset},offset 为 [上、右、下、左] 四向偏移。
弹框宽度/高度可按页面布局调整;offset 数组中不需要的方向可置 null。

5. 轨迹回放#

在轨迹查询的 options 中设置 isEnablePlayer: true,轨迹绘制完成后会自动弹出轨迹回放播放器:船舶符号沿轨迹线逐点移动,播放器提供播放/暂停、进度拖动、倍速等控制,并随播放位置刷新当前轨迹点的速度、时间等信息。
播放器使用说明:
开启方式:isEnablePlayer: true(默认 false)。addAndShow 与 addAndShowByUrl 均支持;主文档第 5 节注明:"添加轨迹并显示,如果设置了需要播放,会显示播放器"。
回放船舶外观:ship 参数提供船舶静态数据(name、mmsi、length、width 等),用于回放时绘制船名与按真实船长船宽比例绘制的船型;shipColor、shipLineColor 控制回放船的颜色与边框颜色。
结束回放:remove(trackId) 删除指定轨迹或 removeAll() 清空全部轨迹后,对应播放器随之消失。

6. TrackServiceImpl 方法速查表#

成员:
成员类型说明
itemsObject轨迹容器,所有轨迹图形对象,元素结构 {trackId: trackId, data: tracks, symbol: null, options: options, ship: ship}
方法:
方法名功能参数返回值
add(trackId, tracks, options, ship)增加轨迹(不自动定位视野)trackId:String,轨迹 ID;tracks:Array,Track 对象集合;options:Object,设置信息;ship:CanvasShip,船舶静态数据 {name, mmsi, from, navistatus, draught}Object,{trackId, data, symbol, options, ship}
addAndShow(trackId, tracks, options, ship, auto_viewzoom)增加轨迹并展示同 add;auto_viewzoom:boolean,是否自适应展示,默认 trueObject,结构同上
addAndShowByUrl(mmsi, btime, etime, options, callBack, tp, vy, auto_viewzoom)根据参数自动获取轨迹数据并添加展示mmsi:string;btime/etime:number,起止时间戳(秒);options:Object;callBack:function;tp:number,轨迹数据类型 0 普通/1 抽稀/2 完整,默认 0;vy:number,航程 0 无/1 有,默认 0;auto_viewzoom:默认 true-
show(trackId, auto_viewzoom)显示指定轨迹trackId:String;auto_viewzoom:boolean,是否自适应展示,默认 true-
_viewAllTrackInMap(trackId)可视范围显示指定或所有轨迹trackId:string,轨迹 ID,可为空,为空则适应所有轨迹-
hide(trackId)隐藏指定轨迹(并刷新区域船层级)trackId:Stringboolean
hideAll()隐藏全部轨迹(并刷新区域船层级)无-
remove(trackId)删除指定轨迹(并刷新区域船层级)trackId:String-
removeAll()删除所有轨迹无-
getItems()获取轨迹对象集合无Object
getLength()获取轨迹数量无number
getValues()获取所有轨迹集合无Array
getKeys()获取所有轨迹 ID 集合无Array
getTrackInfoByUrl(mmsi, btime, etime, going, tp, vy)查询轨迹数据mmsi:string;btime/etime:number,起止时间戳(秒);going:boolean,是否连续查询,默认 false;tp:number,0 普通/1 抽稀/2 完整,默认 0;vy:number,0 无/1 有,默认 0Array
has(trackId)是否包含指定轨迹trackId:Stringboolean
hasTrackIsShow()是否有轨迹显示无boolean
get(trackId)获取指定轨迹trackId:String轨迹对象
showTrackAnalysis(mmsi, btime, etime, going, tp, vy, popupOptions)弹出轨迹航速曲线分析弹框(官方示例 b1_5_2 提供)mmsi、btime、etime、going、tp、vy 同 getTrackInfoByUrl;popupOptions:{width, height, offset:[上,右,下,左]} 弹框位置配置-
_closeAllTrackAnalysisPopups()关闭全部航速曲线分析弹框(官方示例 b1_5_2 提供)无-

7. 效果示意(文字描述)#

轨迹查询:点击"轨迹查询"后,地图视野自动缩放平移至包含整条轨迹;海图上出现一条番茄红色虚线轨迹,起点为绿色同心圆、终点为红色同心圆,沿线分布轨迹拐点;鼠标滑过拐点时该点变为黄色并悬浮显示该点的船名、MMSI、速度、航迹向、时间、距起点距离等信息;点击"轨迹清除"后所有轨迹从地图上移除。
自定义轨迹:点击"轨迹显示",一条由 20 个轨迹点组成的虚线轨迹立即呈现在东海海域(约 121.3°E、33.3°N 起向东北方向延伸),视野自动适应轨迹范围。
轨迹航速曲线:点击"航速曲线展示",地图右侧弹出一个 500x350 的曲线弹框,横轴为时间、纵轴为航速(节),曲线起伏反映该船在查询时段内的加速、匀速、减速与停泊过程;点击"航速曲线关闭"弹框关闭。
轨迹回放:查询轨迹后地图下方(或轨迹旁)出现回放播放器,点击播放后船舶符号沿轨迹线从起点向终点移动,已走过的轨迹段与未走过的区分显示,进度条与当前时间、航速同步刷新,可暂停、拖动进度跳转。

8. 注意事项#

1.
时间戳单位为秒:btime/etime/track.utc 均为秒级 Unix 时间戳,使用 JavaScript Date.parse(...) 或 getTime() 得到的是毫秒,务必除以 1000。
2.
dash 参数注释差异:主文档第 5 节注释"是否为实线,true:实线"与 TrackServiceImpl 类文档"是否为虚线,true:虚线,false:实线,默认:false"表述相反;官方全部 demo 均按 dash: true // 是否为虚线 使用,请以"true 为虚线、false 为实线(默认)"为准。
3.
轨迹数据类型 tp:查询跨多天的长轨迹时建议传 tp: 1(抽稀)降低数据量;需要完整轨迹点(如精确里程统计)时传 tp: 2。
4.
抽稀显示 isDilute:默认 true。抽稀只影响绘制密度,不影响查询返回的数据;关闭后(false)会逐点绘制,轨迹点极多时可能影响渲染性能。
5.
自适应视野:addAndShow/addAndShowByUrl/show 默认 auto_viewzoom: true,会强制改变地图视野;多条轨迹对比展示时,后续添加建议传 false,或用 _viewAllTrackInMap() 统一适应所有轨迹。
6.
轨迹 ID 唯一:trackId 是轨迹在容器中的唯一键,重复添加同一 ID 会覆盖/冲突,添加前可用 has(trackId) 判断,或先 remove(trackId)。
7.
lable 与 tip:isShowLable 默认 true,lableFields 控制轨迹点悬浮标签显示的字段;tipHideTimeOut(默认 8000 毫秒)控制 tip 自动关闭时间。
8.
连续查询:getTrackInfoByUrl/showTrackAnalysis 的 going 参数用于连续查询场景(分段拉取长时间范围数据),默认 false。
9.
查询权限:轨迹查询走船讯网数据接口,可查询的 MMSI 范围与时长受您的 Key 权限约束;若接口返回无数据,请先确认该 Key 是否开通了相应船舶的轨迹权限。

9. FAQ#

Q1:ShipxyAPI.TrackService(map) 与 map.trackService 是什么关系?
A:调用 ShipxyAPI.TrackService(map) 开启轨迹服务后,map.trackService 被实例化为 TrackServiceImpl 对象,后续所有轨迹操作都通过它完成。
Q2:已有自己的轨迹点数据,还需要调数据接口吗?
A:不需要。构造 Track 对象数组(必填 utc/sog/lng/lat)后直接调用 addAndShow(trackId, tracks, options, ship) 即可,见"自定义轨迹"示例。
Q3:如何同时展示多条轨迹并隐藏其中一条?
A:为每条轨迹指定不同的 trackId 添加;用 hide(trackId) 隐藏、show(trackId) 重新显示、hasTrackIsShow() 判断当前是否有轨迹显示,最后用 _viewAllTrackInMap() 让视野适应全部轨迹。
Q4:轨迹线想换成实线怎么设置?
A:dash: false(默认即实线);需要虚线时设 dash: true 并用 dashArray: [5, 5] 调整虚线间隔。
Q5:轨迹起终点的圆圈如何隐藏或改样式?
A:startShow/endShow 控制起终点图标显示;startCircleType/endCircleType 取 0(不显示)、1(同心圆,默认)、2(普通圆圈);填充色用 startCircleColor(默认 #06c84a)、endCircleColor(默认 #f70006)。
Q6:怎么获取原始轨迹数据自己做统计分析?
A:使用 getTrackInfoByUrl(mmsi, btime, etime, going, tp, vy),返回轨迹数据数组(Array),不经过地图绘制;也可用 addAndShowByUrl 的 callBack 回调在数据加载后处理。
Q7:回放播放器没有出现?
A:确认 options 中 isEnablePlayer: true(默认 false),且轨迹数据按时间顺序包含有效的 utc、lat、lng;播放器随轨迹删除(remove/removeAll)而消失。
Q8:航速曲线弹框位置不合适怎么办?
A:通过 showTrackAnalysis 最后一个参数调整:{width: '500px', height: '350px', offset: [上, 右, 下, 左]},不需要的偏移方向传 null;统一关闭用 _closeAllTrackAnalysisPopups()。
上一页
7.3 船位展示服务
下一页
7.5 图层与气象服务