【vue2高德地图api】02-npm引入插件,在页面中展示效果

news2025/7/16 3:35:17

系列文章目录


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、安装高德地图
  • 二、在main.js中配置
    • 需要配置2个key值以及1个密钥
  • 三、在页面中使用
    • 3.1 新建路由
    • 3.2新建vue页面
      • 3.2-1 index.vue
      • 3.2-2 main.vue 主页面显示
    • 3.3 页面效果
    • 3.4 使用手机查看定位
    • 3.5 必须==允许==获取位置授权
  • 总结
    • 关于插件
    • 关于定位
    • 常用定位方法


前言

如果没有现成的脚手架,可以用我的,教程需要看上中下三篇
传送门 【Vue】Vue2创建移动端项目实战教程,创建移动端项目保姆级教程,设置axios,utils工具包,vue.fonfig.js配置项
在这里插入图片描述

也可以直接拿现成的
vue-app
在这里插入图片描述


我按照我上面gitee中的包来操作

参考教程Vue+高德地图API的使用

一、安装高德地图

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

如果是用我的脚手架,还要npm i一遍其他依赖

二、在main.js中配置

在这里插入图片描述

需要配置2个key值以及1个密钥

Vue.prototype.mapJsKey = '***************************'; // jsApi
Vue.prototype.mapServiceKey = '***********************'; // 服务端
// 配置安全密钥
window._AMapSecurityConfig = {
  securityJsCode: '***********************', //*  安全密钥
};

web js端的变量叫mapJsKey
服务端的变量叫mapServiceKey
把上面的key放进去

后面有用


securityJsCode这个就是密钥,存放jsApi的key值

在这里插入图片描述

三、在页面中使用

这里不作组件引入了,直接在页面中使用
全部可以一键复制粘贴,无须担心

3.1 新建路由

{
    path: '/park',
    name: 'park',
    component: () => import('../views/park/index.vue'),
    children: [
      {
        path: 'main',
        name: 'parkMain',
        component: () => import('../views/park/main.vue'),
        meta: {
          title: '周边公园',
          keepAlive: false,
        },
      },
    ],
  },

3.2新建vue页面

3.2-1 index.vue

用来作为父级容器,好控制路由的写法

<template>
  <div>
    <keep-alive>
      <router-view v-if="$route.meta.keepAlive" />
    </keep-alive>
    <router-view v-if="!$route.meta.keepAlive" />
  </div>
</template>

<script>
export default {
  name: 'park',
};
</script>

3.2-2 main.vue 主页面显示

页面所有内容,过于简单,我全部放在一起,后续再一点点加功能

<template>
  <div class="container">
    <div id="Map" class="map"></div>

  </div>
</template>
<script>
import AMapLoader from '@amap/amap-jsapi-loader';
export default {
  name: 'vinit',
  components: {},
  data() {
    return {
      map: null,
      position: [], // 当前经纬度
      locationInfo: {}, // 当前位置信息
    };
  },
  computed: {
  },
  watch: {},
  filters: {},
  created() { },
  mounted() {
    this.init();
  },
  methods: {
    init() {
      this.initMap();
    },
    initMap() {
      AMapLoader.load({
        key: this.mapJsKey, // 申请好的Web端开发者Key,首次调用 load 时必填
        //2.0版本太卡了 ,所以使用的1.4.0版本  其插件也有不同  如:ToolBar
        version: '1.4.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        resizeEnable: true, // 定位到当前位置
        plugins: [
          'AMap.ToolBar', //工具条
          'AMap.Geolocation', //定位
          'AMap.PlaceSearch', // poi搜索
          'AMap.Scale', // 比例尺
        ], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
      })
        .then((AMap) => {
          this.map = new AMap.Map('Map', {
            viewMode: '3D', //是否为3D地图模式
            zoom: 14, //初始化地图级别
          });
          this.map.addControl(new AMap.ToolBar()); // 工具条
          this.map.addControl(new AMap.Scale()); // 比例尺

          this.geolocation = new AMap.Geolocation({
            //定位
            enableHighAccuracy: true, //是否使用高精度定位,默认:true
            timeout: 5000, //超过10秒后停止定位,默认:无穷大
            maximumAge: 0, //定位结果缓存0毫秒,默认:0
            convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true
            showButton: true, //显示定位按钮,默认:true
            buttonPosition: 'RB', //定位按钮停靠位置,默认:'LB',左下角
            buttonOffset: new AMap.Pixel(60, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
            showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true
            showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true
            panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true
            zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
          });
          this.map.addControl(this.geolocation); //在地图上引入定位插件

          this.geolocation.getCurrentPosition((status, result) => {
            if (status == 'complete') {
              this.locationInfo = result;
              // console.log('位置信息  complete: => ', result);
              // console.log('位置经纬度: => ', result.position);
              this.position = [result.position.lng, result.position.lat];
            } else {
              console.log('位置信息  error: =>', result);
            }
          });
        })
        .catch((e) => {
          console.log(e);
        });
    },
  },
};
</script>
<style scoped lang="scss">
.container {
  background-color: #f4f4f4;
  height: 100vh;
  .map {
    height: 400px;
  }
}</style>

在这里插入图片描述

3.3 页面效果

电脑是没有gps模块的,所以并不能显示所在位置,但是手机可以
在这里插入图片描述

3.4 使用手机查看定位

使用草料二维码,将本地ip转为二维码,用手机系统浏览器打开,不要用微信、或者其他例如via浏览器。

草料二维码官网
如果嫌每次都要复制链接去转码比较麻烦,可以下载它的插件,安装到浏览器,如下效果图
在这里插入图片描述
在这里插入图片描述

3.5 必须允许获取位置授权

为了隐私,我缩小了视图。
在这里插入图片描述


总结

关于插件

在这里插入图片描述
需要用什么,用addControl方法添加
传送门地图js 插件的使用
在这里插入图片描述
在这里插入图片描述

关于定位

这里需要注意的是,我创建了插件,可以不引入,因为引入的这个是地图上的小圆点,点击它可以把位置定位到当前来。如果你没有地图,只需要1+3就可以获取到当前位置。
在这里插入图片描述

例如下图,页面中不需要地图展示,但是依旧需要获取当前位置(经纬度),用来计算距离。这个留在后面了
在这里插入图片描述

常用定位方法

this.geolocation = new AMap.Geolocation({
  //定位
  enableHighAccuracy: true, //是否使用高精度定位,默认:true
  timeout: 5000, //超过10秒后停止定位,默认:无穷大
  maximumAge: 0, //定位结果缓存0毫秒,默认:0
  convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true
  showButton: true, //显示定位按钮,默认:true
  buttonPosition: 'RB', //定位按钮停靠位置,默认:'LB',左下角
  buttonOffset: new AMap.Pixel(60, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
  showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true
  showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true
  panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true
  zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
});
this.geolocation.getCurrentPosition((status, result) => {
  if (status == 'complete') {
    this.locationInfo = result;
    // console.log('位置信息  complete: => ', result);
    // console.log('位置经纬度: => ', result.position);
    this.position = [result.position.lng, result.position.lat];
  } else {
    console.log('位置信息  error: =>', result);
  }
});

在这里插入图片描述

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

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

相关文章

深度学习——VGG与NiN网络

深度学习——VGG与NiN网络 文章目录 前言一、使用块的网络&#xff08;VGG&#xff09;1.1. VGG块1.2. VGG网络1.3. 模型训练1.4. 小结 二、网络中的网络&#xff08;NIN&#xff09;2.1. NIN块2.2. NIN模型2.3. 训练模型2.4. 小结 总结 前言 本章将学习使用块的网络&#xff…

c#设计模式-行为型模式 之 解释器模式

&#x1f680;简介 给定一个语言&#xff0c;定义它的文法表示&#xff0c;并定义一个解释器&#xff0c;这个解释器使用该标识来解释语言中的 句子。 解释器模式包含以下主要角色 抽象表达式&#xff08;Abstract Expression&#xff09;角色&#xff1a;定义解释器的接口&…

基于Java的考研信息查询系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

问题记录2 域名解析问题

上线部署时遇到内网域名解析问题&#xff1a; 内网域名为xxx.cn&#xff0c;在ip为yyy的服务器上&#xff0c;ping&#xff1a;xxx.cn 首先在服务器&#xff1a;yyy /etc/hosts查找缓存记录 cat /etc/hosts 127.0.0.1 VM-4-2-centos VM-4-2-centos 127.0.0.1 localhost.local…

【C+】C++11 —— 线程库

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C学习 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C】C11…

基于SSM的视频播放系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

网络库OKHttp(1)流程+拦截器

序、慢慢来才是最快的方法。 背景 OkHttp 是一套处理 HTTP 网络请求的依赖库&#xff0c;由 Square 公司设计研发并开源&#xff0c;目前可以在 Java 和 Kotlin 中使用。对于 Android App 来说&#xff0c;OkHttp 现在几乎已经占据了所有的网络请求操作。 OKHttp源码官网 版…

JVM垃圾回收算法介绍

堆的分代和区域 &#xff08;年轻代&#xff09;Young Generation&#xff08;eden、s0、s1 space&#xff09; Minor GC &#xff08;老年代&#xff09;Old Generation &#xff08;Tenured space&#xff09; Major GC|| Full GC &#xff08;永久代&#xff09;Permanent…

Qt之自定义插件(单控件,Qt设计师中使用)

文章目录 步骤1.选择项目类型2.设置项目名称3.选择合适的构建套件4.根据实际情况选择插件控件列表6.控件类生成&#xff08;默认勾选项&#xff09;7.构建生成项目及生成库位置&#xff08;默认&#xff09;8.库文件拷贝9.重启Qt查看效果 步骤 1.选择项目类型 如图选择‘其他…

oracle库中数据利用datax工具同步至mysql库

查看oracle版本 $sqlplus aaa/aaaa192.168.1.1/lcfaSQL*Plus: Release 19.0.0.0.0 - Production on Tue Oct 17 15:56:46 2023 Version 19.15.0.0.0Copyright (c) 1982, 2022, Oracle. All rights reserved.Last Successful login time: Tue Oct 17 2023 15:56:03 08:00Conne…

NSS [NISACTF 2022]easyssrf

NSS [NISACTF 2022]easyssrf 先看题目&#xff0c;给了一个输入框 看这提示就知道不是curl了&#xff0c;先file协议读一下flag&#xff0c;file:///flag 不能直接读flag&#xff0c;读个提示文件file:///fl4g 访问一下 <?phphighlight_file(__FILE__); error_reporting(0…

NSS [GWCTF 2019]枯燥的抽奖

NSS [GWCTF 2019]枯燥的抽奖 开题让我猜字符串&#xff0c;这种题目肯定不是猜&#xff0c;应该是类似于php伪随机数。 dirsearch扫他一下。 访问/check.php得到源码。 分析一下代码。 通过PHP伪随机数从字符库$str_long1中选取20个字符组成字符串&#xff0c;返回给我们前十…

EasyCVR视频汇聚平台显示有视频流但无法播放是什么原因?该如何解决?

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等&#xff0c;视频智能分析平台EasyCVR融合性强、开放度…

BI零售数据分析,当代零售企业的核心竞争力

在数字化转型中&#xff0c;BI智能零售数据分析成为了极其重要的核心竞争力之一。通过对大数据的采集和分析&#xff0c;零售企业可以更好地了解消费者的需求和行为模式&#xff0c;从而做出更准确的决策。例如&#xff0c;通过分析消费者的购物历史、浏览记录等数据&#xff0…

五、WebGPU Vertex Buffers 顶点缓冲区

五、WebGPU Vertex Buffers 顶点缓冲区 在上一篇文章中&#xff0c;我们将顶点数据放入存储缓冲区中&#xff0c;并使用内置的vertex_index对其进行索引。虽然这种技术越来越受欢迎&#xff0c;但向顶点着色器提供顶点数据的传统方式是通过顶点缓冲和属性。 顶点缓冲区就像任…

[Java]0.1+0.2不等于0.3 !!一分钱问题与解决方案

一、原因 原因很简单&#xff0c;计算机存储和计算数组都是用二进制&#xff0c; 而大部分小数转二进制的时候&#xff0c;就丢失精度了。 0.1、0.2、0.3这些小数在二进制里都是循环小数&#xff0c;计算机不可能存储无限循环小数&#xff0c;所以只能截取一部分&#xff0c;导…

Linux网络-UDP/TCP协议详解

Linux网络-UDP/TCP协议详解 2023/10/17 14:32:49 Linux网络-UDP/TCP协议详解 零、前言一、UDP协议二、TCP协议 1、应答机制2、序号机制3、超时重传机制4、连接管理机制 三次握手四次挥手5、理解CLOSE_WAIT状态6、理解TIME_WAIT状态7、流量控制8、滑动窗口 丢包问题9、拥塞控制…

如何使用前端框架(React、Angular、Vue.js等)?该如何选择?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

“小”Bug,大能量

文章目录 简介BUG集&#xff08;持续更新&#xff09;依赖版本不一致配置错误循环依赖内存泄漏并发问题空指针异常依赖版本冲突 总结 简介 在写代码的时候&#xff0c;遇到了一些bug&#xff0c;在当下怎么检查都查不出问题出现在哪&#xff0c;等过几天后突然发现困扰自己的问…

快速自动化处理JavaScript渲染页面的方法

目录 一、使用无头浏览器 二、使用JavaScript渲染引擎 三、使用前端框架工具 随着互联网技术的不断发展&#xff0c;JavaScript已经成为Web开发中不可或缺的一部分。然而&#xff0c;在自动化处理JavaScript渲染页面方面&#xff0c;却常常让开发者感到头疼。本文将介绍一些快…