【百度地图2.5D、3D在Vue项目中的使用】嵌入二维百度地图、三维百度地图、多种显示模式风格样式颜色的百度地图

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 【百度地图2.5D、3D在Vue项目中的使用】嵌入二维百度地图、三维百度地图、多种显示模式风格样式颜色的百度地图

rc\js\main.js

...
 
 
//  引入普通百度地图----------------------------------------npm install vue-baidu-map --save
import BaiduMap from 'vue-baidu-map';
Vue.use(BaiduMap, { ak: 'DvSp7Of3aqrGbjIsGqebqdPAmjhGDndf' });//这个百度APIkey密钥是用百度ID:16*******61注册的,如果要更改密钥权限找强哥!
 
// 引入3D百度地图----------------------------------------npm install vue-bmap-gl --save
import VueBMap from 'vue-bmap-gl';
import 'vue-bmap-gl/dist/style.css';
Vue.use(VueBMap);
VueBMap.initBMapApiLoader({
  ak: '***DvSp7Of3aqrGbjIsGqebqdPAmjhGDndf***',//这个密钥请使用自己注册的
  v: '1.0'
});
 
 
...

src\vue\components\sgMap.vue

<template>
  <div class="sgMap-body">
    <!-- 引入百度地图 -->
    <div id="SGbaidu3Dmap" v-show="data.type == 3"></div>
    <baidu-map id="SGbaidumap" v-if="data.type != 3" @ready="initBaiduMap">
    </baidu-map>
  </div>
</template>
 
<script>
import custom_map_config from "@/json/custom_map_config";
export default {
  components: {},
  data() {
    return {
      map: null, // 百度地图对象
      // _MyMap: null,//瓦片图对象
    };
  },
  props: ["data"],
  mounted() {
    this.data.type == 3 &&
      setTimeout(() => {
        this.initBaidu3DMap();
      }, 2000);
  },
 
  methods: {
    initBaidu3DMap() {
      this.map = new BMapGL.Map("SGbaidu3Dmap");
      this.map.centerAndZoom(
        new BMapGL.Point(this.data.coordinate[0], this.data.coordinate[1]),
        this.data.zoom || 19
      );
      this.map.enableScrollWheelZoom(true); //启用滚轮放大缩小
      //设置3D角度----------------------------------------
      this.map.setHeading(64.5);
      this.map.setTilt(73);
 
      // 设置自定义mark点位________________________
      this.map.addOverlay(
        new BMapGL.Marker(
          new BMapGL.Point(this.data.coordinate[0], this.data.coordinate[1]),
          {
            icon: new BMapGL.Icon(
              require("@/assets/sgMap/mark.svg"),
              new BMapGL.Size(32, 32) //图标的宽高
            ),
          }
        )
      ); // 将标注添加到地图中
    },
    // 初始化百度地图
    initBaiduMap({ BMap, map }) {
      this.map = map;
      this.map.setMapStyle({ style: this.data.style || "googlelite" }); //默认:精简风格(googlelite),模板页可以查看http://lbsyun.baidu.com/custom/list.htm
 
      // 去这个位置编辑http://lbsyun.baidu.com/apiconsole/custommap个性化地图
 
      // this.map.setMapStyle({ styleJson: custom_map_config });
      // this._MyMap = new BMap.MapType('MyMap', this._tileLayer, {minZoom: minZoom || 1, maxZoom: maxZoom || window.maxZoom});
      // 设置地图显示类型----------------------------------------
      const mapTypes = [
        BMAP_NORMAL_MAP, //此地图类型展示普通街道视图
        BMAP_SATELLITE_MAP, //此地图类型展示卫星视图
        BMAP_HYBRID_MAP, //此地图类型展示卫星和路网的混合视图
      ];
      if (this.data.type == 3) {
        this.map.setHeading(64.5), this.map.setTilt(73);
        //3D地图
      } else this.map.setMapType(mapTypes[this.data.type]);
 
      // ----------------------------------------
      this.map.enableScrollWheelZoom(true); //启用滚轮放大缩小
      this.map.centerAndZoom(
        new BMap.Point(this.data.coordinate[0], this.data.coordinate[1]),
        this.data.zoom || 14
      ); // 初始化地图,设置中心点坐标和地图级别
 
      // 设置自定义mark点位________________________
      this.map.addOverlay(
        new BMap.Marker(
          new BMap.Point(this.data.coordinate[0], this.data.coordinate[1]),
          {
            icon: new BMap.Icon(
              require("@/assets/sgMap/mark.svg"),
              new BMap.Size(32, 32) //图标的宽高
            ),
          }
        )
      ); // 将标注添加到地图中
    },
  },
};
</script>
 
<style lang='scss' scoped>
@import "~@/css/sg";
// ----------------------------------------
.sgMap-body {
  transition: none;
  position: fixed;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  >>> #SGbaidumap,
  >>> #SGbaidu3Dmap {
    width: 100%;
    height: 100%;
    & > div {
      background-color: transparent !important;
    }
  }
}
/*
去除百度地图版权
去除右上角[地图、卫星、三维]控件
去除百度地图右上角平移缩放控件的市县区文字
*/
>>> .anchorBL,
>>> .anchorTR,
>>> .BMap_zlHolder {
  display: none;
  visibility: hidden;
}
</style>

src\vue\screen\index.vue

<template>
  <div class="index-body"> 
    <sgMap
      class="sg-map"
      :data="{
        coordinate: [118.869472, 28.975293],
        style: $route.query.style || 'midnight',
        type: $route.query.type || 0,
        zoom: $route.query.zoom || 16,
      }"
    />
  </div>
</template>
 
<script>
import sgMap from "@/vue/components/sgMap";
export default {
  components: {
    sgMap,
  }, 
};
</script>
 
<style lang='scss' scoped>
  .sg-map {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
  }
</style>

访问路径的时候带参数?type=0&style=midnight,显示二维地图 (午夜蓝风格)

模板页可以查看 去这个位置编辑个性化地图


image.png

访问路径的时候带参数?type=0&style=grayscale,显示二维地图 (高端灰风格)

 访问路径的时候带参数?type=1,显示实景地图

访问路径的时候带参数?type=2,显示实景地图(带有地名)

访问路径的时候带参数?type=3,显示三维3D地图

相关文章
|
10月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
785 2
|
9月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
662 137
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
824 1
|
12月前
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
576 0
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
1258 0
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
1532 4
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
JavaScript 数据可视化 前端开发
基于 Vue 与 D3 的可拖拽拓扑图技术方案及应用案例解析
本文介绍了基于Vue和D3实现可拖拽拓扑图的技术方案与应用实例。通过Vue构建用户界面和交互逻辑,结合D3强大的数据可视化能力,实现了力导向布局、节点拖拽、交互事件等功能。文章详细讲解了数据模型设计、拖拽功能实现、组件封装及高级扩展(如节点类型定制、连接样式优化等),并提供了性能优化方案以应对大数据量场景。最终,展示了基础网络拓扑、实时更新拓扑等应用实例,为开发者提供了一套完整的实现思路和实践经验。
1810 78
|
缓存 JavaScript 前端开发
Vue 基础语法介绍
Vue 基础语法介绍
|
JavaScript 前端开发 开发者
Vue 自定义进度条组件封装及使用方法详解
这是一篇关于自定义进度条组件的使用指南和开发文档。文章详细介绍了如何在Vue项目中引入、注册并使用该组件,包括基础与高级示例。组件支持分段配置(如颜色、文本)、动画效果及超出进度提示等功能。同时提供了完整的代码实现,支持全局注册,并提出了优化建议,如主题支持、响应式设计等,帮助开发者更灵活地集成和定制进度条组件。资源链接已提供,适合前端开发者参考学习。
789 17