mapbox底图切换

本案例使用Mapbox GL JavaScript库进行底图切换。

1. 引入 CDN 链接

<!-- 引入Mapbox GL JS库 -->
<script src="https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapbox-gl.js"></script>
<!-- 引入Mapbox GL CSS样式 -->
<link
  href="https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapbox-gl.css"
  rel="stylesheet"
/>

2. 创建菜单选项

我们定义一个下拉菜单选项,供我们选择不同的地图底图。

<select name="projection" id="select">
  <option value="streets-v12">streets-v12</option>
  <option value="outdoors-v12">outdoors-v12</option>
  <option value="light-v11">light-v11</option>
  <option value="dark-v11">dark-v11</option>
  <option value="satellite-v9">satellite-v9</option>
  <option value="satellite-streets-v12">satellite-streets-v12</option>
</select>

3. 创建地图

我们创建了一个Mapbox GL JS地图实例,设置了地图的容器、默认的地图风格、中心点坐标、地图级别以及默认的地图投影模式。

const map = new mapboxgl.Map({
  // 在这个对象中,我们填入一些地图相关的参数设置
  container: "map", //地图容器
  style: "mapbox://styles/mapbox/streets-v12", //地图风格,底图数据源
  center: [114.085947, 22.547], //默认注视的坐标点
  zoom: 12, //当前展示的地图级别
  projection: "globe", //地图投影模式
});

4. 设置地球的背景颜色

给地图设置 fog 效果,特别是在地图的视图比较远或者在夜晚地图上的细节不够清晰时,可以使用 fog 效果来提高可见性。

map.on("style.onload", () => {
  map.setFog({});
});

5. 底图切换

select元素添加一个onchange事件监听器。当用户在选择框中更改选项时,地图的样式会根据新选项的值来设置。

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

6. 演示效果

6.1. streets-v12

image-20240227163702198

6.2. outdoors-v12

image-20240227164229037

6.3. light-v11

image-20240227164306278

6.4. dark-v11

image-20240227164333877

6.5. satellite-v9

image-20240227164357971

6.6. satellite-streets-v12

image-20240227164642279

7. 代码实现

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>底图切换</title>
    <!-- 1.引入CDN链接 -->
    <!-- 引入Mapbox GL JS库 -->
    <script src="https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapbox-gl.js"></script>
    <!-- 引入Mapbox GL CSS样式 -->
    <link
      href="https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapbox-gl.css"
      rel="stylesheet"
    />
    <style>
      /* 地图样式 */
      * {
        margin: 0;
        padding: 0;
      }
      #map {
        width: 100vw;
        height: 100vh;
      }
      #select {
        position: absolute;
        left: 10px;
        top: 10px;
        z-index: 3;
      }
    </style>
  </head>
  <body>
    <!-- 2.创建菜单选项 -->
    <select name="projection" id="select">
      <option value="streets-v12">streets-v12</option>
      <option value="outdoors-v12">outdoors-v12</option>
      <option value="light-v11">light-v11</option>
      <option value="dark-v11">dark-v11</option>
      <option value="satellite-v9">satellite-v9</option>
      <option value="satellite-streets-v12">satellite-streets-v12</option>
    </select>
    <div id="map"></div>
    <script>
      // 3.地图显示
      window.onload = () => {
        // 注册token
        mapboxgl.accessToken =
          "pk.eyJ1IjoiY2hlbmdjaGFvODg2NiIsImEiOiJjbGhzcWowMHUwYTNyM2VwNXZhaXhjd3Q4In0.FEh2q7sEW88Z1B5GcK_TDg";
        // 3.1 创建地图实例
        const map = new mapboxgl.Map({
          // 在这个对象中,我们填入一些地图相关的参数设置
          container: "map", //地图容器
          style: "mapbox://styles/mapbox/streets-v12", //地图风格,底图数据源
          center: [114.085947, 22.547], //默认注视的坐标点
          zoom: 12, //当前展示的地图级别
          projection: "globe", //地图投影模式
        });
        // 5.设置地球的背景颜色
        map.on("style.onload", () => {
          map.setFog({});
        });
        // 6.底图切换
        const select = document.getElementById("select");
        select.onchange = (e) => {
          map.setStyle(`mapbox://styles/mapbox/${e.target.value}`);
        };
      };
    </script>
  </body>
</html>
Mapbox底图教程是指提供关于如何使用Mapbox底图的指南和教学资源。Mapbox是一种开源地图平台,提供了丰富的地图数据和功能,可以通过它创建个性化的地图应用。 使用Mapbox底图的第一步是创建一个Mapbox账户并获取访问令牌。在注册和登录后,可以在Mapbox网站上创建自己的地图项目。在项目中,可以选择使用Mapbox的现有底图数据或者上传自定义的地图数据。 底图数据可以是矢量图或栅格图。矢量图是由数学公式描述的图形,可以无限缩放而不失真。栅格图则是由像素点组成的位图,不能无限缩放而且容易失真。根据实际需求,可以选择使用不同类型的底图数据。 一旦选择了底图数据,可以在Mapbox Studio中进行进一步的编辑和样式设定。Mapbox Studio是一个用于创建和编辑地图样式的工具。通过Mapbox Studio,可以调整底图的颜色、线条样式、符号等,以实现自己的设计需求。 在样式设定完成后,可以将地图嵌入到自己的应用程序中。Mapbox提供了SDK和API,使开发者可以在Web、移动和桌面应用程序中使用地图。只需按照相应的文档和教程,将地图集成到自己的应用程序中即可。 总的来说,Mapbox底图教程提供了使用Mapbox创建个性化地图应用的指南和教学资源。通过注册账户、选择底图数据、编辑样式和集成地图到应用程序等步骤,可以实现定制化的地图展示。无论是开发者还是普通用户,都可以通过学习底图教程,快速上手使用Mapbox创建自己的地图应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值