MapBox+iServer构建地图服务

最近终于闲下来,偷偷做点自己的项目。于是向表弟勒索了支付宝账号,开了个学生服务器。接下来搞点事情。去Github上转一转,遭遇一只叫MapBox的开源项目(附上GitHub地址 https://github.com/mapbox/mapbox-gl-js)。发现MapBox渲染的地图效果还不错,但是由于是国外的服务器,数据服务完全访问不到,于是开始了步一个构建地图服务的不归路。走了很多弯路,下面直接挑干货。
1.下载MapBox官网的MapBox-gl的Demo 会发现相应的代码

<script>
    mapboxgl.accessToken = 'pk.eyJ1IjoiYW56aGlodW4iLCJhIjoiY2lsdnhjdjN5MDFvMHVia3NpYTlnbmUzaSJ9.twlExCjpR7uwH2IiFC7aDA';
    var map = new mapboxgl.Map({
      container: 'map', // container id
      style: 'mapbox://styles/mapbox/streets-v9', //stylesheet location
      center: [-74.50, 40], // starting position
      zoom: 9 // starting zoom
    });
  </script>

但是Mapbox的服务器访问不了,我们只能找另外的服务了。

2.OpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。OSM也属于瓦片地图服务,支持MapBox的渲染。我们可以从OSM服务器下载相应的瓦片。

"sources": {
  "osm-tiles": {
    "type": "raster",
    'tiles': [
          "http://c.tile.openstreetmap.org/{z}/{x}/{y}.png" 
      ],
    'tileSize': 256
  }
}

mapBox-gl的style支持第三方的资源 可以在style中添加“sources”属性,type指定为“raster” 表示栅格切片数据源。由 Mapbox 托管的数据源,the "url" 值应以 mapbox://mapid形式表示。我们选择用osm托管的数据源。osm链接支持a.tile,b.tile,c.tile(具体区别和应用可维基百科查询)
我还在添加了geocoder插件可用于地图地点的搜索mapbox-gl-geocoder链接
这样我们就可以在服务器上部署一个tomcat项目。如下

地图.png

但是osm的数据源访问的数据有点慢,再搞点事情。

3.iServer 是基于跨平台 GIS 内核的云 GIS 应用服务器,是云端一体化技术的重要组成部分。我们可以用IServer做一个缓存服务。(iServer 是收费的但是可以试用3个月)

docker search iserver  //安装完docker后搜索iserver
docker pull supermap/iserver
docker run --name iserver1 -d -p 1521:8090 -v /home/data:/home supermap/iserver  
// -p表示映射端口 前面表示宿主机的端口 后面表示容器端口  
// -v表示 宿主机和容器的共享文件
// 不要问我为什么用1521ORACAL端口 因为我忘了设置阿里云安全组了 手动滑稽 

进入后配置管理员账号,进入管理员界面

发布服务.png

选择rest服务
缓存.png

SMTiles 表示缓存图层生成sqlite数据库本地文件
然后进入服务列表选择我们刚创建的服务,默认有normal,transport,humanitarian,cycle四种样式
但是没有想要的mapbox样式 于是在服务中配置
QQ截图20170930231748.png

我选择了mapbox的map_outdoor样式
http://c.tiles.mapbox.com/v4/mapbox.outdoors/{z}/{x}/{y}.png?access_token={key}
然后修改js中的链接地址为 http://{ip}:1521/iserver/services/map-OSM/rest/maps/OSM/zxyTileImage.png?z={z}&x={x}&y={y}
重新部署启动tomcat就ok了

总结:
这个地图看看地形还是不错的,玩了好一会地图,缓存文件已经5G了。。。iserver还支持分布式切片服务,可以把切片分布式先下载到本地(= = 我的1G内存40G磁盘9.9元包邮渣服务器还是算了吧,别吐槽我的服务器慢了)还有本来想用水经注万能下载器下一堆切片到服务器,但是一个中国的数据到22层级都快PB级别了还是算了吧。有能力的同学可以试试配个mongoDB试试。
(ps:markdown好强大,都不怎么会用。国庆到了,好好休息,大家国庆快乐。)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在折腾的 web 端的可视化项目,由于相关业务的需要,用到了 Mapbox 这一地图开发的神器。在此先奉上一个...
    彭逸之阅读 6,701评论 12 55
  • 1、店长:团队氛围需要大家共同去营造,目前我们直营店团队人员今年在这一方面有所提升,大家之间的交流更为紧密起来,相...
    松松劲柏阅读 160评论 0 0
  • 第二天当网管,似乎总是没有好运气。 第一天就被一个地痞给教训了一顿,还不能声张,有苦难言。 第二天,凌晨一点,又来...
    王成长阅读 352评论 0 0
  • 2016年7月15日,从学校奔向自己的第一个工作岗位,来到这片土地感觉天蓝蓝的,路空空的,好一副唯美的画面。 刚来...
    哎不可及阅读 592评论 0 0
  • 晨起筑新颜, 日出花已醉。 卷枝藏娇面, 阳艳花已眠。
    弘玥阅读 289评论 2 7