适用版本:船讯网海图 GIS 平台 ElaneMap H5 API 3.5 前置阅读:建议先阅读《7.1-快速入门:从注册到接入》《7.2-地图引擎基础:地图控制与业务绘制》,了解地图初始化、密钥(ak)配置及 Leaflet 基础操作后再阅读本篇。
ShipxyAPI.ShipService(map, options),底层实现类为 CanvasShipService(船位展示服务实现类)。| 概念 | 说明 | 开关参数(默认值) |
|---|---|---|
| 区域船 | 地图当前可视范围(或由 bounds 指定范围)内的全部船舶。服务按地图视野自动向数据接口检索船位并定时自动刷新,是"看一片海域"的模式。 | enableAreaShip,默认 true |
| 船队船 / 关注船 | 用户自己维护的一批重点关注船舶(例如自己公司的船队),通过 addFleetShips 添加到地图上,无论是否在视野内都会置顶突出显示,并自动刷新。 | enableFleetShip,默认 true |
| D+船 | D+ 船位数据(一类补充船位数据源)展示的船舶,默认不开启,可通过 setEnableDShip 开启,颜色由 dShipColor 控制。 | enableDShip,默认 false |
enableAreaShip: true, enableFleetShip: false)用于全海域监控;只开船队船(enableAreaShip: false, enableFleetShip: true)用于自有船队监控。map.shipsService 也会被自动实例化,两者指向同一个服务对象:| 参数 | 类型 | 说明 |
|---|---|---|
| map | Map | 地图对象(new ShipxyAPI.Map(...) 的返回值) |
| options | Object | 配置信息,见第 2 节 |
map.shipsService)。| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| isAutoUpdateSrvtime | Object | true | 是否自动更新 srvtime |
| enableAreaShip | Object | true | 是否自动刷新区域船 |
| enableFleetShip | Object | true | 是否自动刷新关注船(船队船) |
| enableDShip | Object | false | 是否自动刷新 D+船 |
| enableTracks | Object | true | 是否显示近期轨迹 |
| enableSelectedShip | Object | false | 是否自动刷新选中船 |
| delayTime | Object | - | 刷新间隔时间,单位:毫秒 |
| bounds | Object | 地图可视范围 | 指定区域船的显示区域 |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| zoomLevel_data | Object | 9 | zoom 小于等于该值时,不检索数据 |
| zoomLevel_base | Object | 9 | zoom 大于该值时,用于船舶分组:baseShips |
| topLabelZoom | Object | 1 | 顶层船从第几级开始显示标签 |
| generalLabelZoom | Object | 13 | 普通船从第几级开始显示标签 |
| weixingLabelZoom | Object | 1 | 卫星船从第几级开始显示标签 |
| shipSizeZoom | Object | 1 | 船舶缩放比例 |
| drawBaseShipsGridZoom | Object | [] | 级别,0.1° 网格显示船舶数量限制级别 |
| drawBaseShipsGridMax | Object | [] | 数量,0.1° 网格显示船舶数量限制数量,大于 0 生效 |
| drawBaseShipsGridSize | Object | [](默认 0.5) | 缩放级别对应的网格大小 |
| drawBaseShipsGridMaxCount | Object | 0 | 绘制船大于该数量时,开启网格抽稀绘制,大于 0 生效 |
| areaShipsDataGridSize | Object | 0.05 | 网格化存储的网格大小 |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| lableRotate | Object | undefined | 标签旋转角度 |
| lableTxtColor | Object | ["#000","#fff"] | 船舶名称文字颜色 |
| lableFont | Object | ["'600 12px Arial'", "'500 12px Arial'"] | 船舶名称文字字体 |
| lableLineColor | Object | ["#000","#000"] | 船舶名称文字线框颜色 |
| lableTxtColorMapTypeDark | Object | ["MT_SATELLITE", "MT_ESRI", "MT_WEIRUANWEIXING"] | 深色瓦片下船舶名 称文字颜色的适配定义 |
| dShipColor | Object | #ff6347 | D+船颜色 |
| 参数 | 默认值(示例注释) | 说明 |
|---|---|---|
| lableLinefillColor | [null,null] | 标签框内填充颜色 |
| obliqueLineColor | [null,null] | 船舶名称斜线颜色 |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| getAreaShipsCallBack | Object | undefined | 区域船外部数据回调,返回 CanvasShip 对象数组。设置后区域船数据可由外部数据源提供 |
| drawShipsEndCallBack | Object | undefined | 绘制区域船完成后回调,返回对象 {count: number}(本次绘制的船舶数量) |
| shipOptions | Object | - | 船舶模型设置 |
| tooltip_fields | Object | - | tooltip 显示字段设置 |
| monitorShips | Object | - | 安装有视频监控的船舶列表(MMSI 列表) |
resetShipColorCallBack 回调(示例中以注释形式给出):resetShipColorCallBack: function (ship) { return "red"; },用于按船自定义重设区域船颜色,返回的颜色值将作为该船的绘制颜色。您的密钥 替换为在船讯网申请的 API Key(ak);示例中的 MMSI 均为示例 MMSI,请替换为您账号下有权限查询的船舶。drawShipsEndCallBack 在每一帧区域船绘制完成后触发,data.count 为本次绘制的船舶数量。addShips 添加的船舶必须包含必填属性:shipid、mmsi、lat、lng。setSelectedShip 接受 shipid 字符串或 {shipid: shipid} 对象。addShips 还是 addFleetShips,CanvasShip 船舶对象的必填属性均为 shipid、mmsi、lat、lng;缺少任一必填项,该船无法被正确绘制。lat/lon 为 10⁶ 倍整数,hdg/cog 为 100 倍,width/length 为 10 倍,示例中已做换算,接入时请注意。c_ship.shiptype = 2 表示按"船队船"类型绘制;c_ship.istop = true 表示置顶显示。addFleetShips 添加后,船队船会按 delayTime 间隔自动刷新船位。ShipxyAPI.seachShipService 内置船舶检索输入框,输入船名或 MMSI 检索船舶,点击结果后调用 locationShip 定位到该船。locationShip(mmsi, isQueryURL) 根据 MMSI 查找船舶并在地图上定位,返回 CanvasShip 对象(查不到返回 null)。isQueryURL 表示缓存中查不到时是否继续查询数据接口,默认 true。name(船名)、callsign(呼号)、imo、mmsi、length(船长,米)、width(船宽,米)、draught(吃水,米)、sog(航速,节)、hdg(船首向,度)、cog(航迹向,度)、lat/lng(经纬度)、newtype(船舶类型编码)、navistatus(航行状态编码)、lastdyn(动态更新时间,Unix 秒)。setSelectedShip(shipid) 程序设置选中船、getSelectedShip() 获取当前选中船 ID、cancelSelectedShip() 取消选中。setFilter(options) 可按船舶类型、航速、船长、国籍、IMO 合法性对显示船舶进行筛选;满足条件的船舶显示,否则不显示。ShipxyAPI.ShipService(...) 的返回值或 map.shipsService 调用。| 方法名 | 功能 | 参数 | 返回值 |
|---|---|---|---|
| addShips(ships) | 添加船舶,更新缓存并绘制 | ships:Array,船舶数组 [CanvasShip],必填属性 shipid、mmsi、lat、lng | - |
| deleteShipByShipID(shipsid) | 通过船舶 ID 删除船 | shipsid:string 或 array,船舶 ID( 字符串、逗号分割的字符串或数组) | - |
| removeAllShips() | 删除所有船舶(清空画布、清空数据缓存) | 无 | - |
| addFleetShips(ships) | 添加关注船 | ships:Array,船舶数组 [CanvasShip],必填属性 shipid、mmsi、lat、lng | - |
| deleteFleetShips(ships) | 根据 MMSI 删除指定的关注船 | ships:Array,船舶 MMSI 数组,为空则删除所有关注船 | - |
| deleteAllFleetShips() | 删除所有关注船船舶(清空画布、清空数据缓存) | 无 | - |
| deleteAllAreaShips() | 删除所有区域船船舶(清空画布、清空数据缓存) | 无 | - |
| locationShip(mmsi, isQueryURL) | 船舶定位,根据 MMSI 查找并在地图定位该船 | mmsi:String;isQueryURL:缓存查不到是否查询数据接口,默认 true | CanvasShip 或 null |
| getShipByMmsi(mmsi, isQueryURL) | 通过 MMSI 获取船舶信息 | mmsi:String;isQueryURL:boolean,缓存查不到是否查询数据接口,默认 true | CanvasShip 或 null |
| getShipByShipid(shipid) | 通过船舶 ID 获取船舶信息(只查缓存) | shipid:String,船舶 ID | CanvasShip 或 null |
| setFilter(options) | 设置船舶筛选条件(类型、航速、船长、国籍、IMO 是否合法) | options:Object,满足条件的船舶显示,否则不显示 | - |
| getFilter() | 获取船舶过滤条件 | 无 | Object |
| addSelectedListener(listener) | 添加选中船舶事件,选中船舶时触发 | listener:function,回调返回 {"shipid":" |