在Vue中使用高德地图

news2025/2/26 15:56:21

在Vue中使用高德地图

    • 一、如何在Vue中引入基础高德地图
      • 1、步骤一:注册并登录高德地图开放平台,申请密钥
      • 2、步骤二:安装高德地图加载器
      • 3、封装一个自定义地图组件,并初始化地图
    • 二、根据关键词搜索,并定位到搜索的位置
    • 三、添加放大缩小地图、转盘
    • 四、点击地图获取经纬度
    • 五、地图上绘制标记点、圆形、曲线、矩形和多边形等,及其绘制清除
    • 六、总结

一、如何在Vue中引入基础高德地图

根据官网提示,在Web端,我们需要高德地图加载器:npm i @amap/amap-jsapi-loader -S

注意:
* 此教程适用于Web端,移动端还未尝试,感兴趣的或者有需要的可单独联系我
* @amap/amap-jsapi-loader加载器npm地址

1、步骤一:注册并登录高德地图开放平台,申请密钥

高德地图开放平台
操作步骤如下图:
在这里插入图片描述

2、步骤二:安装高德地图加载器

npm  i  @amap/amap-jsapi-loader -S

3、封装一个自定义地图组件,并初始化地图

<template>
   <!-- 百度地图  -->
  <div id="bai-du-map">
    <!-- 技术支持和联系方式  -->
    
  </div>
</template>

<script>
import AMapLoader from "@amap/amap-jsapi-loader";
// 设置安全密钥
window._AMapSecurityConfig = {
    securityJsCode: '安全密钥',
}
export default {
    data() {
        return {
            map : null,
            mouseTool : null,
            overlays : [],
            auto : null,
            placeSearch : null, 
        }
    },
    methods : {
        initMap() {
            AMapLoader.load({
                "key": "申请好的Web端开发者Key,首次调用 load 时必填", 
                "version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
                "plugins": [地图用到的插件],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
            }).then((AMap)=>{
                // 初始化地图
                this.map = new AMap.Map('bai-du-map',{
                    viewMode : "2D",  //  是否为3D地图模式
                    zoom : 13,   // 初始化地图级别
                    center : [113.65553,34.748764], //中心点坐标  郑州
                    resizeEnable: true
                });
            }).catch(e => {
                console.log(e);
            });
        }
};
</script>

<style scoped>
#bai-du-map {
    overflow: hidden;
    width: 100%;
    height: 100%;
    margin: 0;
    font-family: "微软雅黑";
}
</style>
<style>
/* 隐藏高德logo  */
.amap-logo {
    display: none !important;
}
/* 隐藏高德版权  */
.amap-copyright {
    display: none !important;
}
</style>

在这里插入图片描述
注意点:

2021年起,高德地图必须使用安全密钥 即是

window._AMapSecurityConfig = {
    securityJsCode: '安全密钥',
}

在这里插入图片描述

二、根据关键词搜索,并定位到搜索的位置

<template>
   <!-- 百度地图  -->
  <div id="bai-du-map">
    <!-- 技术支持和联系方式  -->
    
  </div>
</template>

<script>
import AMapLoader from "@amap/amap-jsapi-loader";
window._AMapSecurityConfig = {
    // 设置安全密钥
    securityJsCode: '安全密钥',
}
export default {
    props : ["iptId"],
    data() {
        return {
            map : null,
            mouseTool : null,
            overlays : [],
            auto : null,
            placeSearch : null, 
        }
    },
    methods : {
        initMap() {
            AMapLoader.load({
                "key": "密钥", // 申请好的Web端开发者Key,首次调用 load 时必填
                "version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
                "plugins": ["AMap.AutoComplete","AMap.PlaceSearch"],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
                // "plugins": [],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
            }).then((AMap)=>{
                this.map = new AMap.Map('bai-du-map',{
                    viewMode : "2D",  //  是否为3D地图模式
                    zoom : 13,   // 初始化地图级别
                    center : [113.65553,34.748764], //中心点坐标  郑州
                    resizeEnable: true
                });

               this.auto = new AMap.AutoComplete({
                    input : this.iptId  // 搜索框的id 
                }); 
                this.placeSearch = new AMap.PlaceSearch({
                    map: this.map,
                    panel: "panel", // 结果列表将在此容器中进行展示。
                    // city: "010", // 兴趣点城市
                    autoFitView: true, // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围
                    extensions: 'base' //返回基本地址信息
                });
                this.auto.on("select", this.select);//注册监听,当选中某条记录时会触发
            }).catch(e => {
                console.log(e);
            });
        },
     
        select(e) {
            this.placeSearch.setCity(e.poi.adcode);
            this.placeSearch.search(e.poi.name);  //关键字查询查询
        }
    },
    mounted() {
        this.initMap();
    },
};
</script>

在这里插入图片描述

三、添加放大缩小地图、转盘

<template>
   <!-- 百度地图  -->
  <div id="bai-du-map">
    <!-- 技术支持和联系方式  -->
    
  </div>
</template>

<script>
import AMapLoader from "@amap/amap-jsapi-loader";
window._AMapSecurityConfig = {
    // 设置安全密钥
    securityJsCode: '安全密钥',
}
export default {
    props : ["iptId"],
    data() {
        return {
            map : null,
            mouseTool : null,
            overlays : [],
            auto : null,
            placeSearch : null, 
        }
    },
    methods : {
        initMap() {
            AMapLoader.load({
                "key": "密钥", // 申请好的Web端开发者Key,首次调用 load 时必填
                "version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
                "plugins": ["AMap.Scale","AMap.ToolBar","AMap.ControlBar","AMap.MouseTool","AMap.MapType","AMap.HawkEye"],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
                // "plugins": [],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
            }).then((AMap)=>{
                this.map = new AMap.Map('bai-du-map',{
                    viewMode : "2D",  //  是否为3D地图模式
                    zoom : 13,   // 初始化地图级别
                    center : [113.65553,34.748764], //中心点坐标  郑州
                    resizeEnable: true
                });
                this.map.addControl(new AMap.Scale());   // 添加左下角的比例尺
                let toolBar = new AMap.ToolBar({
                    position: {
                        bottom: '210px',
                        right: '35px'
                    }
                });
                let controlBar = new AMap.ControlBar({
                    position: {
                        bottom: '280px',
                        right: '10px',
                    },
                });
                this.map.addControl(toolBar);   // 添加右下角的放大缩小
                this.map.addControl(controlBar);   // 方向盘
                this.map.addControl(new AMap.MapType());   // 添加右上角的标准图和卫星图  和路况
                this.map.addControl(new AMap.HawkEye());   // 添加地图放大镜
            }).catch(e => {
                 console.log(e);
            });
        },
    },
    mounted() {
        this.initMap();
    },
};
</script>

四、点击地图获取经纬度

initMap() {
            AMapLoader.load({
                "key": "key", // 申请好的Web端开发者Key,首次调用 load 时必填
                "version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
                "plugins": ["AMap.Scale","AMap.ToolBar","AMap.AutoComplete","AMap.PlaceSearch","AMap.ControlBar","AMap.MouseTool"],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
                // "plugins": [],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
            }).then((AMap)=>{
                // 鼠标点击获取经纬度
                this.map.on('click', function(e) {
                    console.log("经度",e.lnglat.getLng())
                    console.log("纬度",e.lnglat.getLat())
                });
            }).catch(e => {
                console.log(e);
            });
        },

五、地图上绘制标记点、圆形、曲线、矩形和多边形等,及其绘制清除

<template>
   <!-- 百度地图  -->
  <div id="bai-du-map">
    <!-- 技术支持和联系方式  -->
    
  </div>
</template>

<script>
import AMapLoader from "@amap/amap-jsapi-loader";
window._AMapSecurityConfig = {
    // 设置安全密钥
    securityJsCode: '安全密钥',
}
export default {
    data() {
        return {
            map : null,
            mouseTool : null,
            overlays : [],
            auto : null,
            placeSearch : null, 
        }
    },
    methods : {
        initMap() {
            AMapLoader.load({
                "key": "密钥", // 申请好的Web端开发者Key,首次调用 load 时必填
                "version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
                "plugins": ["AMap.Scale","AMap.ToolBar","AMap.AutoComplete","AMap.PlaceSearch","AMap.ControlBar","AMap.MouseTool"],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
                // "plugins": [],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
            }).then((AMap)=>{
                this.map = new AMap.Map('bai-du-map',{
                    viewMode : "2D",  //  是否为3D地图模式
                    zoom : 13,   // 初始化地图级别
                    center : [113.65553,34.748764], //中心点坐标  郑州
                    resizeEnable: true
                });
                this.mouseTool = new AMap.MouseTool(this.map);
                // 监听draw事件可获取画好的覆盖物
                this.mouseTool.on('draw',function(e){
                    this.overlays.push(e.obj);
                }.bind(this)) 
            }).catch(e => {
                console.log(e);
            });
        },
        draw(type) {
            switch(type){
                case 'marker':{
                    this.mouseTool.marker({
                        //同Marker的Option设置
                    });
                    break;
                }
                case 'polyline':{
                    this.mouseTool.polyline({
                        strokeColor:'#80d8ff'
                        //同Polyline的Option设置
                    });
                    break;
                }
                case 'polygon':{
                    this.mouseTool.polygon({
                        fillColor:'#00b0ff',
                        strokeColor:'#80d8ff'
                        //同Polygon的Option设置
                    });
                    break;
                }
                case 'rectangle':{
                    this.mouseTool.rectangle({
                        fillColor:'#00b0ff',
                        strokeColor:'#80d8ff'
                        //同Polygon的Option设置
                    });
                    break;
                }
                case 'circle':{
                    this.mouseTool.circle({
                        fillColor:'#00b0ff',
                        strokeColor:'#80d8ff'
                        //同Circle的Option设置
                    });
                    break;
                }
            }
           
        }, 
    },
    mounted() {
        this.initMap();
    },
};
</script>

清除绘制

 // 清除
 // map.remove(overlays)
 // overlays = [];
 // 或者
 // mouseTool.close(true)//关闭,并清除覆盖物

六、总结

一般的,使用高德地图,不需要参考其他博主写的,基本上就是安装一个加载器@amap/amap-jsapi-loader,然后参考高德地图开放webjs文档,就完全可以自己实现业务需求

高德地图开放webjs文档 ,这个API文档写的很好,包括了针对于Vue和React的基本引用,以及相关地图需求都有API满足

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷歌浏览器自带翻译网页插件没用了怎么办?这里有解决办法。

前言 正当我打算来一波科学上网的时候&#xff0c;当我用谷歌浏览器打开文档网站时候&#xff0c;发现发现google浏览器网页翻译插件没用了。经过了我一段时间的搜寻&#xff0c;终于有了解决方案。 原因 从 10 月 20 日起&#xff0c;谷歌在陆续移除国内服务器上的谷歌翻译…

Vue学习之从入门到神经(两万字收藏篇)

写在前面 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家:人工智能学习网站 Vue写在前面前言Vue.js三种安装方式一、 Vue导入二、Vue基本语法1.钩子函数2. 插值表达式3.显示数据(v-text和v-html)4.数据双向…

深入理解Vue响应式原理

前言 Vue响应式原理是Vue最独特的特性之一&#xff0c;当数据模型进行修改时&#xff0c;视图就会进行更新&#xff0c;这使得状态管理简单直接&#xff0c;但是其底层的细节还是需要我们深入学习理解&#xff0c;这样遇到一些问题我们才能快速进行定位&#xff0c;并解决&…

【UML】-- 顺序图练习题含答案(自动售货机、学生选课、提款机、购买地铁票、洗衣机工作)

注意&#xff1a;对象表示法对象名需要下划线&#xff0c;此文章没有标注 一、练习一 根据下面的叙述&#xff0c;绘制一幅关于顾客从自动售货机中购买物品的顺序图。顾客&#xff08;User&#xff09;先向自动售货机的前端&#xff08;Front&#xff09;投币&#xff1b;售货…

CSDN文章点赞、收藏、评论后到底发生了什么?简要分析HTTP交互机制

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他拥有的&#xff0c;而不是他会的。所以可以不学无数&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关…

node.js是干什么的

一、Node.js简介 Node.js是一个开源和跨平台的JavaScript运行时环境。它几乎是任何类型项目的流行工具&#xff01; Node.js在浏览器之外运行V8 JavaScript引擎&#xff08;Google Chrome的内核&#xff09;。这使得Node.js的性能非常好。 Node.js应用程序在单个程序中运行&…

使用SpringBoot一小时快速搭建一个简单后台管理(增删改查)(超详细教程)

最近也是临近期末了&#xff0c;各种的期末大作业&#xff0c;后台管理也是很多地方需要用到的&#xff0c;为了方便大家能快速上手&#xff0c;快速搭建一个简单的后台管理&#xff0c;我花了两天时间整理了一下 我会从0开始介绍&#xff0c;从数据库的设计到前端页面的引入最…

使用uniapp开发APP时的调试/安卓打包等

一、调试 1.先用数据线连接电脑和手机&#xff0c;选择“文件传输”&#xff0c; 2.打开开发者模式&#xff0c;华为手机举列-->设置-->关于手机-->版本号&#xff0c;多次连续点击“版本号”&#xff0c;就会提示已打开 开发者模式 3.华为手机举列-->设置-->…

Vue:element-ui中表格过长内容隐藏显示

一、el-table表格 在使用VUE显示后台数据时&#xff0c;经常会遇到数据过长&#xff0c;显示出来的效果很难看&#xff0c;如下图所示&#xff1a; 上图中&#xff0c;红框框出的内容由于长度过长&#xff0c;占据了三行空间&#xff0c;如果内容更多的话&#xff0c;占据行数就…

基于WEB的网上购物系统的设计与实现(附:源码 论文 sql文件)

摘 要 随着计算机网络技术的飞速发展和人们生活节奏的不断加快&#xff0c;电子商务技术已经逐渐融入了人们的日常生活当中&#xff0c;网上商城作为电子商务最普遍的一种形式&#xff0c;已被大众逐渐接受。因此开发一个网上商城系统&#xff0c;适合当今形势&#xff0c;更加…

【Windows Server 2019】Web服务 IIS 配置与管理—— IIS 的安装与基本配置 Ⅲ

目录4. 安装 IIS 服务器5. IIS 的基本配置5.1 绑定 IP参考资料关联博文4. 安装 IIS 服务器 准备工作&#xff1a;选择一台服务器作为WEB-IIS服务器&#xff0c;IP地址为192.168.82.208。 在Windows Server 2019系统中&#xff0c;IIS角色是可选组件&#xff0c;默认情况下是没…

Nginx之负载均衡upstream模块简介和使用

一、upstream模块简介 Nginx的负载均衡功能依赖于ngx_http_upsteam_module模块&#xff0c;所支持的代理方式包括proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass和grpc_pass。ngx_http_upstream_module模块有允许Nginx定义一组或多组服务组&#xff0c;使用…

在 vue eslint 报错 error “Component name “*****“ should always be multi-word”,该怎么办?

目录 出现的问题&#xff1a; 报错的原因&#xff1a; 解决方案&#xff1a; 方案一 &#xff1a;重命名(亲测有效) 方案二 &#xff1a;配置 vue.config.js 文件&#xff08;网上方法&#xff0c;本人使用无效&#xff09; 方案三 &#xff1a;配置 .eslintrc.js文件&a…

css设置渐变色

css如何设置自定义渐变色&#xff1f;线性渐变篇 CSS渐变可以让你在两个或多个指定颜色之间显示平滑的过渡 CSS定义了三种渐变类型: Linear Gradients (goes down/up/left/right/diagonally) 下降/ 上升/左/右/对角线Radial Gradients (defined by their center) 由中心定义…

SpringBoot整合WebSocket实现后端向前端发送消息

目录 一、什么是 websocket 接口 二、适用场景 三、示例代码 3.1、添加pom.xml依赖 3.2、创建WebSokcet配置类 3.3、创建测试发送消息接口 3.4、测试webSocket&#xff08;http://www.jsons.cn/websocket/&#xff09; 一、什么是 websocket 接口 使用 websocket 建立长连…

vue中的render函数(通俗、易懂)

文章目录一、初步认识render函数二、为什么使用render函数三、render函数的解析一、初步认识render函数 import Vue from vue import App from ./AppVue.config.productionTip falsenew Vue({el: #app,render: h > h(App) })在使用脚手架创建vue项目的过程&#xff0c;我们…

纯前端文档预览,还要支持所有主流格式,有这一篇就足够了

写在前面 纯前端的文档预览功能&#xff0c;是非常常见的需求&#xff0c;但就是这么简单的需求&#xff0c;难住了许多可爱的小伙伴们。别急&#xff0c;先访问一下解决方案&#xff0c;给你一个惊喜&#xff0c;再往下看&#xff1a; 文件在线预览DEMO 服务器文件预览DEMO …

【计算机网络】Web服务器的配置

目录 课题描述 需求分析 2.1 WEB服务器基本构架 2.1.1 WEB服务器和浏览器 2.2 HTTP协议 2.2.1 HTTP简介 2.2.2 HTTP工作原理 2.3 FTP协议 2.3.1 FTP简介 2.3.2 FTP工作原理 2.4 ISS服务作用 概要设计 3.1 ISS服务器的安装与配置 3.2 详细设计 结果分析 4.1 We…

JS实现轮播图(一看就懂逻辑清晰)

轮播图有很多种实现方法&#xff0c;这是其中一种最清晰的方法。思路很清晰&#xff0c;代码很简单&#xff0c;欢迎大佬多指教。 先来看下效果图&#xff0c;嫌麻烦就不用具体图片来实现了&#xff0c;主要是理清思路。&#xff08;自动轮播&#xff0c;左右按钮切换图片&…

Vue首屏加载过慢出现白屏的六种优化方案

公司业务展示官网开发&#xff0c;构建版本后在测试环境下&#xff0c;发下首屏加载损耗高达几十秒&#xff08;服务器在国外&#xff0c;所以也导致加载时间变长&#xff09;&#xff0c;于是采用了以下方法来达到提速目的。 1. 采用懒加载的方式 路由懒加载和组件懒加载&a…