VUE3 使用百度地图 【点击获取对应坐标】
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
目录
文档
百度地图官方文档
https://lbsyun.baidu.com/index.php?title=jspopularGL/guide/geoloaction
百度地图官方示例
https://lbsyun.baidu.com/jsdemo.htm#aCreateMap
编码
第一步 申请api秘钥
https://lbsyun.baidu.com/index.php?title=jspopular/guide/getkey
第二步 引入
在vue项目的index.html文件中引入
第三步 创建组件
<script lang="ts">
export default {
name: `baidu-map`
};
</script>
<script setup lang="ts">
import { getCurrentInstance, nextTick, onMounted } from "vue";
const { proxy } = getCurrentInstance();
const props = defineProps({
x: {
type: Number,
default: 113.31071
},
y: {
type: Number,
default: 23.14828
}
});
onMounted(() => {
nextTick(() => {
init();
});
});
const init = async () => {
const BMap = window.BMap;
//显示级别,如省市区街,0-20
let showLevel = 10;
const map = new BMap.Map("baidu-map");
//地图中心点,默认广州市
let point = new BMap.Point(113.31071, 23.14828);
// 初始化图标
let Icon_0 = new BMap.Icon(
"/src/assets/svg/punctuation.svg",
new BMap.Size(64, 64),
{anchor: new BMap.Size(18, 32), imageSize: new BMap.Size(36, 36)}
);
//已有坐标,则根据已有坐标显示定位图标
if(props.x && props.y){
point = new BMap.Point(props.x, props.y);
showLevel = 17;
//设置初始坐标图标位置
let myMarker = new BMap.Marker(
new BMap.Point(props.x, props.y),
{icon: Icon_0}
);
map.addOverlay(myMarker);
}
//设置中心坐标,显示级别
map.centerAndZoom(point, showLevel);
//获取当前定位
map.addControl(new BMap.GeolocationControl());
//开启鼠标滚轮缩放
map.enableScrollWheelZoom(true);
// 添加控件
let opts = {type: "BMAP_NAVIGATION_CONTROL_SMALL"};
map.addControl(new BMap.NavigationControl(opts));
//创建点击事件
map.addEventListener("click", function (e) {
//向父组件传值
proxy.$emit("childClick", e.point);
//清除地图上所有覆盖物
map.clearOverlays();
//设置点击后图标显示
let myMarker = new BMap.Marker(
new BMap.Point(e.point.lng, e.point.lat),
{icon: Icon_0}
);
map.addOverlay(myMarker);
});
}
</script>
<template>
<div>
<div id="baidu-map" />
</div>
</template>
<style>
#baidu-map {
height: calc(70vh - 86px);
}
</style>
第四步 使用组件
效果图:
传递经纬度的效果:
未传递效果:
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献3条内容
所有评论(0)