vue 集成高德地图

2023-11-18

准备工作

高德地图官网:https://lbs.amap.com/

高德地图JS API 2.0 教程:https://lbs.amap.com/api/jsapi-v2/summary

高德地图JS API 2.0 参考手册:https://lbs.amap.com/api/jsapi-v2/documentation

高德地图JS API 2.0 示例:https://lbs.amap.com/demo/list/jsapi-v2

1. 首先,注册开发者账号https://console.amap.com/dev/index),成为高德开放平台开发者;

2. 登录之后,再进入「应用管理」 页面「创建新应用」;

3. 为应用添加 Key,「服务平台」一项请选择「 Web 端 ( JSAPI ) 」;

4. 添加成功后,获取到 Key 值和安全密钥。

具体准备工作和注意事项查看上方 高德地图JS API 2.0 教程

地图组件开发和使用

获取高德地图 API,可通过JavaScript 脚本的方式加载官网提供的 JSAPI Loader 为了更好的契合 Vue 使用推荐第二种方式。

本文采用第二种方式,官网详情见:JSAPI结合Vue使用

  1. 按 NPM 方式安装使用 Loader ;

npm i @amap/amap-jsapi-loader --save
  1. 在项目中新建 MapContainer.vue 文件,用作地图组件;

  1. 在 MapContainer.vue 地图组件中创建 div 标签作为地图容器 ,并设置地图容器的 id 属性为 container;

<template>
  <div id="container"></div>
</template>
  1. 设置地图容器样式;

<style  scoped>
  #container{
    padding:0px;
    margin: 0px;
    width: 100%;
    height: 800px;
  }
</style>
  1. 在地图组件 MapContainer.vue 中引入 amap-jsapi-loader ;

import AMapLoader from '@amap/amap-jsapi-loader';
  1. 定义 map 对象;

  • vue 2

data(){
  return{
    //此处不声明 map 对象,可以直接使用 this.map赋值或者采用非响应式的普通对象来存储。
    map:null,
  } 
},
  • vue3

import { shallowRef } from '@vue/reactivity'

setup(){
  const map = shallowRef(null);
  return{
    map,
  }
},
  1. 设置安全密钥,这里采用明文方式设置,也可以 通过代理服务器转发 ,详情见:JS API 安全密钥使用

// 写在初始化 map 方法之前即可
window._AMapSecurityConfig = {
  securityJsCode:'「您申请的安全密钥」',
}
  1. 初始化 map;

mounted(){
  //DOM初始化完成进行地图初始化
  this.initMap();
},

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("container",{  //设置地图容器id
        viewMode:"3D",    //是否为3D地图模式
        zoom:5,           //初始化地图级别
        center:[105.602725,37.076636], //初始化地图中心点位置
      });
    }).catch(e=>{
      console.log(e);
    })
  },
},

地图常用功能开发示例

  • 添加卫星地图图层

// 设置图层( 0: 矢量地图  1:卫星地图 )
setMapLayer (mapOption) {
  if (this.layer) this.map.remove(this.layer)    // 移除原有图层
  if (mapOption == 1) {
    this.layer = new AMap.TileLayer.Satellite()   // 新建卫星图层
  } else {
    this.layer = new AMap.createDefaultLayer();   // 新建默认标准图层
  }
  this.map.add(this.layer)    // 添加图层
},
  • 自定义内容点标记(marker)

// 添加点标记
addMarker () {
  for (const key in this.siteInfofilter) {
    let siteInfo = this.siteInfofilter[key]
    let markerContent = '' +
      '<div class="gis_box">' +
      `   <img class="gis_icon" src="${siteInfo.icon}" alt="">` +
      `   <div class='gis_name'>${siteInfo.name}</div>` +
      '</div>';

    let position = new AMap.LngLat(siteInfo.lng, siteInfo.lat); // Marker经纬度
    let marker = new AMap.Marker({
      position: position,
      content: markerContent, // 将 html 传给 content
      offset: new AMap.Pixel(-70, -46) // 以 icon 的 [center bottom] 为原点
    });
    this.map.add(marker);
  }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue 集成高德地图 的相关文章

随机推荐

  • PCL 最小点数约束的改进半径滤波(C++详细过程版)

    目录 一 概述 1 不足 2 改进 二 代码实现 三 结果展示 一 概述 1 不足 传统半径滤波算法在点云数据量巨大的情况下 算法效率会大幅度降低 而对于稠密点云数据 一个影响效率的重要因素就是搜索半径的大小 当搜索半径较大时 需要计算邻域
  • @vue/cli 创建项目报Cannot find module ‘inquirer‘错

    解决 这可能是因为cli版本问题 1 第一步 2 第二步 npm uninstall g vue cli 3 第三步 npm install g vue cli
  • 由PyRetri浅谈基于深度学习的图像检索

    前言 最近发现face 开源了一个图像检索和行人重识别的基于深度学习的软件包 最近一段时间也一直在接触图像检索相关的东西 故借此机会 对里面涉及的一些常用的方法模块进行一个简单的介绍总结 便于日后回顾 PyRetri是什么 PyRetri是
  • 如何查看linux服务器字符集,Linux字符集查看与设置

    查看字符集 Linux 中字符集在系统中的体现是一个环境变量 以 CentOS 6 5 为例 查看当前终端使用的字符集的方式有 1 root jerry echo LANG zh CN GB18030 2 root jerry env gr
  • 对 React Hook的闭包陷阱的理解,有哪些解决方案?

    hooks中 奇怪 其实符合逻辑 的 闭包陷阱 的场景 同时 在许多 react hooks 的文章里 也能看到 useRef 的身影 那么为什么使用 useRef 又能摆脱 这个 闭包陷阱 搞清楚这些问题 将能较大的提升对 react h
  • vue 全局组件注册_如何注册vue3全局组件

    vue 全局组件注册 With the new versions of Vue3 out now it s useful to start learning how the new updates will change the way w
  • unity playerprefs android,Unity持久化存储之PlayerPrefs的使用

    一 PlayerPrefs类支持3中数据类型的保存和读取 浮点型 整形 和字符串型 分别对应的函数为 php SetInt 保存整型数据 GetInt 读取整形数据 SetFloat 保存浮点型数据 GetFlost 读取浮点型数据 Set
  • pygame之五子棋的实现

    先上代码 调用pygame库 import pygame import sys 调用常用关键字常量 from pygame locals import QUIT KEYDOWN import numpy as np 初始化pygame py
  • laravel-vue后端返回数据的字符串中(<br/> \n)换行无效

    laravel 做后端 vue做前端 后端返回数据的字符串中含有 br 或 n r n 等换行符 在前端页面无法正常渲染出换行效果 尝试用str replace方法无效 最终找到解决办法 解决办法 给包含换行符的字符串元素增加css whi
  • 【STM32学习】——串口通信协议&STM32-USART外设&数据帧/输入数据策略/波特率发生器&串口发送/接受实操

    文章目录 前言 一 串口通信 1 通信接口 2 串口通信 1 串口简介 2 串口硬件电路 3 串口软件部分 二 STM32的USART外设 1 USART简介 2 图示详解 三 细节问题 1 数据帧 2 输入数据策略 1 起始位侦测 2 数
  • iOS开发,tableView中cell的重用详解

    注意 原创版权 转载必须标明出处作者 翻版必究 iOS中tableView是一个大的模块组件 它的重要性每个iOSCoder都是了解的 但是tableView中却有个重大的坑 就是cell的重用 每个刚接触iOS开发的人都深受其海 那么经过
  • AD18出现Unknown Pin报错解决

    问题描述 检查错误 检查原理图对应元件的封装是否存在 检查原理图与封装PCB引脚数量是否对应 检查原理图与封装的管脚是否统一 找到原因 原理图的管脚命名与PCB封装管脚命名不一致 问题解决 修改原理图管脚名称 修改PCB Library的管
  • luajit struct

    This page is intended to give you an overview of the features of the FFI library by presenting a few use cases and guide
  • 使用Stable Diffusion图像修复来生成自己的目标检测数据集

    点击上方 AI公园 关注公众号 选择加 星标 或 置顶 作者 R dig par Gabriel Guerin 编译 ronghuaiyang 导读 有些情况下 收集各种场景下的数据很困难 本文给出了一种方法 深度学习模型需要大量的数据才能
  • MOS管做二极管使用

    注 个人学习记录 目录 原理分析 电路仿真 NMOS电路连接方法 NMOS仿真I V特性曲线 PMOS电路连接方法 PMOS二极管接法的I V特性曲线 原理分析 如下图所示 左边为NMOS 右边为PMOS 由MOS管的结构可以看出 其衬底B
  • 图解laravel的生命周期

    先来张图大致理解下laravel的生命周期 下面对应相应的代码 解释上图 文件路径 laravel public index php laravel的启动时间 define LARAVEL START microtime true 加载项目
  • 2024王道408数据结构 P92 T3

    2024王道408数据结构 P92 T3 思考过程 这题比较复杂做的我好 累 首先我们还是先看懂题目 让我们用一个栈来实现递归函数的非递归计算 我们先剖析一下这个表达式 式子展开变成图上这样 那既然让我们用非递归来计算 那我们顺理成章就想到
  • [Qt]控件

    文章摘于 爱编程的大丙 文章目录 1 按钮类型控件 1 1 按钮基类 QAbstractButton 1 1 1 标题和图标 1 1 2 按钮的 Check 属性 1 1 3 信号 1 1 4 槽函数 1 2 QPushButton 1 2
  • 蓝桥杯单片机14届省赛解析(个人)

    下面记录一下自己这届省赛比赛时的思路 不太会写作文 比较口语化 而且一些看法仅仅是我个人观点 赛后我还没有看过任何讲解或例程 可能会有很多理解不对的地方希望大家能够指出一起交流 一 硬件框图 往届省赛基本上都是考两个外设 这次一看硬件框图就
  • vue 集成高德地图

    准备工作 高德地图官网 https lbs amap com 高德地图JS API 2 0 教程 https lbs amap com api jsapi v2 summary 高德地图JS API 2 0 参考手册 https lbs a