mapbox 在 vue2 中的使用

2023-10-27

一、Mapbox 在 vue 中的使用

安装 @mapbox/mapbox-gl-geocoder
npm install --save @mapbox/mapbox-gl-geocoder
安装 @mapbox/mapbox-gl-language
npm install --save @mapbox/mapbox-gl-language
安装 mapbox-gl
npm install --save mapbox-gl

图片展示
请添加图片描述

二、代码

<template>
  <div class="map-box-index">
    <div
      id="indexMap"
      :style="{ height: height + 'px', width: width + 'px' }"
    ></div>
  </div>
</template>
<script>
import "mapbox-gl/dist/mapbox-gl.css";
// 引入语言包
import MapboxLanguage from "@mapbox/mapbox-gl-language";
// 搜索控件
import MapboxGeocoder from "@mapbox/mapbox-gl-geocoder";
import "@mapbox/mapbox-gl-geocoder/dist/mapbox-gl-geocoder.css";
const mapboxgl = require("mapbox-gl");
export default {
  name: "indexMap",
  props: {
    height: {
      type: Number,
      default: 310,
    },
    width: {
      type: Number,
      default: 310,
    },
  },
  data() {
    return {
      map: null,
      center: [116.18425567303788, 39.90661201076973],
      mapNewData: {},
    };
  },
  mounted() {
    this.initMap();
    // console.log("@indexmapData", this.mapData);
  },
  watch: {
    /* handler是数据rowValue 发生变化的时候触发的方法 */
    height: {
      immediate: true,
      deep: true,
      handler: function(newVal, oldVal) {
        // console.log("@newVal-null", newVal);
        if (newVal !== null) {
          // console.log("@对话框", newVal);
          this.$nextTick(() => {
            this.initMap();
          });
        }
      },
    },
  },
  methods: {
    initMap() {
      //  console.log('initMap执行了',this.isShowMap);
      mapboxgl.accessToken =
        "pk.eyJ1IjoibHVrYXNtYXJ0aW5lbGxpIiwiYSI6ImNpem85dmhwazAyajIyd284dGxhN2VxYnYifQ.HQCmyhEXZUTz3S98FMrVAQ";
      // eslint-disable-next-line no-unused-vars
      this.map = new mapboxgl.Map({
        container: "indexMap",
        // style: 'mapbox://styles/mapbox/navigation-guidance-night-v2',
        // style: "mapbox://styles/mapbox/satellite-streets-v11",
        // 天地图
        style: {
          version: 8,
          sources: {
            "tian-satellite": {
              type: "raster",
              tiles: [
                "http://t0.tianditu.gov.cn/img_w/wmts?tk=1883a2da124fe27b3c281f9d65356e82&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=tiles",
              ],
              tileSize: 256,
              minzoom: 0,
              maxzoom: 18,
            },
          },
          layers: [
            {
              id: "tian-satellite",
              type: "raster",
              source: "tian-satellite",
              layout: {
                visibility: "none",
              },
              minzoom: 0,
              maxzoom: 22,
            },
          ],
        },
        // center: [104.07, 30.67],
        center: [116.18425567303788, 39.90661201076973],
        zoom: 5,
        // center: [116.4178, 40.222279390523586],
        // zoom: 7.4, // 放大级别
        // pitch: 60,
        // attributionControl: true,
      });
          //  中文设置 (天地图不支持)
     // this.map.addControl(
     //    new MapboxLanguage({
     //     defaultLanguage: "zh-Hans", // zh-Hant
     //   })
     //  );

      // 写法二
      // var language = new MapboxLanguage({ defaultLanguage: 'zh-Hans' })
      // this.map.addControl(language)
      // 1.加载 全屏控件 , 位置 是 'top-left'
      this.map.addControl(new mapboxgl.FullscreenControl(), "top-left");
      this.map.on("load", (e) => {
        this.map.setFog({}); // 设置天气
        // 加载地图的底图 (指定样式图层中布局属性的值。)
        /**
         * layer 要设置布局属性的图层的ID。 (string)
         *  name 要设置的布局属性的名称。 (string)
         * value 布局的值。必须是适合该属性的类型,如Mapbox样式规范中所定义 。 (any)
         *
         */
        this.map.setLayoutProperty("tian-satellite", "visibility", "visible");
        // 在底图之上绘制
        this.map.addSource("myCity", {
          type: "geojson",
          // data:`https://geo.datav.aliyun.com/areas_v3/bound/${adcode}.json`
          // data:`https://geo.datav.aliyun.com/areas_v3/bound/${city_code}_full.json`
          data: "https://geo.datav.aliyun.com/areas_v3/bound/110000_full.json",
        });
        // 加载控件
        // 2.添加导航控件
        this.map.addControl(new mapboxgl.NavigationControl(), "top-left");
        /* 3、添加搜索控件 */
        this.map.addControl(
          new MapboxGeocoder({
            accessToken: mapboxgl.accessToken,
            placeholder: "请输入搜索地址",
            mapboxgl: mapboxgl,
          })
        );
        /* 4、添加比例尺控件 */
        this.map.addControl(new mapboxgl.ScaleControl({}), "bottom-right");
        this.map.addLayer({
          id: "beijing",
          type: "fill",
          source: "myCity",
          layout: {},
          paint: {
            "fill-color": "#f08",
            "fill-opacity": 0.3,
          },
        });
        this.flyTo();
      });
    },
    flyTo() {
      this.map.flyTo({
        center: [116.4178, 40.222279390523586],
        zoom: 5, // 放大级别
        // speed: 0.2,
        // curve: 1,
      });
    },
  },
};
</script>
<style lang="less" scoped>
.map-box-index {
  width: 100%;
  height: 100%;
  //   background-color: pink;
  #indexMap {
    width: 100%;
    height: 100%;
    /deep/ .mapboxgl-canvas {
      // width: 100%;
      // height: 100%;
    }
    /deep/ .mapboxgl-control-container {
      .mapboxgl-ctrl-bottom-left {
        .mapboxgl-ctrl {
          .mapboxgl-ctrl-logo {
            display: none;
          }
        }
      }
      .mapboxgl-ctrl-bottom-right {
        // .mapboxgl-ctrl mapboxgl-ctrl-attrib
        .mapboxgl-ctrl-attrib-inner {
          display: none;
        }
        .mapboxgl-compact {
          display: none;
        }
      }
    }
  }
}
</style>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mapbox 在 vue2 中的使用 的相关文章

随机推荐

  • 接受拖放文件

    需要重载类的WM DROPFILE消息 接受拖放的文件并显示路径与文件名的示例 void CYuEdit OnDropFiles HDROP hDropInfo TODO Add your message handler code here
  • linux-vsprintf.c

    linux kernel vsprintf c 对参数产生格式化的输出 C 1991 Linus Torvalds vsprintf c Lars Wirzenius Linus Torvalds Wirzenius wrote this
  • Java一个属性依赖于另外一个属性的值

    一个java类中的一个属性最开始需要从另外一个属性的值得到 现在举例如下 最简单的例子 判断是否成功 Data ApiModel description 返回结果集 public class ReturnResult
  • 人工神经网络的基本模型,神经网络解剖学模型图

    神经网络是什么 神经网络可以指向两种 一个是生物神经网络 一个是人工神经网络 生物神经网络 一般指生物的大脑神经元 细胞 触点等组成的网络 用于产生生物的意识 帮助生物进行思考和行动 人工神经网络 Artificial Neural Net
  • plsql显示不出来服务器,求救:PLSQL调用webservice服务器端获取不到值

    我使用的是UTL DBWS包去调用webservice 现在我测试可以通过调用 但是发现服务器端获取不到值我贴下我的代码 create or replace procedure pro trig test is service utl db
  • 5-Java 泛型

    5 泛型 泛型的本质是参数化类型 也就是说所操作的数据类型被指定为一个参数 5 1 泛型方法 在调用时可以接收不同类型的参数 每一个类型参数声明部分包含一个或多个类型参数 参数间用逗号隔开 类型参数能被用来声明返回值类型 泛型方法体的声明和
  • 50个java编程程序之四

    程序 31 题目 将一个数组逆序输出 import java util public class lianxi31 public static void main String args Scanner s new Scanner Syst
  • python对字符串进行加密_python学习:实现将字符串进行加密

    题目描述 1 对输入的字符串进行加解密 并输出 2加密方法为 当内容是英文字母时则用该英文字母的后一个字母替换 同时字母变换大小写 如字母a时则替换为B 字母Z时则替换为a 当内容是数字时则把该数字加1 如0替换1 1替换2 9替换0 其他
  • UE4 图表插件使用文档

    UE4图表插件使用文档 插件概述 插件获取 插件演示 插件配置 插件使用 创建图表控件 控件调节属性 备注 插件概述 SCUI插件是一套UnrealEngine的UMG图表插件 初衷是为了快速制作智慧城市项目 解决复杂数据展示的难点 简化数
  • 蓝色版去水印小程序源码+接口

    介绍 蓝色版小程序源码 接口 网盘下载地址 http kekewangLuo net edaLtfZJUE40 图片
  • C++在线五子棋对战(网页版)项目:websocket协议

    目标 认识理解websocket协议 websocket切换过程和websocket协议格式 认识和学会使用websocketpp库常用接口 了解websocketpp库搭建服务器流程 认识和学会使用websocketpp库bin接口 最后
  • HTML标签marquee实现文字,图片等滚动效果

    HTML标签marquee实现文字 图片等滚动效果 页面的自动滚动效果 可由javascript来实现 也可以由一个html标签 就可以实现多种滚动效果 无需js控制 使用marquee标记不仅可以移动文字 也可以移动图片 表格等 语法 说
  • maven集成tomcat插件以及乱码解决

    Maven已经是Java的项目管理标配 如何在JavaEE开发使用Maven调用Web应用 是很多同学关心的问题 本文将介绍 Maven如何介绍Tomcat插件 Maven Tomcat插件现在主要有两个版本 tomcat maven pl
  • csdn博客推荐系统实战-5文本聚类-话题模型LDA

    话题模型topic model是自然语言处理领域里面热门的一个技术 可以用来做很多的事情 例如相似度比较 关键词提取 分类 还有就是具体产品业务上的事了 总之可以干很多的事情 今天不会讲LDA模型的很多细节和原理 没有满屏的数学公式 只讲一
  • OpenGL光源位置

    一 OpenGL光源简介 OpenGL提供了多种形式的光源 如点光源 平行光源和聚光灯光源等 所有光源都使用 glLight 接口来设置光源属性 其中包括 glLight if 和 glLight if v 两类 1 示例光源 GLfloa
  • 下载好unity后打开出现这个弹窗怎么解决

    unity我重新下了两遍 始终出现这个弹窗 无法打开unity 始终找不到许可 急求 谢谢
  • Matlab 中三角函数

    Matlab 中三角函数 atan2 基本数学函数 abs 绝对值 acos 反余弦 acosh 反双曲余弦函数 acot 反余切 acoth 反双曲线余切 acsc 反余割 acsch 反双曲线余割 angle 相位角 asec 反正割
  • Materials Studio工具模块介绍

    相关教程和破解版软件包下载链接为 https blog csdn net qwxwaty article details 80402505 各模块细节介绍 Materials Visualizer Materials visualizer
  • 总结ctf中 MD5 绕过的一些思路

    总结ctf中 MD5 绕过的一些思路 1 常规的0e绕过 2 数组绕过 3 强类型绕过 4 a md5 a 5 md5 与SQL注入 a b md5 a md5 b sha1 a sha1 b 1 常规的0e绕过 QNKCDZO 24061
  • mapbox 在 vue2 中的使用

    一 Mapbox 在 vue 中的使用 安装 mapbox mapbox gl geocoder npm install save mapbox mapbox gl geocoder 安装 mapbox mapbox gl language