开源方案搭建可离线的精美矢量切片地图服务-3.Mapbox个性化地图定制入门

1.简介

mapbox是一家非常牛的公司,比如像特斯拉、DJI大疆创新、孤独星球、Airbnb、GitHub、Cisco、Snap、飞猪、Keep、Bosch这些在国内外各自领域中响当当的企业都是它的客户。专注于帮助企业打造定制化地图应用的Mapbox就是这样一家“你看不见我,但我无处不在”的企业。可以开发和定制web、android、IOS、VR、无人驾驶、甚至是游戏地图场景等。

mapbox-gl是Mapbox一款开源Web地图服务解决方案,用于搭建精美的地图服务,可以免费创建并定制个性化地图的网站。他最大的优点就是可以使用类似于css的样式来描述地图,并提供类似于photoshop的图像界面来设计和生成精美的样式。我们本篇主要讲一下Mapbox在Web地图中的应用。

2.Mapbox入门

1.打开向导页:https://www.mapbox.com/install/,选择开发平台SDK,

2.选择Mapbox GL js 方式,第一种为CDN在线模式,类似于引用jquery一样,我们也可以下载下来。第二种为模块化js搭建,可使用webpack等模块化工具搭建。

3.搭建第一个页面。

<!DOCTYPE html>
<html>
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <title></title>
     <meta charset="utf-8" />
     <style>
         html, body {
             padding: 0;
             margin: 0;
             height: 100%;
             overflow: hidden;
         }

        #map {
             height: 100%;
             z-index: 0;
         }
     </style>
     <script src=‘https://api.mapbox.com/mapbox-gl-js/v0.44.2/mapbox-gl.js‘></script>
     <link href=‘https://api.mapbox.com/mapbox-gl-js/v0.44.2/mapbox-gl.css‘ rel=‘stylesheet‘ />
</head>
<body>
     <div id=‘map‘></div>
     <script>
         mapboxgl.accessToken = ‘pk.eyJ1IjoiYXR0dWluZyIsImEiOiJjamNham4ycTgwZzVkMndzM2lzYTJtN2VjIn0.kB9yWdGNuo7_oi3brXX4-A‘;
         var map = new mapboxgl.Map({
             container: ‘map‘,
             style: ‘mapbox://styles/mapbox/streets-v10‘
         });
     </script>
</body>
</html>

配色非常舒服的地图界面,通过js代码分析可以看出最核心的代码就是  style: ‘mapbox://styles/mapbox/streets-v10‘,他包含了所有的地图样式。

3.Mapbox进阶

入门例子中style样式都封装到了一起,下面这个例子展示如何将style分解,为后面离线部署提供解决方案,具体可以查看一下style api.

<!DOCTYPE html>
<html>
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <title></title>
     <meta charset="utf-8" />
     <style>
         html, body {
             padding: 0;
             margin: 0;
             height: 100%;
             overflow: hidden;
         }

        #map {
             height: 100%;
             z-index: 0;
         }
     </style>
     <script src=‘https://api.mapbox.com/mapbox-gl-js/v0.44.2/mapbox-gl.js‘></script>
     <link href=‘https://api.mapbox.com/mapbox-gl-js/v0.44.2/mapbox-gl.css‘ rel=‘stylesheet‘ />
</head>
<body>
     <div id=‘map‘></div>
     <script>
         mapboxgl.accessToken = ‘pk.eyJ1IjoiYXR0dWluZyIsImEiOiJjamNham4ycTgwZzVkMndzM2lzYTJtN2VjIn0.kB9yWdGNuo7_oi3brXX4-A‘;
         var map = new mapboxgl.Map({
             container: ‘map‘,
             style: {
                 "version": 8,
                 "name": "Mapbox Streets",
                 "sprite": "mapbox://sprites/mapbox/streets-v8",
                 "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf",
                 "sources": {
                     "mapbox-streets": {
                         "type": "vector",
                         "url": "mapbox://mapbox.mapbox-streets-v6"
                     }
                 },
                 "layers": [
                     {
                         "id": "water",
                         "source": "mapbox-streets",
                         "source-layer": "water",
                         "type": "fill",
                         "paint": {
                             "fill-color": "#00ffff"
                         }
                     }
                 ]
             }
         });
     </script>
</body>
</html>

api解析:

1.version:这个JS SDK对应版本必须为8。

2.name:样式的命名。

3.sprite:将一个地图涉及到的所有零星图标图片都包含到一张大图中去,我们看一下streets-v8的sprite图片。


4.glyphs:.pbf格式的字体样式,例如微软雅黑等字体库。

5.sources:图层的资源文件,可以支持矢量切片、栅格、dem栅格、图片、geojson、视频等格式。

6.layers:是对每个图层样式的描述,这里就是对地图样式渲染的关键,可以做很多精美的设计。

写到这里我们还有一个疑问   mapboxgl.accessToken 这个accessToken 是干什么的?其实Mapbox提供了在线样式的编辑,以及矢量数据上传,图标的整合等,这个accessToken 其实是为了与你上传到他们服务器的数据做关联,如果我们不依赖他的在线资源,我们完全可以不使用这个accessToken 。

4.Mapbox离线部署

通过上面的分析,mapbox-gl.js、mapbox-gl.css下载到本地就行。离线部署现在主要的问题是首先有自己的矢量切片文件,上一节我们讲过如何发布矢量切片服务,其次有个glyphs字体文件,后面文章我会提供一个微软雅黑的.pbf格式的字体库,以及我获取.pbf字体库的方式。剩下的就是编写自己的地图样式了。

5.总结

这一篇主要讲了一下Mapbox的基础,以及对离线部署的分析,下一篇讲一下我们之前提到的项目实现。

待续。。。。。。。。。。。。。。。。。。。。。

作者:ATtuing

出处:http://www.cnblogs.com/ATtuing

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

原文地址:https://www.cnblogs.com/ATtuing/p/9098612.html

时间: 2024-08-29 09:55:14

开源方案搭建可离线的精美矢量切片地图服务-3.Mapbox个性化地图定制入门的相关文章

开源方案搭建可离线的精美矢量切片地图服务-1.开篇(附成果演示地址)

先不说废话直接上地址:(所有东西都在阿里云的共享云虚拟主机上,访问地图可以会有点慢,请多多包涵). 01:中国地图:http://test.sharegis.cn/mapbox/html/3china.html 02:德国-德累斯顿市:http://test.sharegis.cn/mapbox/html/6germany.html 1.技术路线 本系列教程主要使用的开源技术有下面三点 1.基于postgresql数据库的postgis空间数据插件,主要存储空间地理信息,也可加快矢量切片的速度.

开源方案搭建可离线的精美矢量切片地图服务-6.Mapbox之.pbf字体库

项目成果展示(所有项目文件都在阿里云的共享云虚拟主机上,访问地图可以会有点慢,请多多包涵). 01:中国地图:http://test.sharegis.cn/mapbox/html/3china.html 02:德国-德累斯顿市:http://test.sharegis.cn/mapbox/html/6germany.html 1.为什么要使用.pbf格式的字体库 .pbf全称Protocal Buffers,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数

开源方案搭建可离线的精美矢量切片地图服务-7.Arcgis Pro企业级应用

1.前言 上篇讲.pbf字体库的时候说到我们使用的字体通过Arcgis Pro 生成,Arcgis Pro样式基于Mapbox做的矢量切片地图渲染.这篇主要讲一下Arcgis Pro矢量切片生成的的具体方法,可以看一下企业级的矢量切片地图对比我们使用Geoserver进行切片的优点. 2.Arcgis Pro介绍 Arcgis Pro是esri公司推出新版arcgis系列软件.企业级矢量切片地图服务应用是新版本中新增的核心功能.矢量切片是区别于传统版本的Arcgis Server地图服务的要点,

搭建可离线的精美矢量切片地图服务

1.PostGIS简介 PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象.空间索引.空间操作函数和空间操作符.同时,PostGIS遵循OpenGIS的规范.我们项目中主要使用它来保存原始矢量数据. 2.Geoserver简介 GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新.删除.插入操作,通过 GeoServer 可以比较

Nginx+ffmpeg的HLS开源server搭建配置及开发具体解释

本文概述: 至眼下为止.HLS 是移动平台上很重要并十分流行的流媒体传输协议.做移动平台的流媒体开发,不知道它不掌握它 .真是一大遗憾.而HLS的平台搭建有一定的难度,本文针对对该方向有一定了解的朋友,将方案实施中的一些细节和流程进行分享交流.本文介绍了.使用开源servernginx 搭建 HLS 服务比較具体的方案.測试使用 VLC以及JWPlayer播放. 切片器: HLS 是依照切片发送流媒体子块的,切片当然不可少. 编译和使用的命令例如以下,能够參考. 编译m3u8-segment 改

[原创]边缘计算开源方案对比

通过分析对比EdgeX Foundry.K3S.KubeEdge.StarlingX和OpenEdge五个开源边缘计算框架的差异,推荐选择华为开源的KubeEdge边缘计算集群方案来自建边缘计算集群. 一.五个边缘计算开源框架的简介: 1)EdgeX Foundry      Linux基金组织的开源项目.偏重于端侧设备的管理,定位是通用工业IOT边缘计算通用框架,提供了一些设备接入.边缘数据传输等场景的实现,但不具备云上对边缘端的应用和设备的管控.云边协同等智能边缘系统的能力,架构组件之间依赖

企业级开源邮件系统搭建的全过程

企业级开源邮件系统搭建的全过程: 前言:此过程为搭建企业用的邮件系统,在企业里邮件这种通信是必然存在的.当然可以选择微软的Exchange,但现在大部分企业线上跑的系统都是开源的,所以实现这种开源体系的邮件系统也是必然的. 好处:1.开源,就是意味着免费 2.自由,就是可以随意利用组件来实现想要的功能 3.方便,就是随便找台机器装个开源的linux就是部署 4.维护需要专门的人员(此为一点小弊端,不像购买微软的Exchange,可以买服务) 实现所需组件:Postfix+dovecot+Cyru

高可用开源方案Heartbeat vs Keepalived

转:http://www.kuqin.com/shuoit/20140623/340745.html 最近因为项目需要,简单的试用了两款高可用开源方案:Keepalived和Heartbeat.两者都很流行,但差异还是很大的,现将试用过程中的感受以及相关知识点简单总结一下,供大家选择方案的时候参考. 1)Keepalived使用更简单:从安装.配置.使用.维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat2.1.4后拆分成3个子项目,安装.配置.使用

WebGIS开源方案中空间数据的入库、编辑、发布的操作流程

1.前言 本开源方案的构架是:geoserver(服务器)+tomcat(中间件)+postgis(数据库)+uDig(desktop). 本文将主要讲解如何将shp数据通过postgis导入到postgresql中,并且在uDig上进行展示和编辑,然后如何将postgresql中的图层数据通过geoserver进行发布. 2.通过postgis将shp数据入库 2.1环境 需装有postgresql+postgis.安装完成后,在程序目录中可以看到: 2.2. 入库 a. 点击 此工具,会弹出