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.1 快速入门:从注册到接入

1. 平台简介#

船讯网海图GIS平台(ElaneMap H5)是船讯网面向开发者开放的一套海图地图 JavaScript API。它的底层基于业界广泛使用的开源地图引擎 Leaflet,并在此基础上封装了航运业务所需的各类能力,最终以 H5(浏览器端 JavaScript)的形式对外提供服务。
通过这套 API,你可以在自己的网页或 Web 系统中快速嵌入一张专业的电子海图,并实现以下能力:
海图展示:全球电子海图瓦片渲染,支持缩放、拖动、平移;
多图源切换:海图(MT_SEA)、谷歌地图(MT_GOOGLE)、卫星影像(MT_SATELLITE)一键切换;
船位与轨迹:区域船展示、船队船展示、单船定位、轨迹查询与回放(业务服务类接口,见后续文档);
气象与图层:专业气象、自定义瓦片图层、光栅图叠加;
基础工具:测距、比例尺、鼠标经纬度拾取、鹰眼(小地图)、点/线/面标注绘制等。
由于底层是 Leaflet,开发者可以直接使用 Leaflet 的全部原生能力(L.marker、L.polyline、L.polygon、L.icon 等),船讯网在全局同时暴露了 L(Leaflet 命名空间)与 ShipxyAPI(平台封装命名空间)。

2. 接入流程总览#

从零开始到在页面上看到地图,一共四步:
步骤动作说明
1注册船讯网账号在船讯网注册一个企业/开发者账号
2申请开通海图GIS服务,获取 API 密钥(Key)海图GIS服务为商用服务,需联系船讯网商务/客服开通。开通后您会获得一个 API 密钥(Key),后续所有示例中的 您的密钥 均替换为该 Key
3在前端工程中引入 JS API先引入平台提供的 jQuery,再通过带 k 参数的地址引入 API 主文件
4初始化地图准备一个固定宽高的 <div> 容器,调用 new ShipxyAPI.Map(...) 创建地图
其中第 1、2 步是商务流程,注册申请的具体入口请联系船讯网商务/客服开通;第 3、4 步是纯前端工作,几行代码即可完成,下面详细说明。

3. 引入 JS API#

平台 API 依赖 jQuery,因此需要按顺序引入两个 <script>,都放在页面的 <head> 中:
注意事项:
顺序不能颠倒:API 主文件依赖 jQuery,必须先加载 jQuery;
密钥通过 k 参数加载:把 您的密钥 整体替换为开通服务时获得的 Key,例如 ?k=abc123def456;
引入成功后,页面全局会出现两个对象:ShipxyAPI(船讯网封装类)和 L(Leaflet 原生命名空间),后续所有开发都围绕它们展开。

4. Hello World:第一张海图#

下面是一个完整可运行的 HTML 页面。新建一个文件(如 hello.html),把 您的密钥 替换为您的 Key,用浏览器直接打开即可看到一张全球海图。
逐行要点说明:
new ShipxyAPI.Map("map", {ak: "您的密钥"}):这是平台的入口函数。第一个参数是地图容器的 id 字符串(对应 <div id="map">);第二个参数 options 是配置对象,其中 ak 为授权码,必填,必须与 script 地址里 k 参数使用同一个密钥。options 还有很多可选配置(中心点、缩放级别、各类控件等),详见《02-地图引擎基础:Leaflet控制与绘制》。
返回值 _map 是一个 Leaflet 的 L.Map 实例,因此可以直接调用 Leaflet 原生方法(如 setView、fitBounds、on 等)以及平台扩展方法。
_map.fitWorld():把地图视野调整为"全球视野",即缩放和平移到恰好能完整显示世界地图的状态。如果不调用,也可以通过 options 中的 centerPoint 和 zoom 指定初始视野。

5. 地图容器与页面基础要求#

地图"不显示"的问题,90% 出在容器上,请务必逐条核对:
1.
容器必须有确定的宽度和高度。Leaflet 在初始化时会读取容器的实际像素尺寸,如果 <div> 没有设置宽高(高度默认为 0),地图会渲染失败或一片空白。推荐使用上文 .my-map 的写法:position: absolute; width: 100%; height: 100%;,让地图铺满浏览器窗口。若嵌入在页面局部,请写成固定高度,如 width: 100%; height: 500px;。
2.
容器在初始化时必须已经存在于 DOM 中。请把初始化脚本放在容器 </div> 之后(如示例所示),或放在 window.onload 中执行。
3.
声明 UTF-8 字符集:在 <head> 中加入 <meta charset="UTF-8">,避免页面标题、Popup 中的中文出现乱码。
4.
密钥要同时填两处:script 地址的 k 参数和 options 的 ak 都要替换为您的密钥。
5.
容器建议设置底色:background-color: #A3CCFF 是海图海洋区域的底色,瓦片加载间隙不会出现突兀的白色。
6.
自定义按钮若悬浮在地图上,需设置 z-index(示例中用 888)使其位于地图图层之上。

6. 常见问题 FAQ#

Q1:页面打开了,但地图完全空白/不显示,怎么办?
按以下顺序排查:
1.
打开浏览器开发者工具(F12),看 Console 是否报错 ShipxyAPI is not defined——若是,说明 API 主文件没加载成功,检查第二个 <script> 的地址和 k 参数;
2.
检查地图容器 <div> 是否设置了高度。容器高度为 0 是最常见的原因,请在开发者工具中查看该 div 的实际尺寸;
3.
检查代码中 您的密钥 是否已替换为真实 Key,两处(script 的 k 参数、options 的 ak)都要替换;
4.
检查网络:开发者工具 Network 面板中,看 api.shipxy.com 的请求是否成功(状态码 200)。
Q2:提示密钥无效 / 接口返回鉴权失败?
确认密钥填写完整,没有多空格、引号或截断;
确认您的账号已开通海图GIS服务且服务在有效期内;
密钥状态以开通时船讯网商务/客服提供的信息为准,如有疑问请联系船讯网客服核实。
Q3:地图显示了,但部分瓦片加载不出来(出现占位图)?
平台为每种内置图源配置了 errorTileUrl(瓦片加载失败时的占位图),出现占位图说明对应瓦片请求失败;
先检查本机网络是否能正常访问瓦片服务器域名(如 m12.shipxy.com、mt2.google.cn 等);
若当前缩放级别超出了图源的数据范围(例如卫星图在小比例尺级别无数据),瓦片也会缺失,可调整 minZoom/maxZoom 限制缩放范围;
若大面积瓦片失败且 Console 有 403/鉴权相关报错,通常是密钥问题,按 Q2 排查。
Q4:在 file:// 协议(直接双击打开 html)下地图异常?
部分浏览器对本地文件的脚本和网络请求有更严格的限制,且瓦片地址中使用了协议相对路径(// 开头)。建议把页面放到本地 Web 服务(如 nginx、IIS、http-server 等)下通过 http://localhost 访问,或使用 https:// 的完整引入地址。
Q5:跨域问题需要处理吗?
地图瓦片是图片资源,通过 <img> 加载,不存在跨域限制;
JS API 文件通过 <script> 标签加载,也不受同源策略限制;
只有当您自己用 XMLHttpRequest/fetch 直接调用船讯网数据接口时才可能遇到跨域问题,请优先使用 API 封装好的服务类(如船位、轨迹服务)而不是裸调接口。
Q6:引入 API 后报错 $ is not defined 或 jQuery 冲突?
确认平台的 jquery.min.js 在 API 主文件之前引入;
如果您的工程本身已引入其他版本的 jQuery,可能出现版本冲突,建议统一使用平台提供的版本,或做好 noConflict 隔离。

7. 效果示意#

页面打开并初始化完成后,您将看到:
整个浏览器窗口被一张全球电子海图铺满,海洋区域为浅蓝色,陆地与岸线、等深线、港口地名等海图要素清晰可辨;
初始视野为全球视野(fitWorld() 的效果),即整个世界地图完整呈现在窗口内;
左下角有平台版权信息(Elane Inc.);
您可以按住鼠标左键拖动地图平移视野,滚动鼠标滚轮(或双击)放大/缩小海图,查看任意海域的细节。
海图加载示意.png
至此,您已经完成了平台接入。下一步请阅读《7.2-地图引擎基础:地图控制与业务绘制》,学习初始化参数、内置控件、图源切换与点/线/面标注绘制。
上一页
7 海图GIS平台开发
下一页
7.2 地图引擎基础:地图控制与业务绘制