前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mapboxGL2离线化应用

mapboxGL2离线化应用

作者头像
lzugis
发布2021-12-06 10:30:39
1.6K0
发布2021-12-06 10:30:39
举报

概述

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

效果

image.png
image.png

实现

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

- 编译css
npm run build-css
  1. 引用测试 编译完的文件位于dist目录下面,mapbox-gl-dev.jsmapbox-gl.css,在当前目录下新建html文件进行测试,html文件内容如下:
代码语言:javascript
复制
<!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>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-09-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 效果
  • 实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档