vue 百度地图 3d地图

效果图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一、新建js文件(3dmap.js)

const ak = '你的百度地图秘钥' // 百度的地图密钥申请 https://lbsyun.baidu.com/index.php?title=jspopular3.0/guide/getkey
/**
 * 异步加载百度地图
 * @returns {Promise}
 * @constructor
 */
function loadBaiDuMap() {
  return new Promise(function (resolve, reject) {
    try {
      console.log('BMap is defined:', BMapGL === undefined || BMapGL)
      resolve(BMapGL)
    } catch (err) {
      window.init = function () {
        resolve(BMapGL)
      }
      let script = document.createElement('script')
      script.type = 'text/javascript'
      script.src = `https://api.map.baidu.com/api?v=1.0&type=webgl&ak=${ak}&callback=init`
      script.onerror = reject
      document.body.appendChild(script)
    }
  })
}
export { loadBaiDuMap }
/**
 * 异步加载百度地图,以及绘制工具
 * @returns {Promise}
 * @constructor
 */
function loadBaiDuDrawMap() {
  return loadBaiDuMap().then(BMapGL => {
    let loaded = false
    try {
      loaded = (BMapGLLib && BMapGLLib.DrawingManager)
    } catch (err) {
      loaded = false
    }
    if (!loaded) {
      console.log('BMapLib.DrawingManager loading!')
      let script = document.createElement('script')
      script.type = 'text/javascript'
      script.src = 'https://mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.js'
      document.body.appendChild(script)
      let link = document.createElement('link')
      link.rel = 'stylesheet'
      link.href = 'https://mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.css'
      document.body.appendChild(link)
    } else {
      console.log('BMapLib.DrawingManager is loaded!')
    }
    return BMapGL
  })
}
export { loadBaiDuDrawMap }

二、新建vue文件

<template>
  <!--地图-->
  <div style="width: 100%; height: 700px">
    <div id="container"></div>
  </div>
</template>
<script
  type="text/javascript"
  src="https://api.map.baidu.com/api?v=3.0&ak=fX3RxiG1a3EV1fQGYBzzCFojr1z82udK&s=1"
></script>
<script>
import { loadBaiDuMap, loadBaiDuDrawMap } from "@/assets/js/baiduMap.js";
export default {
  name: "index",
  data() {
    return {
      path: [
        {
          lng: 112.541993,
          lat: 37.822504,
        },
        {
          lng: 112.628662,
          lat: 38.02281,
        },
        {
          lng: 112.70708,
          lat: 38.023748,
        },
        {
          lng: 113.009629,
          lat: 38.060038,
        },
        {
          lng: 113.352889,
          lat: 38.09286,
        },
        {
          lng: 113.71081,
          lat: 38.060209,
        },
        {
          lng: 113.897227,
          lat: 38.072481,
        },
        {
          lng: 114.028882,
          lat: 38.121267,
        },
        {
          lng: 114.24771,
          lat: 38.194384,
        },
        {
          lng: 114.472825,
          lat: 38.092136,
        },
        {
          lng: 114.581917,
          lat: 38.061173,
        },
      ],
      interval: null, // 定时器
      timesRun: 0, // 循环次数
      localSearch: null, // 自动搜索
      loading: false,
      transportmanageList: [],
      trackAni: null,
      maps: "", // 存放地图
      pls: "",
    };
  },
  mounted() {
    this.init1(); // 初始化轨迹路线
  },
  created() {},
  methods: {
  //设置点坐标
    init() {
      // 初始化地图
      loadBaiDuMap().then((BMapGL) => {
        var map = new BMapGL.Map("container");
        map.centerAndZoom(
          new BMapGL.Point(this.path[0].lng, this.path[0].lat),
          18
        );
        map.enableScrollWheelZoom(true);
        map.setHeading(60);
        map.setTilt(60);
        // 添加比例尺控件
        bmap.addControl(
          new BMapGL.ScaleControl({
            anchor: BMAP_ANCHOR_BOTTOM_LEFT,
            offset: new BMapGL.Size(10, 10),
          })
        );
        // 添加缩放控件
        bmap.addControl(
          new BMapGL.ZoomControl({
            anchor: BMAP_ANCHOR_BOTTOM_RIGHT,
            offset: new BMapGL.Size(10, 10),
          })
        );

		//设置点坐标
        for (var i = 0; i < this.path.length; i++) {
          let poi = new BMapGL.Point(this.path[i].lng, this.path[i].lat);
          let marker = new BMapGL.Marker(poi); //创建标注
          map.addOverlay(marker); //将标注添加到地图中
        }
        setTimeout(this.start(), 3000);
        this.maps = bmap;
        this.pls = pl;
      });
    },
    //设置多边形绘图
    init1() { 
      // 初始化地图
      loadBaiDuDrawMap().then((BMapGL) => {
        // 创建地图实例
        let bmap = new BMapGL.Map("container");
        bmap.centerAndZoom(new BMapGL.Point(this.path[0].lng, this.path[0].lat), 18); // 初始化地图,设置中心点坐标和地图级别
        bmap.enableScrollWheelZoom(true); //开启鼠标滚轮缩放

        // 添加比例尺控件
        bmap.addControl(
          new BMapGL.ScaleControl({
            anchor: BMAP_ANCHOR_BOTTOM_LEFT,
            offset: new BMapGL.Size(10, 10),
          })
        );
        // 添加缩放控件
        bmap.addControl(
          new BMapGL.ZoomControl({
            anchor: BMAP_ANCHOR_BOTTOM_RIGHT,
            offset: new BMapGL.Size(10, 10),
          })
        );

        let point = [];
        for (var i = 0; i < this.path.length; i++) {
          let poi = new BMapGL.Point(this.path[i].lng, this.path[i].lat);
          point.push(poi);
          //let marker = new BMapGL.Marker(poi); //创建标注
          //bmap.addOverlay(marker); //将标注添加到地图中
        }
        let polygon = new BMapGL.Polygon(point, {
          strokeColor: "blue",
          strokeWeight: 6,
          strokeOpacity: 0.5,
        });
        bmap.addOverlay(polygon);
        // 保存地图
        this.maps = bmap;
        this.pls = polygon;

        bmap.setHeading(64.5);
        bmap.setTilt(73);
      });
    },
  },
};
</script>
<style lang="scss" scoped>
#container {
  overflow: hidden;
  width: 100%;
  height: 100%;
  margin: 0;
}
</style>
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
要在vue-baidu-map中使用3D地图,您可以按照以下步骤进行操作: 1. 首先,安装vue-bmap-gl插件。您可以使用以下命令进行安装: ``` npm install vue-bmap-gl --save ``` 2. 然后,在您的Vue项目中引入vue-bmap-gl。您可以在您的代码中添加以下代码: ``` import VueBMap from 'vue-bmap-gl'; import 'vue-bmap-gl/dist/style.css'; Vue.use(VueBMap); ``` 3. 接下来,您需要初始化BMapGL地图的API加载器并配置密钥。您可以在您的代码中添加以下代码: ``` VueBMap.initBMapApiLoader({ ak: '您的百度密钥', v: '1.0' }); ``` 请注意,您需要将`您的百度密钥`替换为您在百度地图API网页上注册并获取到的密钥。 4. 现在,您可以在Vue组件中使用3D地图了。在您的模板中,您可以添加一个具有适当ID和样式的容器元素,例如: ``` <template> <div> <div id="mapContainer" style="width: 100%; height: 400px;"></div> </div> </template> ``` 5. 最后,在您的Vue组件的mounted方法中,您可以初始化3D地图。您可以在您的代码中添加以下代码: ``` mounted() { this.map = new BMapGL.Map("mapContainer"); var point = new BMapGL.Point(114.42586, 23.129122); // 设置中心点经纬度 this.map.centerAndZoom(point, 10); this.map.setTilt(60); // 设置倾斜角 this.map.enableScrollWheelZoom(); } ``` 这将创建一个3D地图并设置一些基本的地图属性。 请确保您已经正确引入了所需的插件,并且已经替换了正确的百度密钥。通过按照上述步骤操作,您就可以在vue-baidu-map中使用3D地图了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值