Professional Documents
Culture Documents
亿海蓝(北京)股份技术公司
2015 年 10 月
目录
2 地图操作........................................................................................................................... 3
3 船舶查询及展示 ............................................................................................................... 5
4 轨迹查询及展示 ............................................................................................................. 18
4.1 轨迹查询 ......................................................................................................... 19
5 叠加覆盖物..................................................................................................................... 24
6 船队管理......................................................................................................................... 34
7 气象服务显示 ................................................................................................................. 38
8 典型应用场景 ................................................................................................................. 39
9 常见问题......................................................................................................................... 49
1 船讯网 API 概述
1.1 API 分类
为了方便用户使用船舶数据开展更加个性化的应用,满足更多用户的定制需求,船讯网
数据 API:命名空间为 shipxyAPI,主要提供船舶及船舶轨迹数据获取的接口;
地图 API:命名空间为 shipxyMap,主要提供与地图操作相关的接口。
及轨迹数据展示在地图上,在地图上展开更丰富的应用;其次也可结合用户自身的业务信息,
在地图上开展可视化应用。
数据API-shipxyAPI 地图API-shipxyMap
模糊查询船舶 地图显示及相关操作
根据ID获取船舶数据 叠加点\线\面
根据区域获取船舶数据 船舶叠加及样式更改
根据船队获取船舶数据 轨迹叠加及样式更改
获取船舶航行轨迹数据 添加地图操作相关事件
气象服务显示
亿海蓝(北京)数据技术股份公司
//引用地图API
<script src="http://api.shipxy.com/apdll/ap.dll?api=map&key=用户申请的key&ver=1.3"
type="text/javascript"></script>
//引用数据API
<script src="http://api.shipxy.com/apdll/ap.dll?api=data&key=用户申请的key &ver=1.3"
type="text/javascript"></script>
1.2.3 开发演示
http://api.shipxy.com/APIHTML/demo.htm,请参见示例中的代码,查看具体实现过程。
1.2.4 文档下载
亿海蓝(北京)数据技术股份公司
2.1 地图基本操作
船讯网提供地图 API,方便用户加载地图/海图/卫星图,同时提供地图放大、缩小、平
移、设置中心点,设置缩放级别等功能,以方便用户在加载地图的基础上,开展更加丰富的
应用。具体实现方式如下:
1. 创建 shipxyMap.Map(container,mapOptions)地图实例对象,初始化地图。
container:地图放置的容器(通常是 DIV)
。可以是容器的 id,也可以是容
器元素本身;
mapOptions:MapOptions 实例,地图初始化选项,可设置地图的中心点
经纬度、缩放级别、地图类型(海图/地图/卫星图)
。
2. 地图初始化完毕后,需要调用 shipxyMap.mapReady()函数,以确保地图的正常
使用。
3. 地图初始化及加载示例代码如下:
亿海蓝(北京)数据技术股份公司
4. 实现效果如下:
2.2 监听地图事件
船讯网提供监听地图事件,当事件被出发时,执行监听函数注册事件实现方式如下:
1. 通过 shipxyMap. addEventListener(target,type,listener)方法注册地图事件。需
要在在 shipxyMap.mapReady 添加
target:监听的对象
type:事件类型。监听的事件有地图视图发生变化、地图缩放级别改变、点
亿海蓝(北京)数据技术股份公司
2. 示例代码如下:
shipxyMap.mapReady = function(){
//对地图注册一个地图缩放级别改变后的事件
map.addEventListener(map,shipxyMap.Event.ZOOM_CHANGED,function(event){
//这里写具体响应方法
})
//对地图注册一个地图视图发生变化后的事件
map.addEventListener(map,shipxyMap.Event.MOVE_END,function(event){
//这里写具体响应方法
})
3 船舶查询及展示
1) 基于 shipxyAPI 创建船舶查询实例。
2) 调用 shipxyAPI 提供的查询方法,获取船舶数据。
3.1 查询船舶
船讯网提供多种船舶查询 API,
用于获取船舶数据,所用的 API 为数据 API-shipxyAPI,
可获取船舶 shipID、MMSI、IMO、船名、呼号、船舶类型等信息。
亿海蓝(北京)数据技术股份公司
可以根据船名/呼号/IMO/MMSI,进行模糊搜索,返回包含搜索关键词的一系列船舶
数据。具体实现方式如下:
callback 为回调函数,返回请求是否成功的状态值。如果成功,可获取到
船舶数据数组。
返回的数据格式如下:
3. 模糊查询示例代码如下:
4. 实现效果如下:
亿海蓝(北京)数据技术股份公司
对象。
condition:指定船舶的唯一识别码,或一组唯一识别码,通过单个或多个船
舶 ID 查询船舶数据;
创建指定船舶查询对象示例代码如下:
//方式一:创建单个船舶数据查询对象
var myShips1=new shipxyAPI.Ships(‘215563000’, shipxyAPI.Ships.INIT_SHIPID)
//方式二:创建多个船舶数据查询对象
var myShips2=new shipxyAPI.Ships([‘215563000’,’234514’], shipxyAPI.Ships.
INIT_SHIPID)
2. 通过 Ships.getShips(callback)方法请求船舶数据,请求完毕后,将自动调用
callback 函数,返回请求是否成功的状态值,如果返回成功,获取的船舶数据存储在
Ships.data 属性中。
3. 查询指定 ID 的船舶示例代码如下:
亿海蓝(北京)数据技术股份公司
3.1.3 查询指定区域的船舶
对于港口、码头、口岸、拖轮、海事、引航等港口企事业单位,可通过指定区域范围,
只查询并监控一定范围内的船舶数据。具体实现方式如下:
对象。
例创建;
INIT_REGION。
创建指定区域的船舶查询示例代码如下:
2. 通过 Ships.getShips(callback)方法,请求船舶数据,请求完毕后,将自动调用
callback 函数,返回请求是否成功的状态值,如果返回成功,获取的船舶数据存储在
亿海蓝(北京)数据技术股份公司
3.1.4 查询指定船队的船舶
船队监控的应用主要适合船东、船舶管理、货运代理、物流服务等用户,需要监控某些
特定的船。
船队的组织结构如下:
船舶1
分组1
船舶2
船队
分组2 船舶3
分组n 船舶4
具体实现方式如下:
1. 通过船队管理后台,对船队的船舶进行管理
登录 http://api.shipxy.com/manager/login.htm 船队后台管理工具;
亿海蓝(北京)数据技术股份公司
管理船队船舶分组,并将需要管理的船舶添加在各个分组中;
分组完成后,可基于船讯网提供的 API,实现船队中的船舶在前端地图中的展
示。
列表以完成船队数据的初始化,可通过函数中的回调函数监测成功与否。
3. 船队创建成功后,可通过两种方式获取船舶数据
1) 直接查询船队中的所有船舶数据
查询对象。
condition:指定的船队名称;
亿海蓝(北京)数据技术股份公司
创建指定船队的船舶查询示例代码如下:
B. 通过 Ships.getShips(callback)方法,请求船舶数据,请求完毕后,将自动调
用 callback 函数,返回请求是否成功的状态值,如果返回成功,获取的船舶
2) 通过查询船队分组获取船舶数据:船队中包含多个分组,可通过 API 首先
获取各个分组,然后在获取分组下的船舶数据。
A. 新建 shipxyAPI.Fleet(initCallback)后,如果回调函数返回成功,则返回
([group1,group2,group3,...]),数组中每一条数据代表一个船舶分组;
B. 基于 shipxyAPI.Group.data 获取每一个分组下的船舶数据,数据结构如
下:
[{
shipId:’122345’, //船舶 Id
customName:’yulin’, //自定义船名
remarks:’ddddddd’ //备注
},...]
C. 查询船队分组数据示例代码如下:
if (status == 0) {//初始化船队列表成功
//船队分组数据
亿海蓝(北京)数据技术股份公司
});
4. 实现效果如下:
3.2 船舶显示
获取船舶数据后,为了实现船舶在地图上的叠加显示,需要使用地图 API-shipxyMap,
具体实现方式如下:
1. 利用 shipxyMap.Ship(id,data,options)方法创建船舶覆盖物实例对象。
舶;
options:ShipOptions 实例,船舶的属性信息,可设置船舶的样式等。具体
请参见船舶样式更改。
2. 利用 shipxyMap.Map.addOverlay(overlay,isTop)将船舶叠加在地图上。
亿海蓝(北京)数据技术股份公司
isTop:叠加物是否优先显示在最上面。
3. 示例代码如下:
3.3 船舶定位
船讯网提供船舶定位功能,可将当前选中的船舶定位在地图中心,便于快速查看船舶位
置。具体实现方式如下:
1. 利用 shipxyMap.Map.locateOverlay (overlay,zoom)方法使对应船舶按照指定
的显示级别定位在地图中心。
overlay:当前需要定位到地图上的船舶覆盖物;
zoom:代表定位后船舶显示的缩放级别。
2. 示例代码如下:
map.locateOverlay(ship);//map为已创建的地图对象;ship为已创建的船舶覆盖物对象
3.4 船舶样式更改
根据用户的自身需求,可更改船舶覆盖的样式,包括船舶显示的颜色、透明度、船舶边
线样式、船舶标签内容及样式等,具体实现方式如下:
亿海蓝(北京)数据技术股份公司
都可以在地图上显示船舶;
isShowlabel:控制是否显示船舶的船名标签;
isShowMiniTrack:是否显示船舶的三分钟轨迹;
细等;
fillStyle:FillStyle 实例,控制船舶的填充样式。默认为黄色,完全不透明的
labelOptions:LabelOptions 实例,控制船舶的标签风格。默认是 11 号黑
2. 示例代码如下:
//船舶显示样式
var option = new shipxyMap.ShipOptions();//创建船舶属性实例对象
/*边框样式*/
option.strokeStyle.color = 0xff0000;
option.strokeStyle.alpha = 1;
option.strokeStyle.thickness = 2;
/*填充样式*/
option.fillStyle.color = 0x00ff00;
option.fillStyle.alpha = 1;
/*标签样式*/
//标签线条
option.labelOptions.border = true; //有边框
option.labelOptions.borderStyle.color = 0x000000;
option.labelOptions.borderStyle.alpha = 1;
//标签文字
option.labelOptions.fontStyle.name = "Verdana";
option.labelOptions.fontStyle.size = "12";
亿海蓝(北京)数据技术股份公司
3. 实现效果如下:
亿海蓝(北京)数据技术股份公司
为了在地图上实现船舶的位置信息与属性信息的交互查看功能,提供信息框,实现信息
框的显示与隐藏,将船舶的相关属性信息显示在信息框中;同时用户自身的业务信息也可以
在信息框中进行扩展,实现不同信息的分类管理与查看。具体实现方式如下:
功能,信息框属性主要包括以下内容:
modal: 布尔值,代表信息框是否是模态窗口;
dragbody: 布尔值,代表信息框是否可拖拽;
width:信息框宽度;
position:信息框位置;
title:信息框标题;
亿海蓝(北京)数据技术股份公司
添加船舶点击注册时间,实现点击船舶查看船舶信息的功能。
3. 示例代码如下:
//显示船舶信息框
showShipWin: function (data) {
if (!data) { return; }
service.abortSearchTrack(); //取消轨迹查询,若有正在查询的轨迹
if (!shipWin) {
shipWin = new myApp.XWin({//创建信息框
modal: false,
dragbody: true,
width: shipWinWidth - 20,
position: [document.body.clientWidth - shipWinWidth - 10, 100],
//[left,top]
title: '船舶信息',
content: createShipWinContent(), //信息框内容
onhide: function () {
service.abortSearchTrack(); //取消轨迹查询,若有正在查询的轨
迹
service.unselectShip(shipInfo.shipId); //关闭船舶信息框之后,反
选船舶
shipInfo = null;
}
});
//船舶点击事件处理函数
var addShipClickEvent = function () {
var EventObj = shipxyMap.Event;//创建事件实例对象
//调用API的注册船舶事件接口
map.addShipEventListener(EventObj.CLICK, function (event) {
//从缓存中来获取数据
var shipId = event.overlayId;
var ship = map.getOverlayById(shipId);
if (ship) {
service.selectShip(shipId); //框选
view.showShipWin(ship.data); //显示船舶信息框
}
//请求最新数据来展示
亿海蓝(北京)数据技术股份公司
4. 实现效果如下:
4 轨迹查询及展示
船舶在航行过程中,不断更新船舶动态及航程数据,基于船讯网提供的 API,可以查询
指定船舶指定时间段内的航行轨迹,同时能将轨迹叠加显示在地图上,并能够根据个性化需
求更改轨迹的显示样式及标签等,以更加直观的查看船舶实际的航行状况。
亿海蓝(北京)数据技术股份公司
1) 基于 shipxyAPI 创建船舶轨迹查询实例。
2) 调用 shipxyAPI 提供的查询方法,获取船舶轨迹数据。
图上。
4.1 轨迹查询
固定时间段内的航行轨迹点数据。具体实现方式如下:
1. 通过 shipxyAPI.Tracks()创建轨迹查询工具实例对象。
询并获取某条船舶在某段时间内的航行轨迹数据。
shipId:船舶的唯一识别码;
秒;
秒;
callback:请求的回调函数,返回请求是否成功的状态值。如果返回成功,获
亿海蓝(北京)数据技术股份公司
//月份值表示范围是0‐11
var srtdate = new Date(2012,8,1,0,0)
var enddate = new Date(2012,9,1,0,0)
srtdate = srtdate.getTime() / 1000; //起始时间,秒数
enddate = enddate.getTime() / 1000; //结束时间,秒数
var tracks = new shipxyAPI.Tracks();//创建船舶轨迹查询工具对象
//获取轨迹数据
tracks.getTrack(‘215563000’ ,srtdate, enddate, function (status) {
if (status == 0) {//成功
var data = this.data;//获取数据存储在data中
} else {//失败
}
});
4.2 轨迹显示与定位
获取船舶轨迹数据后,为了实现船舶轨迹在地图上的叠加显示,需要使用地图
API-shipxyMap,具体实现方式如下:
data:shipxyAPI.Track 实例,轨迹数据,包含了轨迹点数据等内容。可通过
轨迹查询获取轨迹数据,具体请参见轨迹查询;
式。具体请参见轨迹样式更改。
2. 通过 shipxyMap.Map.addOverlay(overlay,isTop)方法叠加轨迹。
isTop:叠加物是否优先显示在最上面。
3. 通过 shipxyMap.Map.locateOverlay(overlay,zoom)方法,将指定的轨迹根据轨
亿海蓝(北京)数据技术股份公司
4. 示例代码如下:
5. 实现效果如下:
4.3 轨迹样式更改
用户可根据个性化需求可更改轨迹线的样式、轨迹点的样式、标签样式等。具体实现方
式如下:
亿海蓝(北京)数据技术股份公司
zoomlevels:控制轨迹在地图上所需要显示的级别,默认【1,18】
;
不显示。默认为显示;
isVacuate:在轨迹点数量很大时,为了使轨迹更好的显示在地图上,提供了
稀处理,false 不需要抽稀。默认为需要抽稀;
distance:抽稀间距(像素)
,整数值,当 isVacuate=true 时,此参数才有
效。默认为 50 像素;
pointStyle:PointStyle 实例,控制轨迹点样式。包括轨迹点半径大小、圆点
黑色;
strokeStyle:StrokeStyle 实例,控制轨迹线样式,比如线条颜色、粗细等,
默认为 2 像素粗细的黑色完全不透明线条;
labelOptions:LabelOptions 实例,控制轨迹标签样式,比如字体样式等。
标签内容为轨迹点时间,如需要修改标签内容,可更改 LabelOptions 的
htmlText 属性。
2. 示例代码如下:
亿海蓝(北京)数据技术股份公司
亿海蓝(北京)数据技术股份公司
在实际应用中,结合用户自身的业务,除了船舶数据、轨迹数据等需要监控与查看,有
可能还需要查看港口范围、码头范围等信息,船讯网基于此类需求,提供在地图上叠加点、
5.1 叠加点
5.1.1 叠加点
当用户需要在地图上添加一个/多个标注或添加港口所在地时,需要利用船讯网提供的
API,根据标注所在的位置,将其叠加显示在地图上。具体实现方式如下:
1. 通过 shipxyMap.Marker(id,data,options)创建点覆盖物对象。
时会自动生成一个唯一识别 id;
options:MarkerOptions 实例,为点属性选项信息,可以用来修改点的样式。
未设置时采用默认图标,不显示文本。具体请参见点样式更改。
2. 通过 shipxyMap.Map.addoverlay(overlay,isTop)添加点。
isTop:叠加物是否优先显示在最上面。
3. 示例代码如下:
亿海蓝(北京)数据技术股份公司
5.1.2 点样式更改
的样式,具体实现方式如下:
zoomlevels:控制点在地图上的显示级别,默认为[1,18];
zIndex:控制点在地图上的显示层级。Marker 默认为 3;
URL,可使用用户自己的图片作为标注图显示在地图上,注意 crossdomain.xml
文件。
imagePos:数据类型为 Point。控制图片中心点相对于标注位置的偏移位置,默
认为(0,0)。向左向上偏移为负,向下向右偏移为正;
false 不可编辑;
labeloptions:LabelOptions 实例,设置标签文本以及控制标签风格。
2、 示例代码如下:
亿海蓝(北京)数据技术股份公司
3、 实现效果如下:
不可编辑的点 可编辑拖动的点
亿海蓝(北京)数据技术股份公司
5.2.1 叠加线
当用户需要在地图上添加线条时,需要利用船讯网提供的 API,根据需要显示线条的经
纬度数组,将其叠加显示在地图上。具体实现方式如下:
具体实现方式如下:
1. 通过 shipxyMap.PolyLine(id,data,options)创建线覆盖物对象。
时会自动生成一个唯一识别 id;
options:PolyLineOptions 实例,可定义并修改线覆盖物的样式。具体请参
见线样式更改。
2. 通过 shipxyMap.Map.addoverlay(overlay,isTop)方法在地图上添加线覆盖物。
isTop:线叠加物是否优先显示在最上面。
3. 示例代码如下:
亿海蓝(北京)数据技术股份公司
5.2.2 线样式更改
体实现方式如下:
1、 新建 shipxyMap.PolyLineOptions 实例,定义线的样式信息。
zoomlevels:控制线叠加层在地图上所需要显示的级别,默认为[1,18]
zIndex:控制线在地图上的显示层级。PolyLine 默认为 3;
颜色等。默认为 2 像素粗细的黑色完全不透明线条;
线节点的位置,false 不可编辑;
不显示。默认不显示;
labelOptions:LabelOptions 实例,设置标签文本以及控制标签风格。
2、 示例代码如下:
亿海蓝(北京)数据技术股份公司
3、 实现效果如下:
不可编辑的线 可编辑的线
亿海蓝(北京)数据技术股份公司
5.3.1 叠加面
当用户需要在地图上添加港口范围,码头范围时,需要创建面覆盖物,利用船讯网提供
的 API,根据面状覆盖物的覆盖范围,将其叠加显示在地图上。具体实现方式如下:
1. 通过 shipxyMap.Polygon(id,data,options)创建面对象。
options:PolygonOptions 实例,可定义并修改面覆盖物的样式。具体请参
见面样式更改。
2. 通过 shipxyMap.Map.addoverlay(overlay,isTop)方法在地图上添加面覆盖物。
isTop:叠加物是否优先显示在最上面。
3. 示例代码如下:
亿海蓝(北京)数据技术股份公司
5.3.2 面样式更改
体实现方式如下:
1、 新建 shipxyMap.PolygonOptions 对象,可定义面覆盖物样式信息。
zoomlevels:控制面叠加层在地图上所需要显示的级别,默认为[1,18];
zIndex:控制点在地图上的显示层级,默认为 3 级;
strokeStyle:StrokeStyle 实例,控制面覆盖物线条样式。比如线条大小、线条颜
色等;
fillStyle:FillStyle 实例,控制面的填充样式,如填充颜色,透明度等;
位置,false 不可编辑;
默认不显示;
labelOptions:LabelOptions 实例,设置标签文本以及控制标签风格。
2、 示例代码如下:
/*****面显示样式*****/
亿海蓝(北京)数据技术股份公司
/*边框样式*/
opts.strokeStyle.color = 0x000000;
opts.strokeStyle.alpha = 0.8;
opts.strokeStyle.thickness = 1;
/*填充样式*/
opts.fillStyle.color = 0x0000ff;
opts.fillStyle.alpha = 0.6;
/*标签样式*/
//标签线条
opts.labelOptions.borderStyle.color = 0xff0000;
opts.labelOptions.borderStyle.alpha = 0.8;
opts.labelOptions.borderStyle.thickness = 1;
//标签文字
opts.labelOptions.fontStyle.name = 'Verdana';
opts.labelOptions.fontStyle.size = 14;
opts.labelOptions.fontStyle.color = 0xff33cc;
//标签填充
opts.labelOptions.backgroundStyle.alpha = 0.6;
opts.labelOptions.text = '自定义面';
亿海蓝(北京)数据技术股份公司
不可编辑的面 可编辑的面
5.4 监听覆盖物事件
船讯网提供监听覆盖物的事件,当事件被出发时,执行监听函数注册事件实现方式如下:
需要在 shipxyMap.mapReady 添加
type:事件类型。比如监听的事件有点击覆盖物等,具体的事件类型可参见
listener:注册的回调处理函数,当事件被触发时,自动执行此函数。
2. 示例代码如下:
shipxyMap.mapReady = function () {
//调用API的注册点线面事件接口
map.addGraphEventListener(shipxyMap.Event.CLICK, function (event) {
//从缓存中来获取数据
var graphId = event.overlayId;
});
亿海蓝(北京)数据技术股份公司
6.1 添加分组
initCallback:回调函数。初始化船队列表的回调函数,返回请求是否成功的
状态值。
的名称与颜色。
3. 在定义分组及分组船舶后,通过 Fleet.addGroup(group,callback)方法添加分组
及相应的船舶数据。
4. 添加分组及船舶示例代码如下:
newGroup.name = '集箱船队';
newGroup.color = '#FF6437';
newGroup.data = [{
shipId: '412167000',
customName: '香河',
remarks: 'a1'
}, {
亿海蓝(北京)数据技术股份公司
customName: '向欢',
remarks: 'a2'
}];
myFleet.addGroup(newGroup, function
if (status == 0) {//添加新组成功
} else {//失败
})
6.2 添加船舶
如果需要向已有分组添加船舶,可通过以下方式实现:
1. 通过 Fleet.addShip(group,shipObj,callback)方法向已知的分组添加船舶
group:指定分分组
shipObj:需要添加到组内的新船舶,数据结构如下:
{shipId:’123’,customName:’aaa’,remarks:’tttttt’}
callback:添加一条新船之后的回调函数,返回表示是否成功的状态值
2. 示例代码如下:
//myFleet 代表春对列表
//把船舶'412467550'加入集箱船队的分组
myFleet.addShip(myFleet.getGroup('集箱船队),{
shipId: '412467550',
customName: '丰盛油',
remarks: '丰盛油丰盛油'
亿海蓝(北京)数据技术股份公司
if (status == 0) {//添加船舶成功
} else {//失败
});
6.3 修改分组及船舶
1. 通过 Fleet.modifyGroup(group,groupObj,callback)方法修改船队的分组信息。
两个属性;callback:表示修改后的回调函数,返回表示是否成功的状态值
示例代码如下:
myFleet.modifyGroup(myFleet.get
name: '货物船队',//修改为新组名
color: '#66CDAA'//修改为新组颜色
}, function (status) {
if (status == 0) {//
} else {//失败
});
2. 通过 Fleet.modifyShip(shipObj,group,callback)方法修改分组中的船舶信息。
性;group:指定船的分组;callback:表示修改后的回调函数,返回表示是
否成功的状态值
示例代码如下:
亿海蓝(北京)数据技术股份公司
customName: '香河',
remarks: 'a1'
},
myFleet.getGroup('油轮船队'),
function (status) {
if (status == 0){
} else {//失败
});
6.4 删除分组及船舶
1. 通过 Fleet.delGroup(group, callback)方法删除船队的分组信息,同时将删除此分组
下的全部船舶。
group:需要修改的组名; callback:表示删除后的回调函数,返回表示是
否成功的状态值
示例代码如下:
myFleet.delGroup(myFleet.getGroup(‘集装箱船队’),function(status){
if (status == 0) {//删除组成功
} else {//失败
});
2. 通过 Fleet.delShip(shipId,group,callback)方法从组内删除制定的船舶。
shipId:船舶 ID;group:指定船的分组;callback:表示删除后的回调函数,
亿海蓝(北京)数据技术股份公司
示例代码如下:
myFleet.delShip(‘412467550’,myFleet.getGroup(‘集箱船队’),
function (status) {
if (status == 0){
} else {//失败
});
7 气象服务显示
时,在地图上将显示气象/台风/潮汐等天气服务的开启与关闭按钮,点击即可开启气象,再
一次点击则关闭气象。不需要写任何脚本代码。
亿海蓝(北京)数据技术股份公司
8.1 港口业务信息显示
8.1.1 船舶信息框显示业务信息
在实际应用中,用户除了关注船舶船位数据外,还关注自己的业务信息。为了实现
船舶信息与业务信息的集中查看,用户可以自己扩展船舶的信息框中的内容及 tab 页
面,增加调度管理等业务信息内容。
根据用户需求,可添加的业务信息如下:
1. 靠离泊计划
船舶信息框中,可显示船舶靠离泊计划内容,包括中文船名、国籍、上一港、下一
港、进口航次、出口航次、预计抵港、实际抵港、预计离港、实际离港、计划靠泊时间、
计划移泊时间、泊位、代理公司、备注、更新时间。
2. 引航作业
港口的调度与引航是密不可分的,在每一个船舶信息框中,可显示引航作业信息,
包括:中文船名、载重吨、船舶类型、首吃水、尾吃水、计划靠泊时间、计划离泊时间、
引航员、上船时间、下船时间、拖轮、泊位、移泊时间、移泊泊位、备注、更新时间。
3. 拖轮作业
计划拖带时间、拖带地点、引航员登乘点、引航员下船点、备注、更新时间。
4. 船舶作业计划
船舶信息框中,可显示船舶的作业计划内容,包括:中文船名、装/卸货、货名、
亿海蓝(北京)数据技术股份公司
时间、备注、更新时间。
8.1.2 实现方式
用户可根据实际需要扩展船舶信息框中显示的内容,具体实现方式如下:
亿海蓝(北京)数据技术股份公司
击的船舶的 id。
2. 通过当前选中的船舶 id,实现点击船舶后显示相应信息框的功能;同时通过船舶
id 可以获取对应船舶的基本信息及业务信息。
作业计划、船舶作业计划等业务数据,可通过用户自身的业务数据库传入,或者可以允
许有权限的用户直接修改信息框中的业务数据。
8.2 港口码头可视化展示
对于港口相关单位,在多年的生产与管理中积累了大量与位置相关的数据,比如港口码
头堆场等信息的位置,船讯网提供了相应接口,可将用户关注的这些数据以点、线、面的形
式叠加在船讯网海图/地图上,实现可视化展示;同时还可以关联各自的生产作业信息,方
便用户在地图上交互查看位置信息与生产作业信息,直观查看当前码头、堆场、仓库等数据
的地理分布及业务信息等需求。
8.2.1 码头数据展示
在地图上可叠加显示码头各种资源信息,具体叠加的信息如下:
港口:可查看港口地理位置、气象、水文,规模、能力等信息;
亿海蓝(北京)数据技术股份公司
级、生产信息以及现场动态信息等业务信息;
亿海蓝(北京)数据技术股份公司
堆场:可查看堆场位置、堆场面积、堆存能力、堆场类别等信息;
亿海蓝(北京)数据技术股份公司
储罐:查看储罐所属公司、容量、功能、最大承重等;
亿海蓝(北京)数据技术股份公司
积、备注等;
航道:可查看航道位置、航道名称、航段名称、航段编号、航道描述、航段起点、
航段终点、航段水深、最浅水深、航段长度等;
亿海蓝(北京)数据技术股份公司
8.2.2 视频展示及调用
为了便于监控港口码头的现实情况,通常在港口码头部署摄像头,可实时监控港口码头
的实际情况。船讯网提供接口,可以在地图上显示摄像头,查看摄像头分布,同时点击摄像
头可直接调取现场的视频。
亿海蓝(北京)数据技术股份公司
需要在地图上叠加的港口码头摄像头等,可统称为覆盖物,按照船讯网提供叠加物类型,
以上的信息可归属下列分类:
点状物:摄像头、桥吊信息、龙门吊、流机、办公楼宇、闸口等,对应船讯网的
Marker 类;
线状物:轨迹线等,对应船讯网的 PolyLine 类;
面状物:港口、码头、泊位、锚地、堆场、仓库、航道、储罐等,对应船讯网的 Polygon
类。
提示:用户可以根据实际的需求定义覆盖物类型。比如当用户只需要显示港口大概位置,
不需要显示港口覆盖区域时,或者当用户只有港口的位置点信息,而没有港区范围信息
利用船讯网提供的 API,将以上港口码头信息叠加在地图上的基本步骤如下:
1. 用户需要具备港口码头的经纬度坐标数据,经纬度对应船讯网的 LatLng(lat,lng)
亿海蓝(北京)数据技术股份公司
点状物:只需要具备一个点的经纬度即可。比如摄像头、闸口的经纬度信息;
线状物与面状物:需要具备一组或几组经纬度坐标串。比如港口的地理区域范
围坐标。
2. 用户准备港口、码头、摄像头在地图上的显示图标,显示样式等。
点状物:比如摄像头在地图上显示的图标。
线状物与面状物:比如港口显示范围的填充颜色、透明度等。
3. 根据船讯网提供的方法,可创建点、线、面对应的实例对象,即实例化 Marker 、
PolyLine、Polygon,比如需要叠加一个摄像头时,可新建一个 Marker。
4. 通过 Map.addoverlay(overlay,isTop)方法,即可将用户自己的港口、码头、摄像
头等信息以定制的样式叠加显示在地图对应位置上。
5. 如果需要显示港口、码头、摄像头对应的业务信息,比如需要调取摄像头的视频信
图标时,可根据摄像头 id 获取视频信息,视频信息由用户提供。
8.3 提醒服务
在实际应用中,用户希望能够及时获取船舶的动态,比如当用户指定的船舶进入警戒线
/警戒区域/港口时,或者船舶驶离用户划定的安全区域/港口时,希望能够及时发出提醒,
舶位置数据,同时与区域坐标进行分析,以此实现此类提醒服务,帮助用户实时监控到动态
事件。
亿海蓝(北京)数据技术股份公司
提醒服务的实现方式如下:
1. 指定需要提醒的船舶:通过船讯网 API,可实时获取指定船舶的位置信息。获取船
2. 用户自定义提醒区域:用户根据实际需求,自定义警戒区域、警戒线、港口等提醒
区域的坐标范围。区域范围需要用户提供。
可利用船讯网提供 Map.addoverlay(overlay,isTop)方法在地图上叠加显示警戒
区域、警戒线或港口范围。
3. 几何运算:将船舶的实时位置信息与警戒区域、警戒线或港口地理位置进行几何分
析,当船舶的位置在警戒区域、警戒线或港口区域范围内时,及时捕捉到船舶信息。几
何运算部分需要用户代码实现。
4. 用户定义提醒方式:通过代码实现将捕捉到的船舶信息,发送到邮箱或手机中。
提示: 到港提醒暂无接口,需要用户对比船舶位置与区域的范围才能实现。
9 常见问题
地部署?
a) 替换 key:
编辑 FleetMonitor 与 RegionMonitor 目录下的 index.htm 文件,
亿海蓝(北京)数据技术股份公司
参考 http://jingyan.baidu.com/article/3065b3b6e5becdbecff8a4d5.html 部署;
部署完毕访问:http://127.0.0.1/index.htm ,或者通过域名/IP 访问
Tomcat 部署:
webapps 目录下;
部署完毕访问:http://localhost:8080/FleetMonitor/index.htm ,或
者通过域名/IP 访问
2. 用户自有数据(北斗、海事等)能否调用接口显示在地图上?
3. 船舶信息面板可以支持定制吗?
船讯网完全开放船舶信息面板,用户可以根据需求,任意增加信息面板中的 tab
页。
4. 网站服务端需要集群部署,应如何使用船讯网 API?
将集群部署的每台服务器的地址发送船讯网,
由船讯网将 key 与服务器进行绑定。
亿海蓝(北京)数据技术股份公司