vue3引入百度地图(两种方法)

 首先要有百度开放平台并进行注册,不懂看这里

###

第一种方法

地图引入流程

安装vue-baidu-map-3x插件

参考官网地址:快速上手 | vue-baidu-map-3x

npm install vue-baidu-map-3x --save

在public/index.html文件中引入

<!-- 百度地图 -->
<script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=你的ak值"></script>

创建vue文件,编写如下

元素布局

<template><baidu-map class="bm-view" :center="{ lng: 116.403401, lat: 39.924823 }" :zoom="15" :scroll-wheel-zoom="true"ak="lKTF6dTPp0bflD1mToHqAhmfIhGml6mn" v="3.0" type="API" @click="handelClick"><!-- 二维地图和卫星地图 --><bm-map-type :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']"></bm-map-type><!-- 城市列表-选择城市搜索城市(支持市级以上搜索) --><bm-city-list anchor="BMAP_ANCHOR_TOP_LEFT" @changeAfter="message.success('很好,成功切换城市')"></bm-city-list><!-- 点标记 --><bm-marker :position="state" :dragging="true" :raiseOnDrag="true"><bm-info-window :show="show" @close="show = false" @open="show = true">{{ address }}</bm-info-window></bm-marker><!-- 定位 --><bm-geolocation anchor="BMAP_ANCHOR_TOP_RIGHT" :showAddressBar="true" :autoLocation="true" @locationSuccess="(e: any) =>message.success('定位成功已切换到' +e.addressComponent.province +e.addressComponent.city,)" @locationError="message.error('定位失败')"></bm-geolocation></baidu-map>
</template>

逻辑部分

<script setup>
// 引入ant-design-vue组件库
import { message } from 'ant-design-vue'
// 引入vue-baidu-map-3x
import { reactive, ref } from 'vue'
import {BaiduMap,BmMapType,BmCityList,BmMarker,BmGeolocation,BmInfoWindow,
} from 'vue-baidu-map-3x'const show = ref(false)
const address = ref(undefined)
const state = reactive({lng: 116.403401,lat: 39.924823,
})const handelClick = (e) => {show.value = falsestate.lng = e.point.lngstate.lat = e.point.latconst geocoder = new window.BMap.Geocoder()console.log('123');// 解析地址geocoder.getLocation(e.point, (res) => {if (res) {show.value = trueaddress.value = res.address}})
}
</script>

样式部分

<style scoped>
/* 去除水印 */
::v-deep(.BMap_cpyCtrl) {display: none;
}::v-deep(.anchorBL) {display: none !important;
}/* 布局css元素 */
.bm-view {width: 80%;height: 50%;margin: auto;
}
</style>

效果展示:

地图控件部分
<template><baidu-map class="bm-view" :center="{ lng: 116.403185, lat: 39.92272 }" :zoom="15" :scroll-wheel-zoom="true"ak="lKTF6dTPp0bflD1mToHqAhmfIhGml6mn" v="3.0" type="API"><!-- 缩放 --><bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT" :enableGeolocation="true" :showZoomInfo="true"></bm-navigation><!-- 比例尺 --><bm-scale anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-scale><!-- 缩略图 --><bm-overview-map anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :isOpen="true"></bm-overview-map><!-- 全景控件 --><bm-panorama anchor="BMAP_ANCHOR_TOP_LEFT"></bm-panorama></baidu-map>
</template><script setup>
import {BaiduMap,BmNavigation,BmScale,BmOverviewMap,BmPanorama,
} from 'vue-baidu-map-3x'
</script><style scoped>
/* 这里没有清除百度地图API水印 */
.bm-view {width: 80%;height: 60%;margin: auto;
}
</style>

效果展示:

###

第二种方法

引入流程

元素部分

<!-- vue3引入百度api -->
<template><div id="allmap"></div>
</template>

逻辑部分

<script setup>
import { onMounted } from "vue";
onMounted(() => {loadMapScript(); // 加载百度地图资源
});
// 初始化地图
const init = () => {let Bmap = window.BMap; // 注意要带window,不然会报错(注意官方api,会有改动,之前是Bmap,后面3.0版本改为了BMap,最好查文档或者打印一下window)var map = new Bmap.Map("allmap"); // allmap必须和dom上的id一直map.centerAndZoom(new Bmap.Point(104.04263635868074, 30.556100647961866),11); // 初始化地图,设置中心点坐标和地图级别map.setCurrentCity("成都");map.enableScrollWheelZoom(true);
};
const loadMapScript = () => {// 此处在所需页面引入资源就是,不用再public/index.html中引入var script = document.createElement("script");script.type = "text/javascript";script.className = "loadmap"; // 给script一个类名script.src ="https://api.map.baidu.com/getscript?v=3.0&ak=你的ak值";// 此处需要注意:申请ak时,一定要应用类别一定要选浏览器端,不能选服务端,不然地图会报ak无效script.onload = () => {// 使用script.onload,待资源加载完成,再初始化地图init();};let loadmap = document.getElementsByClassName("loadmap");if (loadmap) {// 每次append script之前判断一下,避免重复添加script资源标签for (var i = 0; i < loadmap.length; i++) {document.body.removeChild(loadmap[i]);}}document.body.appendChild(script);
};
</script>

样式部分

<style scoped>
/* 去除水印 */
::v-deep(.BMap_cpyCtrl) {display: none;
}::v-deep(.anchorBL) {display: none !important;
}#allmap {/* // 注意给dom宽高,不然地图不出来 */width: 80%;height: 60%;margin: auto;
}
</style>

效果展示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/311181.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DHCP学习记录

目录 客户端向DHCP服务端申请租用IP的4个阶段: 客户端向HDCP服务器续租IP过程: 客户端重新连接租用IP过程: 客户端释放IP 声明: (Dynamic Host Configuration Protocol)动态主机配置协议&#xff0c;客户端向DHCP服务端申请获得ip的一种约定俗成的话语(协议) 手工配置方式…

Spring Boot笔记1

1. SpringBoot简介 1.1. 原有Spring优缺点分析 1.1.1. Spring的优点分析 Spring是Java企业版&#xff08;Java Enterprise Edition&#xff0c;javeEE&#xff09;的轻量级代替品。无需开发重量级的Enterprise JavaBean&#xff08;EJB&#xff09;&#xff0c;Spring为企业…

macos下php 5.6 7.0 7.4 8.0 8.3 8.4全版本PHP开发环境安装方法

在macos中如果使用brew 官方默认的core tap 只可以安装官方最新的稳定版PHP, 如果想要安装 php 5.6 或者 php 8.4版本的PHP就需要使用第三方的tap , 这里分享一个比较全面的brew tap shivammathur/php 这个tap里面包含了从php5.6到最新版php8.4的所有可用最新版本PHP, 而且是同…

Kafka_01_Kafka初识

Kafka_01_Kafka初识 Kafka基础概念延迟任务 Kafka Kafka: ZooKeeper协调的分布式消息系统 基于Scala语言编写的高性能、多分区、多副本Kafka高性能的原因&#xff1a;页缓存、顺序IO、零拷贝 具有以下特性&#xff1a; 消息中间件: 系统解耦、冗余存储、流量消峰、异步通信…

VistualStudio查看类图UML

点击菜单栏中的工具–》获取工具和功能。 然后在资源管理器中对应的代码中鼠标右键选择查看类图 生成一个ClassDiagram.cd文件就是类图的文件了。 根据需要拖拽就可以生成类图了。

毕业论文公式-截图+复制粘贴

文章目录 前言MathType简介MathType的配置MathPix Snipping软件下载地址word中的MathType公式编号 前言 又是一个毕业季&#xff0c;又有不少小伙伴为了公式手忙脚乱。 word中怎么写公式呢&#xff1f;用鼠标一个一个的选公式项太慢了&#xff0c;有没有编程语言呢&#xff1…

基于微信小程序的停车预约系统设计与实现

基于微信小程序的停车预约系统设计与实现 项目概述 本项目旨在结合微信小程序、后台Spring Boot和MySQL数据库&#xff0c;打造一套高效便捷的停车预约系统。用户通过微信小程序进行注册、登录、预约停车位等操作&#xff0c;而管理员和超级管理员则可通过后台管理系统对停车…

计算机组成原理复习4

习题 练习题 下列不属于系统总线的为&#xff08;&#xff09; a.数据总线 b.地址总线 c.控制总线 d.片内总线 D 系统总线中地址总线的功能是&#xff08;&#xff09; a.选择主存单元地址 b.选择进行信息传输的设备 c.选择外存地址 d.指定主存和I/O设备接口电路的地址 D 解…

vue3基础知识一,安装及使用

一、安装vue3 需要安装node&#xff0c;然后在项目所在目录命令行执行以下代码。 npm create vuelatest 回车后需要配置以下内容。 二、安装所需的依赖包并运行 cd到项目目录&#xff0c;执行以下代码安装依赖包 npm i 运行项目 npm run dev 打开浏览器查看结果 ok&#…

虚拟地址空间

虚拟地址空间 1.1 概述 虚拟地址空间是指操作系统为每个运行中的进程分配的抽象地址空间。这个地址空间使得每个进程都觉得它拥有一个独立的、连续的内存区域&#xff0c;而实际上这个内存区域可能分布在物理内存的不同位置&#xff0c;甚至可能被存储在磁盘上。 在虚拟地址…

设计模式:工厂方法模式(讲故事图文易懂)

目录 简单工厂工厂方法模式 简单工厂 定义&#xff1a;简单工厂由一个工厂根据参数类型决定创建哪种产品的实例。 简单工厂不包含在23种设计模式之内&#xff08;简单工厂不满足开闭原则&#xff0c;后面会详细讲&#xff09; 举例&#xff1a;张三去4S店买了车&#xff0c;显…

Radar System Pro - Plug Play Solution

Radar System Pro是一款功能多样且可定制的资源,旨在通过功能齐全且易于使用的雷达系统增强您的Unity项目。无论您是在开发第一人称射击游戏、策略游戏还是太空探索模拟器,我们的雷达系统都将为您提供所需的工具,以创建引人入胜且身临其境的体验。 雷达系统是一个模块化资产…