mapboxGL2离线化应用

作者: 牛老师讲GIS | 来源:发表于2021-09-15 07:37 被阅读0次

概述

mapboxGL升级到2的版本之后,用官方的引用token是必须要有的,为了能够离线使用,我们需要对源码做一定的修改后编译,本文讲述如何进行mapboxGL的离线应用。

效果

image.png

实现

  1. clone代码
git clone https://gitee.com/lzugis15/mapbox-gl-js.git
  1. 安装依赖
npm install
-- 建议用cnpm,安装速度会快点
cnpm i
  1. 修改源码
    token强制认证是在文件src/ui/map.js中,注释掉2871行的代码this._authenticate()即可。
  2. 编译
- 编译js
npm run build-dev

- 编译css
npm run build-css
  1. 引用测试
    编译完的文件位于dist目录下面,mapbox-gl-dev.jsmapbox-gl.css,在当前目录下新建html文件进行测试,html文件内容如下:
<!DOCTYPE html>
<html>
<head>
    <title>Mapbox GL JS debug page</title>
    <meta charset='utf-8'>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <link rel='stylesheet' href='../dist/mapbox-gl.css' />
    <style>
        body { margin: 0; padding: 0; }
        html, body, #map { height: 100%; }
    </style>
</head>

<body>
<div id='map'></div>

<script src='../dist/mapbox-gl-dev.js'></script>
<script src='../dist/turf.min.js'></script>
<script>
    const MAPTYPE = {
        NAVIMG: 'nav_img',
        NAVLBL: 'nav_lbl',
        NAVVEC: 'nav_vec'
    }

    function getNavTileUrls(lyr) {
        let res = [];
        const dict = {
            'nav_img': 'https://webst0${subdomain}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
            'nav_lbl': 'https://webst0${subdomain}.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}',
            'nav_vec': 'http://webrd0${subdomain}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8'
        }
        for(let i = 1; i < 5; i++) {
            let url = dict[lyr];
            url = url.split('${subdomain}').join(i);
            res.push(url)
        }
        return res;
    }

    const mapStyle = {
        "version": 8,
        "name": "Dark",
        "sources": {
            "osm": {
                "type": "raster",
                "tiles": [
                    'https://tile.openstreetmap.org/{z}/{x}/{y}.png'
                ],
                "tileSize": 256
            },
            "gaode-img": {
                "type": "raster",
                "tiles": getNavTileUrls(MAPTYPE.NAVIMG),
                "tileSize": 256
            },
            "gaode-lbl": {
                "type": "raster",
                "tiles": getNavTileUrls(MAPTYPE.NAVLBL),
                "tileSize": 256
            },
            "gaode-vec": {
                "type": "raster",
                "tiles": getNavTileUrls(MAPTYPE.NAVVEC),
                "tileSize": 256
            }
        },
        "layers": [
            {
                "id": "img",
                "type": "raster",
                "source": "gaode-vec",
                "minzoom": 1,
                "maxzoom": 18
            }
        ]
    };
    var map = window.map = new mapboxgl.Map({
        container: 'map',
        zoom: 3.4,
        center: [104.61023753726323, 35.63101027697721],
        style: mapStyle,
        hash: false,
        maxZoom: 17.2
    });

    map.addControl(new mapboxgl.NavigationControl())
</script>
</body>
</html>

相关文章

  • mapboxGL2离线化应用

    概述 mapboxGL升级到2的版本之后,用官方的引用token是必须要有的,为了能够离线使用,我们需要对源码做一...

  • mapboxGL2中Terrain的离线化应用

    概述 mapboxGL2中比较大的一个更新就是加入了Terrain,可以实现三维的立体效果,本文书接上文“mapb...

  • 离线检测

    离线Web应用概念 离线Web应用,就是在设备不能上网的情况下任然可以运行的应用。 开发离线Web应用步骤 首先,...

  • 3.7 离线应用

    3.7 离线应用 问题一:什么是离线应用? 离线应用是指通过离线缓存技术,让资源在第一次被加载后缓存在本地,下次访...

  • HTML5--离线web应用

    HTML5新增了离线应用,离线应用使得我们可以在网页或应用在没有网络的情况下依然可以使用。离线应用的使用需要以下几...

  • ReactNative打包 - 原理介绍

    一. 项目环境搭建 (1) 初始化项目 (2) 编译并运行应用 其他 打包生成离线 jsbundle react-...

  • IndexedDB

    存储大量结构化数据使用索引来实现对该数据的高性能搜索 为应用创建离线版本

  • 离线应用与客户端存储(23)

    -进行离线检测-使用离线缓存-在浏览器中保存数据 离线web应用,就是设备在不能上网的情况下仍然可以运行的应用。 ...

  • 离线应用

    离线应用其实就是一个URL列表,在该列表中报错HTML,CSS,JavaScript,图片以及其他资源性文件的UR...

  • h5缓存---application应用 h5缓存

    一、何为离线应用 离线应用,故名思议,就是这个应用及时在没有网络的情况下,也可以继续使用,不受影响。applica...

网友评论

    本文标题:mapboxGL2离线化应用

    本文链接:https://www.haomeiwen.com/subject/yozhgltx.html