Vue项目接入高德地图

news/2024/12/26 16:54:34/文章来源:https://www.cnblogs.com/IamHzc/p/18633531

说明:最近开发中有需要使用英文版本的地图,比较下采用了高德地图(百度不支持英文JS API,谷歌需要visa信用卡认证),记录一下开发过程。

  1. 申请密钥,地址:高德地图开放平台
  2. 在index.html中引入对应文件
<link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" />
<link rel="stylesheet" type="text/css" href="https://a.amap.com/jsapi_demos/static/demo-center/css/prety-json.css"><script type="text/javascript">window._AMapSecurityConfig = {securityJsCode: "安全密钥",}
</script>
<script src="https://cache.amap.com/lbs/static/es5.min.js"></script>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=密钥KEY&plugin=AMap.Autocomplete"></script>
<script type="text/javascript" src="https://a.amap.com/jsapi_demos/static/demo-center/js/jquery-1.11.1.min.js" ></script>
<script type="text/javascript" src="https://a.amap.com/jsapi_demos/static/demo-center/js/underscore-min.js" ></script>
<script type="text/javascript" src="https://a.amap.com/jsapi_demos/static/demo-center/js/backbone-min.js" ></script>
<script type="text/javascript" src='https://a.amap.com/jsapi_demos/static/demo-center/js/prety-json.js'></script>
  1. 组件开发
  • 组件一:用于标记位置和查找地点
<template><div><div id="container"></div></div>
</template><script>
export default {props: {center: {type: Object,default: () => ({ lng: 0, lat: 0 }) },zoom: {type: Number,default: 13}},data() {return {selectedLang: this.$i18n.locale === 'en' ? 'en' : 'zh_cn',map: null,marker: null,currentCenter: { lng: this.center.lng, lat: this.center.lat }, // 当前中心点searchMarkers: []  // 查找标记点};},mounted() {this.initMap();},beforeDestroy() {if (this.map) {this.map.destroy();}},methods: {// 初始化地图initMap() {this.initializeMap(this.currentCenter);// 地图点击事件AMap.event.addListener(this.map, 'click', (e) => {this.currentCenter = { lng: e.lnglat.getLng(), lat: e.lnglat.getLat() }; this.addMarker(this.currentCenter); this.$emit('updateCenter', this.currentCenter); });// 语言切换this.$watch('selectedLang', (newLang) => {this.map.setLang(newLang);});// 地图缩放事件,告诉父组件当前层级AMap.event.addListener(this.map, 'zoomend', () => {const currentZoom = this.map.getZoom();this.$emit('curMapLevel', currentZoom); });},// 初始化地图initializeMap(center) {if(center.lng == null || center.lat == null){this.map = new AMap.Map('container', {resizeEnable: true,lang: this.selectedLang,zoom: this.zoom});}else{this.map = new AMap.Map('container', {resizeEnable: true,center: [center.lng, center.lat],lang: this.selectedLang,zoom: this.zoom});this.addMarker(center);}},// 搜索关键词searchKeywords(keywords) {AMap.plugin('AMap.Autocomplete', () => {var autoOptions = {city: '全球',lang: this.selectedLang}var autoComplete = new AMap.Autocomplete(autoOptions);autoComplete.search(keywords, (status, result) => {console.log(result);if (status === 'complete' && result.info === 'OK') {this.addSearchMarkers(result.tips); } else {console.error('自动完成失败:', result.info);}});});},addMarker(position) {if (this.marker) {this.marker.setMap(null); }this.marker = new AMap.Marker({position: [position.lng, position.lat]});this.marker.setMap(this.map);},// 添加搜索标记点addSearchMarkers(tips) {this.searchMarkers.forEach(marker => marker.setMap(null));this.searchMarkers = [];if (tips.length > 0) {this.map.setCenter([tips[0].location.lng, tips[0].location.lat]);const firstTip = tips[0];const firstMarkerPosition = [firstTip.location.lng, firstTip.location.lat];const infoWindow = new AMap.InfoWindow({content: `<div><strong>${firstTip.name}</strong> <span style="color: #3d6dcc; cursor: pointer;" onclick="window.open('https://www.amap.com/detail/${firstTip.id}')">` + this.$t('common.detail') +`»</span><br>${firstTip.address}</div>`,offset: new AMap.Pixel(0, -30) });infoWindow.open(this.map, firstMarkerPosition); }// 添加搜索标记点tips.forEach(tip => {const marker = new AMap.Marker({position: [tip.location.lng, tip.location.lat],icon: new AMap.Icon({size: new AMap.Size(25, 34), image: '//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-red.png',imageSize: new AMap.Size(25, 34), })});marker.setMap(this.map);this.searchMarkers.push(marker); // 点击事件,显示详情marker.on('click', () => {const infoWindow = new AMap.InfoWindow({content: `<div><strong>${tip.name}</strong> <span style="color: #3d6dcc; cursor: pointer;" onclick="window.open('https://www.amap.com/detail/${tip.id}')">` + this.$t('common.detail') +`»</span><br>${tip.address}</div>`, // Display name and detail button in the same lineoffset: new AMap.Pixel(0, -30) });infoWindow.open(this.map, marker.getPosition()); this.currentCenter = { lng: tip.location.lng, lat: tip.location.lat };this.$emit('updateCenter', this.currentCenter);});});},}
};
</script><style scoped>
#container {width: 100%;height: calc(100vh - 200px);margin: 0px;
}
</style>
- 组件二:用户显示多个标记点位置及标记点详情

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

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

相关文章

智谱开源CogAgent的最新模型CogAgent-9B-20241220,全面领先所有开闭源GUI Agent模型

在现代数字世界中,图形用户界面(GUI)是人机交互的核心。然而,尽管大型语言模型(LLM)如ChatGPT在处理文本任务上表现出色,但在理解和操作GUI方面仍面临挑战,因此最近一年来,在学界和大模型社区中,越来越多的研究者和开发者们开始关注VLM-based GUI Agent。2023年12月,…

会话相关的常用查询

ORACLE常用的与会话相关的查询 目录ORACLE常用的与会话相关的查询查看当前锁的信息:查看当前正在执行的sqlORACLE的监听日志(listener.log)Listener log locationFor oracle 9i/10gFor oracle 11g/12c或者通过 lsnrctl status 也可以查看位置或者11g可以通过 adrci 命令List…

VMware——mac下设置虚拟机共享文件夹

前言 按着VMware软件给的提示,设置好共享文件夹之后,在linux目录下没有看到文件夹,就想到了可能是没挂载的原因。 内容 基本的操作直接参考官方的即可,这里不做描述,直接贴图了,官方给的教程缺少了比较关键的一步,不过可能认为这个是常识,就没有放在文档里吧。 基础步骤…

LVS(Linux Virtual Server)备忘录

(241226) 基础内容 LVS 是 Linux Virtual Server ,Linux 虚拟服务器;是一个虚拟的服务器集群【多台机器 LB IP】。LVS 集群分为三层结构: 负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器【多台LB IP】上执行,而client端认…

数字化工厂 制造业转型升级的必由之路 珠海先达

随着“工业4.0”理念的全球传播,制造业正经历着一场前所未有的变革。在这场变革中,数字化工厂作为通往智能制造的重要阶段,成为了众多企业竞相追逐的目标。数字化工厂不仅提升了生产效率,还优化了产品设计、生产流程和管理方式,为企业在激烈的市场竞争中赢得了先机。 一、…

适合小团队协作的开源在线项目管理系统推荐【任务管理与进度追踪】

对于小团队而言,高效协作是项目顺利推进的关键所在,而一款契合的开源在线项目管理系统,无疑能在任务管理与进度追踪方面发挥巨大作用,助力团队成员有条不紊地开展工作,提升整体效率。当下市场上有诸多此类优秀的开源工具可供选择,本文就将为小团队推荐几款,帮助大家找到…

Centos7创建LVM磁盘管理

Centos7创建LVM磁盘管理 2019-06-02阅读 3840 环境介绍 在centos7下需要挂载两个新的磁盘。为了方便后续的扩容方便,决定将这其设置为LVM管理的方式。 查看一下当前有哪些新增的数据盘,如下: [root@runsdata-test-0004 ~]# df -h Filesystem Size Used Avail Use% Mou…

iostat命令详解

iostat命令详解 简介 iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 iostat可以提供更丰富的IO性能状态数据,i…

学习笔记(四十九):Text常用场景

1、设置文本断行及折行Text(this.content).fontSize(14).textAlign(TextAlign.End).textOverflow({ overflow: TextOverflow.Ellipsis }).wordBreak(WordBreak.BREAK_WORD).maxLines(this.contentMaxLine) 作者:听着music睡出处:http://www.cnblogs.com/xqxacm/Android交流群…

VS2022 + OpenSSL 3.0实现DES、AES、RSA加密

​ 一、DES加密 #include <openssl/des.h> #include <cstdio> #include <iostream> #include <cstdlib> #include <iomanip> #define MAX_LINE 1024 #pragma warning(disable : 4996)using namespace std;signed main() {const_DES_cblock key …

SARscape洪水分类工具使用说明

SARscape6.1新增洪水分类工具,可以从多时相SAR数据提取洪水信息。工具主要使用了模糊分类技术——模糊C均值分类器(FCM),可加入坡度参数去除阴影的影响。 本文以洪水前后哨兵1数据为例,介绍洪水分类工具的使用。如下图为洪水发生前后两期已经经过预处理的后向散射系数图像…

汽车以旧换新政策的数字化协同解决方案

随着《汽车以旧换新补贴政策》的落地实施,汽车市场迎来了新的增长机遇。政策驱动与市场竞争的双重压力下,如何在短时间内整合资源、抢占市场先机,成为汽车经销商和销售团队的共同挑战。借助在线协同工具,企业能够打破部门与组织边界,实现从政策到执行全流程的高效管理,为…