/MapServer-1

离线地图服务

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

这里是MapServer的后端源码

这是一个在需要本地化部署地图服务时,快速建立本地瓦片地图服务的小工具。

比如你部署服务的位置不能访问外网,但是你的前端又需要一个地图控件。或者你需要对地图瓦片进行处理,需要地图色调变成“五彩斑斓的黑色”,美工让你下载切片。那么这个工具可以帮你快速建立这样的瓦片地图服务。

这个后端小工具使用Java、Spring Boot编写。

基本思路为:

  • 将传入的经纬度形式的矩形参数,转换成Web墨卡托形式的矩形参数(CoodUtils.java);
  • 通过转换后的Web墨卡托参数形式的矩形,以及传入的地图类型、地图等级,计算出需下载的切片URL(InitUtils.java);
  • 使用URL得到地图瓦片(HttpUtils.java);
  • 保存至相应位置(FileUtils.java);
  • 请求时返回相应位置的文件(ServerController.java);

支持地图类型为:

  • Google卫星
  • Google矢量
  • Google地形
  • 高德卫星
  • 高德矢量
  • 高德标签层
  • 天地图卫星
  • 天地图矢量
  • 天地图标签层
  • PS:多种类型的瓦片类型可以同时存在。
  • PSS:瓦片保存位置为 ./map。

坐标系:

  • Google与高德使用的大地坐标系为GCJ02,是加过偏的,使用时需要注意转经纬度。
  • 天地图使用的大地坐标系为WGS84,是不加偏的,国家队待遇就是不一样=。=

API简述:

1. 初始化地图(下载切片)

  • /init/initMap POST, 参数为:
  • left : 类型:double, 单位:经纬度, 含义:请求瓦片的左边界
  • right : 类型:double, 单位:经纬度, 含义:请求瓦片的右边界
  • top : 类型:double, 单位:经纬度, 含义:请求瓦片的上边界
  • bottom : 类型:double, 单位:经纬度, 含义:请求瓦片的下边界
  • type : 类型:string, 单位:瓦片类型, 含义:请求瓦片的类型,说明见瓦片类型参数说明
  • level : 类型:int, 单位:瓦片等级, 含义:请求瓦片的等级,说明见瓦片等级参数说明

2. 获取拥有的地图类型、等级、范围

  • /server/config GET, 参数为空

3. 地图服务

  • /server/map/{type}/{x}/{y}/{z} GET, 参数为URL参数,放在请求的路径中:
  • type : 类型:string, 单位:瓦片类型, 含义:请求瓦片的类型,说明见瓦片类型参数说明
  • x : 类型:int, 单位:/, 含义:标准TMS(瓦片地图服务)的x参数
  • y : 类型:int, 单位:/, 含义:标准TMS(瓦片地图服务)的y参数
  • z : 类型:int, 单位:/, 含义:标准TMS(瓦片地图服务)的z参数

其余描述:

  • 见前端Q&A页面。