适用版本:ElaneMap H5 API 3.5 前置阅读:建议先阅读《7.1-快速入门:从注册到接入》与《7.2-地图引擎基础:地图控制与业务绘制》,掌握 API 引入、密钥(ak)配置、地图实例化( new ShipxyAPI.Map(...))之后再阅读本篇。本篇涉及服务的 API 引用方式:
| 服务 | 入口 | 功能定位 |
|---|---|---|
| 航线绘制服务 | ShipxyAPI.trackDrawSymbol | 在地图上交互式绘制/编辑/展示/删除航线 |
| 船位回放服务 | ShipxyAPI.areaPlayService | 指定区域、指定时间段的船位回放 |
| 区域船舶轨迹回放服务 | ShipxyAPI.AreaTrackReplayService | 区域内船舶轨迹回放任务面板 |
| 船舶检索服务 | ShipxyAPI.seachShipService | 内置船舶检索输入框 |
| 历史航次服务 | ShipxyAPI.voyageService | 查询船舶当前/历史航次数据 |
| 参数 | 类型 | 说明 |
|---|---|---|
| map | L.Map | 地图对象 |
| options | Object | 设置信息 |
| items | array | 航线节点数组(非必填),见 1.3 节 |
L.TrackDrawSymbol 航线绘制对象。| 参数 | 说明 |
|---|---|
| callBack | 绘制/编辑回调函数,function (item) {},item 为当前航线节点数组数据 |
| unit | 航程单位,如 "nm"(海里) |
| symbol | 航线标识前缀,如 "ABC_"(节点编号显示为 ABC_1、ABC_2 …) |
| lineColor | 航线颜色,如 "#E000BB" |
| 字段 | 是否必填 | 说明 |
|---|---|---|
| lat | 必填 | 纬度 |
| lng | 必填 | 经度 |
| id | 非必填 | 节点 ID |
| name | 非必填 | 节点名称 |
| cog | 非必填 | 航向 |
| 方法 | 说明 |
|---|---|
| drawTrack() | 进入绘制模式,在地图上逐点单击绘制航线 |
| editLine() | 进入编辑模式,可拖动调整已有节点 |
| showTrack() | 只读模态展示当前航线(绘制"完成"态) |
| showTrack(items) | 只读模态展示指定航线数据 |
| removeTrack() | 删除航线 |
| 方法 | 说明 |
|---|---|
| setItemTextById({id, caText, pDistanceText, markerText}) | 修改单个轨迹点文字展示 |
| setItemTextByTextItems([{id, caText, pDistanceText, markerText}, ...]) | 批量修改多个轨迹点文字展示 |
L.AreaPlayService。| 参数 | 默认值 | 说明 |
|---|---|---|
| playSpeed | 60 | 播放倍速,播放秒数 = 真实秒数(如 60 表示 1 秒播放 60 秒数据) |
| beginTime | 0 | 开始位置(毫秒),0 表示从起始位置开始 |
| playCallBack | null | 播放时间后回调 |
| minTime | 0 | 开始时间,秒(Unix 时间戳) |
| maxTime | 0 | 结束时间,秒(Unix 时间戳) |
| getDataByURL | "" | 数据获取 URL |
| area | "" | 区域,整数型经纬度逗号分割字符串 |
| areaId | "" | 区域 ID |
area 为整数型经纬度逗号分割字符串,即经纬度乘以 10 的 6 次方取整后,按 经度,纬度 成对排列、逗号连接,依次给出区域多边形的各顶点。例如:"121534582,31361372,121630627,31361372,121630627,31416852,121534582,31416852"ShipxyAPI.AreaReplayService。初始化后通过 map.areaTrackReplayService 访问。| 参数 | 默认值 | 说明 |
|---|---|---|
| defaultPlay | — | 是否默认播放(示例为 false) |
| isVisiableWithNoSignal | false | 设置船舶无信号是否可见,默认:不可见 |
| isVisiableOutOfBounds | false | 设置船舶超过视图范围是否可见,默认:不可见 |
| isVisiableShipTrack | false | 设置轨迹是否可见,默认:不可见 |
| 参数 | 说明 |
|---|---|
| areaStyle | 区域样式,如 {color: "red", fillColor: "rgba(255,0,0,0.2)", weight: 1},支持 dashArray |
| maxSupplementPointInterval | 最大补点间隔,单位 s(示例 1800) |
| shipTrackMaxInterval | 轨迹最大显示间隔时间,单位 s(示例 1800) |
| shipTemplaterZoom | 船舶缩放比例(示例 1.0) |
| openCallback | 打开任务面板回调 |
| closeCallback | 关闭任务面板回调 |
| afterInitReplayData(hasData) | 数据加载完成后回调,hasData 表示是否有数据 |
| startReplayCallback | 开始回放回调 |
| closeReplayCallback | 关闭回放回调 |
| fullScreenReplayCallback | 全屏按钮回调 |
| shipListClickCallback(mmsi) | 船舶列表点击回 调,返回 mmsi |
| isCallDrawFeature | 是否调用绘制功能(示例 false) |
| 方法 | 说明 |
|---|---|
| openCreateTaskLayer() | 打开"新建回放任务"面板,用户在地图上圈选区域并设置时间段 |
| 参数 | 类型 | 说明 |
|---|---|---|
| map | Map | 地图对象 |
| divid | string | div 容器 ID(检索输入框渲染到该容器内) |
| options | Object | 配置信息 |
| 参数 | 说明 |
|---|---|
| itemClickCallBack | 点击结果回调函数,返回:mmsi |
itemClickCallBack 并返回该船 MMSI。map.voyageService 访问。| 方法 | 说明 |
|---|---|
| getCurrentByUrl(mmsi, callback) | 查询当前航次数据;mmsi 为船舶 MMSI,callback(result) 接收查询结果 |
| getHisByUrl(mmsi, btime, etime, callback) | 查询历史航次数据;btime/etime 为起止时间,callback(result) 接收查询结果 |
new ShipxyAPI.Map("map", {ak: "您的密钥"}) 创建地图之后初始化;密钥占位符 您的密钥 需替换为实际申请的 ak。trackDrawSymbol 与 seachShipService 的方法名为小写开头(与官方文档保持一致,注意拼写:seachShipService 中的 "seach" 为官方命名,并非笔误)。drawTrack() 之前必须先创建 ShipxyAPI.trackDrawSymbol(_map, options) 对象;showTrack(items) 用于数据回显时,items 中 lat/lng 为必填字段,缺失会导致节点无法绘制。callBack 拿到节点数组后自行存储(如提交到后端),需要回显时再调用 showTrack(items)。areaPlayService 的 area 参数是整数型经纬度(度 × 10^6 取整),不是浮点经纬度;minTime/maxTime 单位为秒,而 beginTime 单位为毫秒,注意区分。areaPlayService 需要配套的数据接口(getDataByURL),示例中的内网地址 //192.168.1.22:8083/AreaPlay/GetData 仅为演示,需替换为实际部署的数据服务。AreaTrackReplayService 初始化后不会自动弹出任务面板,需调用 map.areaTrackReplayService.openCreateTaskLayer() 打开。position: relative; z-index: 888),否则可能被地图遮挡。callBack: function (item) {} 中接收,item 即航线节点数组(含 lat/lng/cog 等字段),可保存后在需要时用 showTrack(items) 回显。setItemTextById(单个)或 setItemTextByTextItems(批量)方法,传入 {id, caText, pDistanceText, markerText}。afterInitReplayData(hasData) 回调判断是否加载到数据;若 hasData 为 false,检查圈选区域与时间段内是否确有船舶、以及密钥是否具备区域回放权限。"yyyy-MM-dd HH:mm:ss" 格式),具体以服务端接口要求为准。