vue3+vite 中使用百度地图【两种方式】

vue3+vite项目中使用百度地图

  • 方式一:直接使用百度地图的ak
  • 方式二:使用vue-baidu-map-3x插件

方式一:直接使用百度地图的ak

提前准备:

  • 创建一个vite项目
  • 申请好的百度地图ak值

百度地图使用:

  1. 在创建好的vite项目的入口文件index.html中引入百度地图ak
    在这里插入图片描述

附代码

DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><link rel="icon" type="image/svg+xml" href="/vite.svg" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Vite + Vuetitle><script src="https://api.map.baidu.com/api?v=3.0&ak=IszZX5*****************“>
"app">div><script type="module" src="/src/main.js">script>
body>html>
  1. 去创建自己的地图
  • 在\src\echarts\MyMap.vue创建自己的地图
<template><div class="map" ref="baiduRef"></div>
</template>
<script setup>
import { ref, onMounted } from "vue";const baiduRef = ref();
const map = ref();
const point = ref();function initMap(lng = 116.405725, lat = 39.935362) {map.value = new BMap.Map(baiduRef.value);point.value = new BMap.Point(lng, lat);map.value.centerAndZoom(point.value, 15);map.value.enableScrollWheelZoom(true); //滚轮缩放map.value.setMapStyleV2({//可以自己去百度地图中调整样式(方法在在一条)styleId: "9a7c760437*********************",});
}
onMounted(() => {initMap();
});
</script>
<style  scoped>
.map {width: 100%;height: 400px;
}
</style>
  1. 在百度地图开放平台中申请样式id(不是关键步骤,可忽略)
    在这里插入图片描述
  • 进入地图选项,下滑页面,可以看到查看详情
    在这里插入图片描述

  • 在详情页有新建选项,去创建自己的样式,并进行发布
    在这里插入图片描述

  • 点击发布后就能够获取到样式的id,还可以进行修改等操作

  • 在这里插入图片描述

  1. 在App组件中进行调用
<template><BaiduMap  />
</template>
<script setup>
import BaiduMap from './components/baiduMap.vue'
</script>

方式二:使用vue-baidu-map-3x插件

提前准备

  • vue-baidu-map-3x官网
  • 百度地图ak

使用方法

  1. 在项目中安装vue-baidu-map-3x
npm i vue-baidu-map-3x
  1. 在/src/main.js中引入
import { createApp } from 'vue'
import BaiduMap from 'vue-baidu-map-3x'
import App from './App.vue'
const app = createApp(App);
app.use(BaiduMap, {ak: "IszZX5ST6*********************"  //使用自己的ak
})
app.mount('#app')
  1. 在 \src\echarts\MyMap.vue中使用(样式功能等可参照 vue-baidu-map-3x官网)
<template><div><baidu-mapclass="map":center="{ lng: 116.404, lat: 39.915 }":zoom="14"@mousemove="syncPolyline"@click="paintPolyline"@rightclick="newPolyline"><bm-control><button @click.stop="toggle">{{ polyline.editing ? "停止绘制" : "开始绘制" }}</button></bm-control><bm-polyline:path="path"v-for="path of polyline.paths":key="path"></bm-polyline></baidu-map></div>
</template><script setup>
import { ref, toRef } from "vue";const polyline = ref({editing: false,paths: [],
});const toggle = (name) => {polyline.value.editing = !polyline.value.editing;
};const syncPolyline = (e) => {if (!polyline.value.editing) {return;}if (!polyline.value.paths.length) {return;}const path = polyline.value.paths[polyline.value.paths.length - 1];if (!path.length) {return;}if (path.length === 1) {polyline.value.paths[polyline.value.paths.length - 1].push(e.point);}polyline.value.paths[polyline.value.paths.length - 1][path.length - 1] =e.point;
};const newPolyline = (e) => {if (!polyline.value.editing) {return;}if (!polyline.value.paths.length) {polyline.value.paths.push([]);}const path = polyline.value.paths[polyline.value.paths.length - 1];path.pop();if (path.length) {polyline.value.paths.push([]);}
};const paintPolyline = (e) => {if (!polyline.value.editing) {return;}!polyline.value.paths.length && polyline.value.paths.push([]);polyline.value.paths[polyline.value.paths.length - 1].push(e.point);
};
</script><style>
.map {width: 400px;height: 100%;
}
</style>


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部