前端vue引入高德地图入门教程

距离上一篇关于前端项目中使用高德地图的文章已经将近5年之久,
这是我的第一篇关于高德地图的文章

这期间前端技术日新月异,5年前JQuery还如日中天,如今已经销声匿迹,很少有公司招聘还在要求JQuery,更多的是Vue、React。

如今更多采用模块化开发,结合webpack、vite,我们可以按照业务功能拆分模块。

我们可以把高德地图相关功能封装成功能模块,在使用时按需引入即可。

本教程使用ESM开发,如果还不熟悉该语法,请尽快学习。

前期准备工作

  1. 首先成为开发者
  2. 注册完登录 创建新应用
  3. 创建key
    填入相关信息
  4. 生成key和安全秘钥
    key安全秘钥 ,在地图模块初始化时需要用到

    至此,前期准备工作已经完成。

模块化引入

安装高德地图包
npm i @amap/amap-jsapi-loader

步骤

  1. 提供一个地图挂载点,并设置宽高
  2. 引入地图加载方法,执行load方法,返回AMap构造函数
  3. 实例化构造函数,生成地图实例

模块加载

本地新建js文件,后续页面内使用地图功能,可以导入该模块

javascript 复制代码
// gmap.js
import AMapLoader from '@amap/amap-jsapi-loader'

结合安全秘钥使用

Nginx配置

javascript 复制代码
// gmap.js
// 需要在地图初始化加载前,设置该项
window._AMapSecurityConfig = {
  // 需要服务器配置,代理高德地图相关地址,路径固定为 ' /_AMapService '
  serviceHost:'http://xxxxxx/_AMapService',  
}

初始化配置

javascript 复制代码
// gmap.js
const AMap = await AMapLoader.load({
  "key": "xxxxxxxxxxxx", // 申请好的Web端开发者Key,首次调用 load 时必填
  "version": "2.0",   // 指定要加载的 JS API 的版本,缺省时默认为 1.4.15
  "plugins": [],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
})

实例化

javascript 复制代码
const map = new AMap.Map('container', {
  viewMode: '3D',  // 默认使用 2D 模式
  zoom: 11,  //初始化地图层级
  center: [116.397428, 39.90923]  //初始化地图中心点
});

页面中使用地图模块

在vue页面中使用该模块

  1. 首先在页面中添加元素作为挂载点
  2. 并设置宽高(必须)

引入该模块,并初始化地图

html 复制代码
<template>
  <div>
    <div id="map"></div>
  </div>
</template>
<script>
import GMapInit from './utils/gmap'
export default {
  name: "",
  data(){
    return {
      map: null,
    }
  },
  mounted() {
    this.mapInit()
  },
  methods: {
    mapInit () {
      GMapInit('map', {
        viewMode: '3D',  // 默认使用 2D 模式
        zoom: 11,  //初始化地图层级
        center: [116.397428, 39.90923]  //初始化地图中心点
      }).then(map => {
        this.map = map
        this.map.on('complete', () => {
          console.log('地图加载完毕')
        })
      })
    }
  },
  beforeDestroy () {
    this.map.destroy()
  },
}
</script>
<style scoped>
  #map {
    width: 200px;
    height: 200px;
  }
</style>


至此,页面上已经成功显示地图

地图加载完成事件

javascript 复制代码
this.map.on('complete', ()=> {
	// 地图图块加载完成后,触发该回调
})

页面销毁,需要销毁地图

提升性能,释放内存占用,当前地图容器被清空。

在页面卸载生命周期中,执行地图销毁事件

javascript 复制代码
beforeDestroy () {
	this.map.destroy();
}

未完待续。。。

如果有什么业务上相关的问题,也可以留言。

相关推荐
某公司摸鱼前端28 分钟前
uniapp socket 封装 (可拿去直接用)
前端·javascript·websocket·uni-app
要加油哦~30 分钟前
vue | 插件 | 移动文件的插件 —— move-file-cli 插件 的安装与使用
前端·javascript·vue.js
小林学习编程35 分钟前
Springboot + vue + uni-app小程序web端全套家具商场
前端·vue.js·spring boot
柳鲲鹏37 分钟前
WINDOWS最快布署WEB服务器:apache2
服务器·前端·windows
weixin-a153003083162 小时前
【playwright篇】教程(十七)[html元素知识]
java·前端·html
ai小鬼头2 小时前
AIStarter最新版怎么卸载AI项目?一键删除操作指南(附路径设置技巧)
前端·后端·github
wen's2 小时前
React Native 0.79.4 中 [RCTView setColor:] 崩溃问题完整解决方案
javascript·react native·react.js
一只叫煤球的猫3 小时前
普通程序员,从开发到管理岗,为什么我越升职越痛苦?
前端·后端·全栈
vvilkim3 小时前
Electron 自动更新机制详解:实现无缝应用升级
前端·javascript·electron
vvilkim3 小时前
Electron 应用中的内容安全策略 (CSP) 全面指南
前端·javascript·electron