从前端框架到GIS开发系列课程(25)mapbox基础介绍以及加载第三方底图高德地图的实现

发布于:2025-08-17 ⋅ 阅读:(9) ⋅ 点赞:(0)

我们开始分享WebGIS开发之Mapbox零基础入门教程;学完mapbox基础入门教程之后我们将更新一个基于mapbox+L7的开源项目《智慧机场》详细教程,大家可以关注我后续更新动态!

学习课程之前,需要你具备的前置知识:

1、需要大家掌握基础的 HTML-CSS-JavaScript

2、会vscode的简单操作

没有基础的同学带年纪《智慧校园》的教程补充学习

实战教学|WebGIS开发毕设项目,智慧校园搭建(附项目学习笔记)-CSDN博客https://blog.csdn.net/yaogis888/article/details/150002249?spm=1001.2014.3001.5501

在正式学习mapbox技术栈之前,我们先介绍一下什么是Mapbox

一、什么是mapbox?

mapbox是一个地图框架,不仅提供前端渲染能力,还具备后端服务接口能力。

相较于openlayers,它可构建二维和三维地图,并支持优化导航路线和位置查询等功能。

开发中使用mapbox需引入库文件并设置token,创建地图实例时,需指定容器、加载底图、设置中心位置及缩放级别等。

通过示例代码,可成功在网页上展示地图,并支持3D视图和交互操作。

OpenLayers与Mapbox比较

  1. OpenLayers仅提供渲染能力,而Mapbox提供前后端接口服务能力。
  2. Mapbox对OpenLayers的概念进行了封装,但不影响整体认识。
  3. Mapbox可以构建二维和三维地图,而OpenLayers主要针对二维地图。
  4. Mapbox提供优化导航路线和位置搜索等功能。

二、Mapbox文档结构

Mapbox文档包括maps、navigation、search、data等分类。

  1. maps:渲染相关的数据和功能。
  2. navigation:提供导航路线服务。
  3. search:查询位置和要素的功能。

Mapbox API Reference

API Reference包含

map、property and options、markers and controls、user interaction、sources、event and fence types、geography and geometry、plugins等部分。

  1. map:地图实例和相关配置。
  2. property and options:属性和选项。
  3. markers and controls:标记和控件。
  4. user interaction:用户交互操作。
  5. sources:数据源。
  6. event and fence types:事件和围栏类型。
  7. geography and geometry:地理和几何相关功能。
  8. plugins:官方提供的插件。

三、mapbox中实现地图初始化

一、Mapbox项目实践准备

创建项目目录,并安装npm依赖。

npm init vite

安装Mapbox GL库,并确保使用最新版本。

pnpm i mapbox-gl

准备一个容器元素来放置地图。

width: 100vw
height: 100vh

二、Mapbox地图初始化

引入Mapbox GL库和样式文件。

import mapboxgl from "mapbox-gl";
import "mapbox-gl/dist/mapbox-gl.css";
import "./style.css";
mapboxgl.accessToken =
  "pk.eyJ1IjoiemhvbmdkaxNodW1hIiwiYSI6ImNsNXJoYXR5eTI2bGgzZW53d2d1dWF1c3AifQ.6v0p1M2N0c_xmJW3aA5ZBA";

创建地图实例

// 创建地图实例
const map = new mapboxgl.Map({
    container: "map",
    style: "mapbox://styles/mapbox/streets-v9",
    center: [114.27, 30.59],
    // projection: "globe",
    zoom: 4,
});

四、Mapbox服务加载地图

Projection

可以将globe改为平面或3D效果;

3D地图VS平面地图

3D地图VS平面地图

  • 3D地图VS平面地图
  • style可以理解为默认图层样式。

卫星地图样式

户外地图样式

导航地图样式

底图样式与切换

下面通过编写代码实现下拉框切换不同底图样式,教大家从标准地图到卫星图、户外图等的切换效果,以及如何使用set style API调整默认底图样式。

底图样式:

mapbox内置多种样式,包括standard、spreaddark、navigation等。

这里我们尝试一下切换底图,通过下拉框实现底图样式的切换。

以标准样式为例,创建底图切换按钮:

// 创建地图实例
const map = new mapboxgl.Map({
    container: "map",
    style: "mapbox://styles/mapbox/standard-v10",
    center: [114.27, 30.59],
    projection: "globe",
    zoom: 4,
});

const select = document.getElementById("select");
select.onchange = function () {
    const value = this.value;
    map.setStyle(`mapbox://styles/mapbox/${value}`);
};

标准底图样式:

深夜模式:

五、在mapbox中加载第三方底图如高德地图

需自定义style,包括数据源与图层配置。

主要流程未创建地图实例后,通过定义source加载第三方瓦片服务,如高德地图。将source添加到图层并配置属性,如type、size及resource名称。

最后设置projection为globe及缩放级别、中心点。

第三方底图加载

可以在Mapbox中加载第三方底图,如高德地图。

const map = new mapboxgl.Map({
    container: "map",
    style: {
        version: 8,
        sources: {
            "raster-tiles": {
                type: "raster",
                tiles: [
                    "http://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",
                ],
                tileSize: 256,
            },
        },
        layers: [
            {
                id: "my-tiles",
                type: "raster",
                source: "raster-tiles",
            },
        ],
    },
    projection: "globe",
    zoom: 6,
    center: [114.27, 30.59],
});

加载高德地图不需要使用token,加载成功后,可显示3D地图并旋转。

若有收获,就点个赞吧!

持续更新webgis开发相关技术/面试/就业内容

关注我学习webgis开发不迷路👇👇👇


网站公告

今日签到

点亮在社区的每一天
去签到