Vue3+Vite连接高德地图JS API——地图显示、输入搜索

news2025/4/24 13:28:48

1 开通高德地图Web端JS API服务

1、进入高德地图API官网(https://lbs.amap.com/):
在这里插入图片描述
2、注册登录。
3、进入控制台。

在这里插入图片描述

4、点击“应用管理”,点击“我的应用”,创建新应用。

在这里插入图片描述

5、添加Key,服务平台选择“Web端(JS API)”,白名单不要填写,勾选阅读并同意。

在这里插入图片描述

点击提交后,就能看到Key已经生成,记住这里的Key和安全密钥。

在这里插入图片描述

2 配置Vue项目文件

2.1 简易方法

因此直接下载官方提供的项目,修改一下Key就能用。
1、进入网址:

https://lbs.amap.com/api/javascript-api-v2/guide/abc/amap-vue

点击“下载Vue3组件完整代码”。
在这里插入图片描述
2、修改Key
进入工程,点击MapContainer.vue,添加自己的Key。

在这里插入图片描述
3、连接服务器
调试窗口输入:

npm install
npm run dev

进入网址可以看到地图。
在这里插入图片描述

2.2 手动编写

这里编写一些搜索地点并能显示地图的小demo。

在这里插入图片描述

2.2.1 构建项目

终端输入:

npm create vue@latest

输入项目名和包名称:

gaodeMap_demo

进入工程:

cd gaodeMap_demo

安装npm

npm install

测试:

npm run dev

可以看到如下网页:
在这里插入图片描述

2.2.2 下载包

2.2.2.1 按需导入element-plus包

安装unplugin-vue-components、unplugin-auto-import:

npm install -D unplugin-vue-components unplugin-auto-import

修改vite.config.js配置文件:

// vite.config.js
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  // ...
  plugins: [
    // ...
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
})

官方链接:

https://element-plus.gitee.io/zh-CN/guide/quickstart.html#%E6%8C%89%E9%9C%80%E5%AF%BC%E5%85%A5

2.2.2.2 导入高德@amap/amap-jsapi-loader

命令行终端输入:

npm i @amap/amap-jsapi-loader --save
npm install -D unplugin-vue-components unplugin-auto-import

2.2.2 编写程序

项目中新建MapContainer.vue,用作地图组件。
代码如下:

// MapContainer.vue
<template>
    <div>Handbook.vue的组件</div>
    <el-input v-model="positionInput" 
        id="searchInputId"
        class="common-layout"
        size="small"
        placeholder="输入关键词搜索位置"
        style="height:25px;width:26%;margin-left:1%;"/>
    <el-button>搜索</el-button>
    <div class="gdmap-container">
        <div id="container"></div>
    </div>
</template>

<script>
import AMapLoader from "@amap/amap-jsapi-loader";
import { onMounted, onUnmounted,ref } from 'vue';

export default{
    setup(){
        const positionInput = ref('');
       
        function initMap(){
            window._AMapSecurityConfig = {
                securityJsCode: "5e*********************7e7", // 密钥
            };	// 重要!
            AMapLoader.load({
                key: "a62*************************92b", // 申请好的Web端开发者Key,首次调用 load 时必填
                version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
                plugins: [
                'AMap.AutoComplete',
                'AMap.PlaceSearch'
                ], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
            })
            .then((AMap) => {
                var map = new AMap.Map("container",{
                    resizeEnable: true,
                    viewMode: "3D", // 是否为3D地图模式
                    zoom: 8, // 初始化地图级别
                    center: [118,30], // 初始化地图中心点位置
                });
                var autoOptions = {
                    input:"searchInputId"
                };
                var auto = new AMap.AutoComplete(autoOptions);
                var placeSearch = new AMap.PlaceSearch({
                    map:map
                })
                auto.on("select",select);
                function select(e) {
                    placeSearch.setCity(e.poi.adcode);
                    placeSearch.search(e.poi.name);  //关键字查询查询
                }
            })
        }
        onMounted(() => {
            console.log("onmounted");
            initMap();
        });
        onUnmounted(() => {
            map?.destroy();
        });
        return{
            positionInput,
        }
    }
}
</script>

<style scoped>
.gdmap-container{
    width: 500px;
    height:300px;
}
#container {
  padding: 0px;
  margin: 0px;
  border:1px solid gray;
  width: 100%;
  height: 100%;
}
</style>

2.2.3 引用

为了方便这里直接修改app.vue
删除不需要的vue,添加

<template>
  <div>
    <MapContainer />
  </div>
</template>

<script setup>
import MapContainer from './MapContainer.vue';
</script>

<style scoped>
</style>

2.2.4 运行

命令行输入:

npm run dev

输入框编辑文字,可以看到如下画面:
在这里插入图片描述
搜索按钮暂时没写回调函数,将就着用。

3 问题小结

1、地图无法显示:地图的块元素div给的参数是id="container",样式中需要使用#container

2、本人在编程的时候出现了无法自动补全的情况,错误码是INVALID_USER_SCODE,官方说明是安全码未通过验证,因此添加了在代码中添加了安全密钥:

window._AMapSecurityConfig = {
    securityJsCode: "「你申请的安全密钥」",
  };

添加后,代码能够成功运行,input输入窗口下方出现了自动补全文字选项。

3、输入框最好使用el-input,其次是input的id前面不要加:,否则就是另外一个意思(我也是初学者,说不太清)。AMap的自动补全是绑定这个id的。


官网链接:

https://lbs.amap.com/api/javascript-api-v2/guide/abc/load

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

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

相关文章

Mysql数据库高版本向低版本迁移方法

操作步骤 1、首先低版本Mysql创建数据库 2、使用navicat工具&#xff0c;复制高版本数据库的表 3、在低版本数据库中粘贴&#xff0c;弹出数据传输界面&#xff0c;选项去掉包含字符集、包含引擎及表类型 使用该版本实现了Mysql8.0向Mysql5.5的迁移&#xff0c;如果在Mysql8.0生…

VS游戏打包教程

我用得天天酷跑小游戏做的例子 1:安装打包插件 2:在解决方案里新建一个项目 3:新建一个setup项目 4:界面如下(通过右键folder,可以创建folder目录和输出) 5:素材文件 6:素材放完了就项目输出 7:创建快捷方式 右键这个主输出选择第一个create shortcut 8:将这个快捷方式,拖到,…

《最新出炉》系列入门篇-Python+Playwright自动化测试-9-页面(page)

1.简介 通过前边的讲解和学习&#xff0c;细心认真地小伙伴或者童鞋们可能发现在Playwright中&#xff0c;没有Element这个概念&#xff0c;只有Page的概念&#xff0c;Page不仅仅指的是某个页面&#xff0c;例如页面间的跳转等&#xff0c;还包含了所有元素、事件的概念&#…

ESU毅速丨制造企业需不需要建设增材制造中心?

随着科技的不断发展&#xff0c;增材制造技术已经成为制造行业的新宠。越来越多的企业开始考虑建设增材制造中心&#xff0c;以提高生产效率、降低成本、加速产品创新。但是&#xff0c;对于制造企业来说&#xff0c;是否需要建设增材制造中心呢&#xff1f; 首先&#xff0c;我…

EfficientSAM 代码推理

SA网站主页&#xff1a;Segment Anything | Meta AI 论文主页&#xff1a;EfficientSAM 代码地址&#xff1a;https://github.com/yformer/EfficientSAM 官方给的推理代码是CPU版本的&#xff0c;如果想使用GPU推理需要自己修改一下 经过推理测试3090GPU&#xff0c;官方测试…

从字节码角度分析i++与++i的区别

情况一 : 当i与i没有对象接收值时, 没有任何区别 情况二 : 当i与i没有对象接收值时 可以看到 i时, 先把i值10从局部变量表拿到操作数栈(29), 之后执行iinc, 直接修改局部变量表里面的值10修改成11(30), 最后将操作树栈里面的值赋值给i4(33) (由于iinc直接修改的局部变量表里面…

鸿蒙开发-UI-布局

鸿蒙开发-序言 鸿蒙开发-工具 鸿蒙开发-初体验 鸿蒙开发-运行机制 鸿蒙开发-运行机制-Stage模型 鸿蒙开发-UI 鸿蒙开发-UI-组件 鸿蒙开发-UI-组件-状态管理 鸿蒙开发-UI-应用-状态管理 鸿蒙开发-UI-渲染控制 文章目录 前言 一、布局概述 1.布局结构 2.布局元素组成 3.布局分类 …

微信小程序快速入门03

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、生命周期生…

花了三天的时间做了一个多功能 AI 助手

嗨&#xff01;我是团子&#xff0c;大家新年快乐呀~ 前几天看到一些好朋友在朋友圈晒自己的年度总结&#xff0c;立新年 Flag&#xff0c;看到大家一年满满的收获&#xff0c;再看看自己&#xff0c;不由得想再看看人家&#xff0c;然后再看看自己&#xff0c;然后再看看人家…

(南京观海微电子)——色温介绍

色温是表示光线中包含颜色成分的一个计量单位。从理论上说&#xff0c;黑体温度指绝对黑体从绝对零度&#xff08;&#xff0d;273℃&#xff09;开始加温后所呈现的颜色。黑体在受热后&#xff0c;逐渐由黑变红&#xff0c;转黄&#xff0c;发白&#xff0c;最后发出蓝色光。当…

NFTScan | 01.01~01.07 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2024.01.01~ 2024.01.07 NFT Hot News 01/ 空投 | Mint Blockchain 将于 2024 年 1 月 10 号启动 Mint Genesis NFT 空投活动 1 月 1 日&#xff0c;Mint Blockchain 宣布将于 2024 年 1…

双指针算法: 有效三角形的个数

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 前言 声明…

即将推出的 OpenWrt One/AP-24.XY:OpenWrt 和 Banana Pi 合作路由器板

OpenWrt开发人员正在与Banana Pi合作开发OpenWrt One/AP-24.XY路由器板。OpenWrt 是一个轻量级嵌入式 Linux 操作系统&#xff0c;支持近 1,800 个路由器和其他设备。然而&#xff0c;这将是第一块由 OpenWrt 直接开发的路由器板。 该主板将基于 MediaTek MT7981B (Filogic 82…

【教学类-43-19】20240113 数独(一) 3-5-6-7-8-10宫格 无空行A4模板

作品展示&#xff1a; 3宫格 5宫格 6宫格 7宫格 8宫格 10宫格&#xff0c;题目连在一起 背景需求&#xff1a; 制作十宫格数独模板&#xff0c;为了凑满20行&#xff0c;删除了每个数独题之间的行列分割线 【教学类-43-18】A4最终版 20240111 数独11.0 十宫格X*YZ套(n10)&am…

构建中国人自己的私人GPT-有道GPT

创作不易&#xff0c;请大家多鼓励支持。 在现实生活中&#xff0c;很多人的资料是不愿意公布在互联网上的&#xff0c;但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢&#xff1f;于是我们构建自己或公司的私人GPT变得非常重要。 先看效果 一、…

[Windows] Win10 常用快捷键

文章目录 &#x1f680; [Windows] Win10 常用快捷键&#x1f310; Windows 操作系统&#x1f525; Windows 10 &#x1f310; Windows 10 快捷键概览&#x1f525; 基本快捷键&#x1f525; 窗口快捷键&#x1f525; 功能快捷键 &#x1f4dd; 小结 &#x1f680; [Windows] W…

网站后台拿Webshell

通过注入或者其他途径&#xff0c;获取网站管理员账号和密码后&#xff0c;找到后台登录地址&#xff0c;登录后&#xff0c;寻找后台漏洞上传网页后门&#xff0c;获取网站的webshell webshell的作用是方便攻击者&#xff0c;webshel是拥有fso权限&#xff0c;根据fso权限的不…

Android Studio 虚拟机 Unknown Error 解决

前言 尝试了网上很多解决方式&#xff0c;但很遗憾&#xff0c;都没效果&#xff1b; 于是我就想啊&#x1f914;&#xff0c;虚拟机属于SDK的一部分&#xff0c;那有没有一种可能&#xff0c;是SDK出了问题&#xff1b; 于是我就换了新的SDK&#xff0c;结果 ---- 完美解决…

高德地图Web服务使用方法——电子围栏

1 高德地图Web服务 1.1 添加Key 注册高德地图&#xff0c;进入控制台&#xff0c;创建新应用&#xff0c;添加Key&#xff0c;选择Web服务&#xff0c;不添加域名白名单&#xff0c;勾选同意政策。 刷新界面&#xff0c;记住获取到的Key。 1.2 下载安装Postman https://www…

AWS-SAA-C03认证——之基础知识扫盲

文章目录 前言一、Amazon ECS二、 Amazon EKS三、Amazon EC2四、Elastic Beanstalk五、AWS Fargate六、 AWS Lambda &#xff08;serverless&#xff09;七、Amazon EBS7.1 EBS生命周期 八、Amazon Elastic File System (EFS) -共享文件系统九、什么是 Amazon S3&#xff1f;9.…