Mapbox 地图教程
Mapbox 地图使用教程
Mapbox 地图初始化
本文主要针对于使用本地 GeoJSON 数据创建地图服务, 最终目的是使用本地 WebServer 启动静态地图页面, 如果需要使用 Mapbox 线上资源, 请参考 Mapbox 线上示例
完整示例 mapbox-sample.zip
创建 HTML 引入资源
打开编辑器, 创建 index.html
, 并生成基础 HTML 结构.
1 |
|
引入 mapbox-gl.js
和 mapbox-gl.css
文件, 由于官方的资源库连接速度较慢, 这里使用 BootCDN
的 CDN 服务.
1 | <!DOCTYPE html> |
由于本文目的在于使用本地 WebServer 启动地图页面, 需要将上述文件下载到本地, 与 index.html 放在相同目录下, 并修改 HTML 文件.
1 | <!DOCTYPE html> |
创建地图容器
在 HTML 文件 body
标签中间增加
1 | <!DOCTYPE html> |
head 标签里增加 map 的样式表
1 | <!DOCTYPE html> |
地图初始化
当前目录创建 index.js
, 并在 HTML 文件中引入
1 | <!DOCTYPE html> |
在 index.js
文件中增加地图初始化定义
1 | // index.js |
使用浏览器打开 index.html, 此时显示为一片蓝色背景的地图
使用本地 GeoJSON 数据
下载地图资源
Mapbox 使用本地数据时, 需要引入
- 地图资源 maps.zip. 这里使用大熊猫基地的地图数据作为示例.
- 英文字体包 font.zip. 汉字字体可以使用页面字体加载, 英文字体必须通过 glyphs 加载.
- 地图雪碧图 sprite.zip. 通常是一个项目使用一组雪碧图, 包含原始大小和 2x 的图片与 json 文件.
雪碧图的生成参考 Mapbox 雪碧图制作 教程.
下载上述文件并解压到前文的根目录下, 此时的目录结构如下, font 目录下为形如 0-255.pbf
的多个 pbf 文件.
下载安装 serve 用于启动本地 WebServer
需要安装 nodejs.
1 | $ npm i -g serve |
在当前目录打开命令行, 输入
1 | $ serve |
在本地启动了一个 WebServer, 监听 5000 端口, 默认打开当前目录下的 index.html 文件.
在浏览器中打开 http://localhost:5000, 可以看到与前文相同的页面
增加地图数据源
修改 index.js 文件, 修改 sources 的值
1 | // index.js |
增加地图样式
加载数据源后, 依然无法看到实际的地图显示, 这是因为还没有添加需要显示的面图层, 增加 layers 中图层
1 | // index.js |
刷新展示页面, 依然只有地图显示.
由于地图的默认中心设置在 [0,0], 并未处于数据源的中心, 需要在 map
的参数中增加 zoom
, minZoom
, maxZoom
, center
属性
1 | // index.js |
刷新页面, 展示结果如下, 此时可以使用鼠标拖动与缩放地图
此时刷新页面, 会提示出错
增加 glyphs 与 sprite 路径
需要指定样式使用的字体包路径, 在 style 中添加属性 glyphs
1 | // index.js |
可以看到文字已经加入地图上, 但图标还未显示成功, 使用相同的方法, 在 style 中增加属性 sprite
1 | // index.js |
解决图标路径 BUG
刷新页面, 无法加载地图, 报错 Unable to parse URL object
Mapbox 无法解析相对路径下的 sprite 路径, 需要修改 sprite 属性, 使用当前页面路径进行填充.
1 | // index.js |
此时的地图展示如下
完整 index.js 文件如下
1 | // index.js |