当前位置: 首页 > news >正文

vue+高德,百度地图

1,npm安装vue-amap
npm install vue-amap --save
2,main.js引入

import VueAMap from 'vue-amap';
Vue.use(VueAMap);
VueAMap.initAMapApiLoader({key: '',plugin: ['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor', 'AMap.Geolocation', 'AMap.Geocoder'],
});
html页面引入
<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=****"></script>
<script src="//webapi.amap.com/maps?v=1.4.15&key=****&&plugin=AMap.MarkerClusterer,AMap.Autocomplete,AMap.MapType,AMap.PolyEditor,AMap.MouseTool,AMap.AdvancedInfoWindow,AMap.Scale,AMap.ToolBar,AMap.RangingTool,Geocoder"></script>
<script src="//webapi.amap.com/ui/1.0/main.js?v=1.4.11"></script>

3,amap.js 定位

export const location =  {initMap(id){let mapObj = new AMap.Map(id, {})let geolocation;mapObj.plugin(['AMap.Geolocation'], function () {geolocation = new AMap.Geolocation({enableHighAccuracy: true, //  是否使用高精度定位,默认:truetimeout: 10000, //  超过10秒后停止定位,默认:无穷大maximumAge: 0, // 定位结果缓存0毫秒,默认:0convert: true, // 自动偏移坐标,偏移后的坐标为高德坐标,默认:trueshowButton: true, //  显示定位按钮,默认:truebuttonPosition: 'LB',  // 定位按钮停靠位置,默认:'LB',左下角buttonOffset: new AMap.Pixel(10, 20), //  定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)showMarker: true, //  定位成功后在定位到的位置显示点标记,默认:trueshowCircle: true, //  定位成功后用圆圈表示定位精度范围,默认:truepanToLocation: true,  //  定位成功后将定位到的位置作为地图中心点,默认:truezoomToAccuracy: true  //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false})mapObj.addControl(geolocation)geolocation.getCurrentPosition()})return geolocation;}
}

4,使用

import { location } from "@/utils/amap";
两种方式
let geolocation = location.initMap("map-container"); //定位AMap.event.addListener(geolocation, "complete", (result) => {if (result) {//地址 console.log(result)}
});
----
AMap.plugin("AMap.Geolocation", function () {var geolocation = new AMap.Geolocation({enableHighAccuracy: true,timeout: 10000,});// 获取位置信息geolocation.getCurrentPosition((status, result) => {if (result && result.position) {}
})

百度地图


## 获取经纬度写法:let ak = '****'
/*** 异步加载百度地图* @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 };
//通过地址转换为经纬度,注意这里必须传入city,也就是市
function getPoint(city, address) {let result = loadBaiDuMap().then((BMapGL) => {return new Promise(function (resolve, reject) {//创建地址解析器实例let res = "没有查询到经纬度";if (!city) {res = "商户记录属于哪个城市未知";reject(res);}var myGeo = new BMapGL.Geocoder();// 将地址解析结果显示在地图上,并调整地图视野myGeo.getPoint(address,function (point) {if (point) {console.log(point, "point");resolve(point);} else {reject(res);}},city);});});return result;
}export { getPoint };
//定位,获取当前的地理位置
function getLocationInfo() {let result = loadBaiDuMap().then((BMapGL) => {return new Promise(function (resolve, reject) {// 创建地图实例let geolocation = new BMapGL.Geolocation(); // 创建百度地理位置实例,代替 navigator.geolocationgeolocation.getCurrentPosition(function (e) {// console.log(e, "e");if (this.getStatus() == BMAP_STATUS_SUCCESS) {// 百度 geolocation 的经纬度属性不同,此处是 point.lat 而不是 coords.latitudelet point = new BMapGL.Point(e.point.lng, e.point.lat);// console.log(point, "point");let gc = new BMapGL.Geocoder();gc.getLocation(point, function (rs) {resolve(rs);});} else {resolve(this.getStatus())// reject(this.getStatus());}});});});return result;
}
export { getLocationInfo };
使用
import { getLocationInfo } from "@/util/amap";
getLocationInfo().then((rs) => {
})

页面使用

1:组件式
[vue-baidu-map](https://dafrok.github.io/vue-baidu-map/#/zh/index)
vue-baidu-map
main.js
import BaiduMap from 'vue-baidu-map'
Vue.use(BaiduMap, {ak: '******'
})<baidu-map:center="center":zoom="zoom":height="screenHeight3":width="screenWidth3":map-style="mapStyle"    //背景样式:scroll-wheel-zoom="true"class="bmView"@ready="handler">//多个marker
<div v-for="(v, k) in wgMarker" :key="k"><bm-marker :position="{ lng: v.centerx, lat: v.centery }" @click="showWgMarker(v)"><bm-label :content="v.name +'-'+ v.num" :label-style="{****}" :offset="{width: -12, height: 30}"/></bm-marker>
</div><bm-info-window :offset="{width: -8, height: -32}" :show="showFlag" :position="positionData" title="***" @close="infoWindowClose()"></bm-info-window><bm-polygonv-for="(p,index) in lineList.line":key="'p'+index":path="p":fill-opacity="0.1":stroke-opacity="0":stroke-weight="2"stroke-color="#057af3"@click="handleClick(p)"/>  //线组成的网格, 数据格式  [{ lng:**,lat: ** },]</baidu-map>mapStyle: {style: 'midnight'},handler({ BMap, map }) {this.BMap = BMapthis.map = mapthis.center.lng = 116.72963233941316this.center.lat = 39.912480003316986this.zoom = 15}组件式marker和Infowindow组件式一起使用动态插入marker就用动态插入infoWindow
2:script 引用
html页面引入
动态markerconst bPoint = new BMap.Point(point.lonbd, point.latbd) // 创建点  point//经纬度数组var myIcon = new BMap.Icon(this.mapIconRed, new BMap.Size(300, 157))  //mapIconRed,动态iconconst marker = new BMap.Marker(bPoint, { icon: myIcon }) // 做标记// marker = new BMap.Marker(pointArray[i], {// icon: icon//  })this.map.addOverlay(marker) // 在地图上显示标注点this.markers.push(marker)const _this = thismarker.addEventListener('click', function(e) {_this.map.centerAndZoom(new BMap.Point(point.lonbd, point.latbd), 15) //点击显示到中心_this.showInfo(point, bPoint)  //显示  info})})showInfo(point, bPoint) {var opts = {width: 300, // 信息窗口宽度height: 250 // 信息窗口高度}const arr = `<div></div>`var infoWindow = new BMap.InfoWindow(arr, opts) // 创建信息窗口对象this.map.openInfoWindow(infoWindow, bPoint) // 开启信息窗口}绘制线const BMap = this.BMapconst list = this.lineList.line  //经纬度数据//数据格式[{ lng:**,lat: ** },]          [[*,*]]const arr = []list.forEach(a => {a.forEach(b => {arr.push(new BMap.Point(b.lng, b.lat))var myPolygon = new BMap.Polygon(arr, {// fillColor: "#428ffc",// fillOpacity: v.opacity,// trokeColor: "#fff"strokeColor: '#FF0000', // 线条颜色strokeWeight: 5, // 线条宽度strokeStyle: 'dashed', // 线条形式,虚线strokeOpacity: 0.5, // 线条的透明度fillColor: '#1791fc', // 覆盖物的颜色fillOpacity: 0.1 // 覆盖物的透明度})this.map.addOverlay(myPolygon) // 添加区域})})

相关文章:

vue+高德,百度地图

1&#xff0c;npm安装vue-amap npm install vue-amap --save 2&#xff0c;main.js引入 import VueAMap from vue-amap; Vue.use(VueAMap); VueAMap.initAMapApiLoader({key: ,plugin: [AMap.Autocomplete, AMap.PlaceSearch, AMap.Scale, AMap.OverView, AMap.ToolBar, AMap.…...

工信部举行发布会 数字化产业推动元宇宙发展取得良好成效

据官方消息&#xff0c;工业和信息化部12日举行“发挥国家高新区作用 加快推进新型工业化”新闻发布会。 在数字化建设方面取得了良好的成绩&#xff1a; 一是数字经济加速发展。国家高新区着力推动人工智能、大数据、云计算、区块链和元宇宙等新产业新业态蓬勃发展&#xff…...

有没有手机电脑同步的工作时间管理软件?

越来越多的职场人士感到每天的工作任务是比较多的&#xff0c;而工作时间又是有限的&#xff0c;所以经常时间不够用。因此&#xff0c;对于上班族来说&#xff0c;高效的时间管理是提高工作效率、按时完成任务的关键。为了满足这一需求&#xff0c;很多网友都在寻找一款既能在…...

docker安装及简单使用(Linux版本)

文章目录 前言一、docker安装二、docker命令pull&#xff08;安装镜像&#xff09;rmi&#xff08;删除镜像&#xff09;images&#xff08;查看镜像&#xff09;run&#xff08;创建容器&#xff09;删除容器exec&#xff08;进入运行中的容器&#xff09;常用命令 总结如有启…...

山西电力市场日前价格预测【2023-12-10】

1.日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-10&#xff09;山西电力市场全天平均日前电价为384.75元/MWh。其中&#xff0c;最高日前价格为493.66元/MWh&#xff0c;预计出现在16: 00。最低日前电价为282.24元/MWh&#xff0c;预…...

在OpenCV基于深度学习的超分辨率模型实践

1. 引言 OpenCV是一个开源的计算机视觉库&#xff0c;拥有大量优秀的算法。基于最新的合并&#xff0c;OpenCV包含一个易于使用的接口&#xff0c;主要用于实现基于深度学习方法的超分辨率&#xff08;SR&#xff09;。该接口包含预先训练的模型&#xff0c;这些模型可以非常容…...

beebox靶场A3 中等级别 xss通关教程

特别注意&#xff0c;低级和中级的差别在于中级使用了一些函数进行了过滤或转义字符 例如 addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。 预定义字符是&#xff1a; 单引号&#xff08;&#xff09;双引号&#xff08;"&#xff09;反斜杠&#xff08;\&…...

前端知识笔记(二)———Django与Ajax

特点&#xff1a; 异步提交 局部刷新 例子&#xff1a;github注册 动态获取用户名实时的跟后端确认并实时的展示到前端&#xff08;局部刷新&#xff09; 朝后端发送请求的方式 1.浏览器地址栏直接输入url回车 -----》get请求 2.a标签的href属性 -----》get请求 3…...

C++新经典模板与泛型编程:用成员函数重载实现is_base_of

用成员函数重载实现is_base_of std::is_base_of是一个C 11标准中用于判断某个类是否是另一个类父类的类模板。 #include "killCmake.h"#include<string>using namespace std;class A { };class B : public A { public:B(int x): x_(x){} private:int x_; };/…...

【vue3】处理数组方法,在数组中获取指定条件所在的数组对象等持续更新笔记~~

1、在数组中获取指定条件所在的数组对象 &#xff08;1&#xff09;filter方法获取到的是包含指定项的数组 data.checkRow res.result.filter(item > item.checked 1);打印&#xff1a; &#xff08;2&#xff09;map方法取到的是包含指定项的数组&#xff0c;如果满足…...

digit函数

题目描述 在程序中定义一函数 digit(n,k)&#xff0c;它能分离出整数 n 从右边数第 k 个数字。 输入格式 正整数 n 和 k。 输出格式 一个数字。 输入输出样例 输入 #1 31859 3 输出 #1 8 说明/提示 n≤10^9。 k≤10。 因为用整数n来做有点难&#xff0c;所以我用…...

Linux中的堡垒机搭建以及使用

JumpServer搭建 安装应用包 curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash 一路回车即可安装完毕&#xff08;可根据需求更改&#xff09; JumpServer的 配置文件路径 /opt/jumpserver/config/config.tx…...

ubuntu安装微信客户端

安装 Wine 环境 Wine环境包下载地址&#xff1a;http://archive.ubuntukylin.com/software/pool/partner/ukylin-wine_70.6.3.25_amd64.deb 下载完安装包后在命令行运行以下命令安装环境&#xff1a; sudo apt-get install -f -y ./ukylin-wine_70.6.3.25_amd64.deb 安装微信…...

ajax清空所有表单内容,包括input标签、单选框radio、多选框CheckBox、下拉框select以及文本域内容

为了实现重置并清空表单内容&#xff0c;你可以使用 jQuery 的 val 方法将各种表单元素的值设置为空字符串&#xff0c;并通过 layui 的 form.render 方法来更新表单的渲染。以下是修改后的代码&#xff1a; layui.use(["form", "laydate", "jquery&…...

通配符用法

在本篇文章中&#xff0c;本文将说明通配符用法。 &#xff08;1&#xff09;概述 通配符是在Linux命令中用于匹配文件名的特殊字符。它们可以帮助我们快速定位和操作文件。本文将介绍一些常用的通配符及其示例用法。 通配符是一种用于模式匹配的特殊字符。在计算机领域中&am…...

如何从eureka-server上进行服务发现,负载均衡远程调用服务

在spring cloud的maven的pom文件中添加eureka-client的依赖坐标 <!--eureka-client依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependen…...

Flutter实现Android拖动到垃圾桶删除效果-Draggable和DragTarget的详细讲解

文章目录 Draggable介绍构造函数参数说明使用示例 DragTarget 介绍构造函数参数说明使用示例 DragTarget 如何接收Draggable传递过来的数据&#xff1f; Draggable介绍 Draggable是Flutter框架中的一个小部件&#xff0c;用于支持用户通过手势拖动一个子部件。它是基于手势的一…...

Nacos和Eureka冲突问题原因分析

目录 一、问题现象二、解决办法三、原因分析 一、问题现象 Description:Field autoServiceRegistration in org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration required a single bean, but 2 were found:- eurekaAutoServiceRegis…...

『C++成长记』拷贝构造函数

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;C &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、拷贝构造函数 &#x1f4d2;1.1拷贝构造函数的概念 &#x1f4d2;1.2拷贝构造…...

B 站基于 StarRocks 构建大数据元仓

作者&#xff1a;bilibili 大数据高级开发工程师 杨洋 B站大数据元仓是一款用来观测大数据引擎运行情况、推动大作业治理的系统诊断产品。经过调研和性能测试&#xff0c;大数据元仓最终以 StarRocks 为技术底座&#xff0c;从实际的应用效果来看&#xff0c;大部分查询都能在几…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...