我的编程空间,编程开发者的网络收藏夹
学习永远不晚

VUE项目调用高德地图的详细步骤

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

VUE项目调用高德地图的详细步骤

前言

相信大家或多或少都接触过在大屏的项目,在大屏项目中除了用到了echarts中的行政地图,街道地图也是很常见的,今天主要来说一下在vue中调用高德地图遇到的一些问题?。

申请高德key

无论我们使用任何方式调用高德地图都需要在高德地图开放平台中申请key?

  • 注册帐号

访问高德地图开发平台根据实际情况填写就可以?(实名认证的时候选择个人就可以,如果是企业级的项目,可能会涉及人员变动,建议使用公司邮箱进行注册)区别如下?。

  • 创建应用

新建应用时名称,与类型可以随意填写,尽量填写的与开发的应用一直,方便后期维护?

应用创建成功之后,点击添加就会需要我们选择需要使用高德地图的哪些服务,不同的服务平台,对应填写的内容也有所区别?,例如Android需要填写App包名,Android的SHA1码等等,因为我这次的项目是个大屏项目所以就选择Web端(JSAPI)?

信息填写完毕之后就会在当前应用下生成对应的Key值和安全密钥(安全密钥在之前的版本中是没有的)

技术选型

vue-amap

vue-amap是基于 Vue 2.x 与高德的地图组件?‍?,提供一些基础和高级的功能,例如:地图扎点,信息窗体,搜索组件,类型插件等等,不需要我们在造轮子了,所以我们就来试一试?。

准备工作

当我们在使用组件的时候都会先看一下文档,但是当我在看文档的时候发现,文档中只有对应的api而没有示例,很难下手,于是在issues中找到了答案。

解决方案也很简单

  • 将项目下载到本地

  • 修改class="lazy" data-src/docs/index.html里的docsify引用
将
<script class="lazy" data-src="//unpkg.com/docsify/lib/docsify.min.js"></script>
修改为
<script class="lazy" data-src="//unpkg.com/docsify@4.11.6/lib/docsify.min.js"></script>

  • 执行npm install npm start默认在4201端口就会启动项目就可以看到项目示例了。

项目中应用

  • npm安装
npm install vue-amap --save
  • main.js中挂载vue-amap
import VueAMap from 'vue-amap';
Vue.use(VueAMap);
VueAMap.initAMapApiLoader({
  //申请地址 https://lbs.amap.com/ 选择web端jsAPI
  key: '自己申请的高德地图key', 
  // 插件集合,用到什么插件就使用什么插件
  plugin: ['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor'],
  v: '1.4.4', // 高德sdk版本,最新的sdk已经出到了2.0
  //官网解释:JSAPI 2.0 提供的开发接口与 1.4 版本达到 99%的兼容度,但是为了保证插件的稳定性我们还是选择1.4.4。
})
  • 组件用法
<template>
      <el-amap ref="map" vid="amapDemo" :center="center" :zoom="zoom" :events="events" class="amap-demo">
      </el-amap>
  </template>
  <script>
    // 建议将zoom,center等可配置的项均写在配置文件中,方便打包之后进行修改。
    module.exports = {
      data: function() {
        return {
          zoom: 12,
          center: [121.59996, 31.197646],
          events: {
            'click': (e) => {
              alert('map clicked');
            }
          },
        };
      },
    };
</script>

以上就是在vue项目中使用vue-amap调用高德地图api的基本使用?,具体对地图的操作可以根据文档的规范来就可以了,在使用的过程中可能会遇到几个问题?。

刷新页面,地图加载偶尔失败

  • 在main.js中加入以下内容。
// 解决地图刷新显示不出来
const amapKeys = Object.keys(localStorage).filter(key => key.match(/^_AMap_/))
amapKeys.forEach(key => {
  // console.log(key)
  localStorage.removeItem(key)
})

在绑定插件的时候,控制台报错 a[d].split is not a function

  • 含有地图组件的路由不使用懒加载的方式(临时方案)

注: vue-amap 是不支持vue3.x,?并且不能绑定高德地图新版api对应的安全密钥jscode,可能会导致部分服务无法使用。 对应的vue3版本的插件看这里?。

原生调用高德API

  • 安装官方提供的loader
npm install @amap/amap-jsapi-loader --save
  • main.js中绑定安全密钥jscode(不绑定部分功能无法使用)
// 该写法只推荐在开发阶段,如果在生产阶段建议采用反向代理
// 官网说明https://lbs.amap.com/api/javascript-api/guide/abc/prepare
window._AMapSecurityConfig = {
  securityJsCode: 'jscode' // 输入你的jscode
}
  • 封装组件
<template>
    <div class="home_div">
        <div id="container"></div>
    </div>
</template>
<script>
import AMapLoader from '@amap/amap-jsapi-loader';

export default {
    name: "Mapview",
    data() {
        return {
            map: null,
        }
    },
    created() {

    },
    mounted() {
        this.initAMap();
    },
    methods: {
        initAMap() {
            AMapLoader.load({
                key: 'xxx',  //设置您的key
                version: "2.0", // 高德地图版本
                plugins: ['AMap.ToolBar', 'AMap.Driving'], // 插件
                AMapUI: { // 高德地图UI组件库,可不写,内部提供了覆盖物标注点,以及部分模块的封装
                    version: "1.1",
                    plugins: [],
                },
                Loca: { // Loca版本(高性能地图数据可视化库) 可不写
                    version: "2.0"
                },
            }).then((AMap) => {
                // container渲染的id
                this.map = new AMap.Map("container", {
                    zoom: 5, // 当前缩放级别
                    zooms: [2, 22], // 缩放级别范围
                    center: [105.602725, 37.076636], // 中心点
                });
            }).catch(e => {
                console.log(e);
            })
        },
    }
}
</script>
<style  scoped>
.home_div {
    padding: 0px;
    margin: 0px;
    width: 100%;
    height: 100%;
    position: relative;
}
#container {
    padding: 0px;
    margin: 0px;
    width: 100%;
    height: 100%;
    position: absolute;
}
</style>

混合使用(vue-amap与原生API混合使用)

  • 只想通过 vue-amap 引入高德地图,而部分实例化的操作直接基于高德地图的 sdk 完成

实例化操作不是加载地图,简单来说就是用一些属性去实例化地图的这个类 new xxx() 代表的就是实例化xxx?。这样就不需要在使用el-amap中的center属性和zoom属性了?,因为已经通过原生的方式进行实例化了?。

import { lazyAMapApiLoaderInstance } from 'vue-amap';
lazyAMapApiLoaderInstance.load().then(() => {
  // your code ...
  this.map = new AMap.Map('amapContainer', {
    center: new AMap.LngLat(121.59996, 31.197646)
  });
});
  • 在vue-amap中引入高德原生SDK只需在el-amap上绑定amap-manager就可以拿到高德原生AMap.Map实例文档地址
<template>
  <div class="amap-page-container">
    <el-amap vid="amapDemo" :center="center" :amap-manager="amapManager" :zoom="zoom"
      class="amap-demo">
    </el-amap>

    <div class="toolbar">
      <button @click="add()">add marker</button>
    </div>
  </div>
</template>

  <style>
.amap-demo {
  height: 300px !important;
}
</style>

  <script>
// NPM 方式
import { AMapManager } from 'vue-amap';
let amapManager = new AMapManager();
export default {
  data: function () {
    return {
      zoom: 12,
      center: [121.59996, 31.197646],
      amapManager,
    };
  },

  methods: {
    add() {
      let o = amapManager.getMap();
      let marker = new AMap.Marker({
        position: [121.59996, 31.177646]
      });
      marker.setMap(o);
    }
  }
};
</script>

总结

网上针对高德地图的调用方案也有很多,我也是刚刚接触,文中的观点都是自身的看法,最后说一下自身对选型的判断?。

  • 如果是大屏类的项目,没有过多的交互只是简单扎点,展示建议使用vue-amap???。
  • 如果是已地图为中心的项目,包括人员路线,轨迹等等比较复杂的交互建议使用原生???。

参考链接

  • 高德地图API

  • vue-amap

到此这篇关于VUE项目调用高德地图的文章就介绍到这了,更多相关VUE调用高德地图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

VUE项目调用高德地图的详细步骤

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

uniapp使用高德地图的超详细步骤

使用uni-app框架开发微信小程序,可以使用高德地图开发地图选点、搜索位置、定位、获取详细的地址信息、码值等信息,下面这篇文章主要给大家介绍了关于uniapp使用高德地图的超详细步骤,需要的朋友可以参考下
2022-12-08

Vue项目中使用百度地图api的详细步骤

在之前的一个小项目中,用到的显示当地的地图功能,下面这篇文章主要给大家介绍了关于Vue项目中使用百度地图api的详细步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
2022-11-13

iOS调用高德地图SDK的完整步骤

目录准备工作:方法如下:其中申请key的方法如下:接下来就进入到项目内部的设置了:重要的点:总结准备工作: 安装CocoaPods使用下载第三方库相同的方法下载SDK 方法如下: (1)打开终端,cd 文件路径 进入到所创建的项目文件中 (
2022-06-04

vue项目中如何使用高德地图

这篇文章主要介绍“vue项目中如何使用高德地图”,在日常操作中,相信很多人在vue项目中如何使用高德地图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue项目中如何使用高德地图”的疑惑有所帮助!接下来,请跟
2023-07-05

在vue3项目中使用新版高德地图的完整步骤

项目需求需要引入地图,对于目前最新的Vue3.0,无论是百度/高德/腾讯地图目前还没有适配,只有Vue 2.x版本的: 目前只有谷歌地图的Vue3.0适配,下面这篇文章主要给大家介绍了关于如何在vue3项目中使用新版高德地图的完整步骤,需要的朋友可以参考下
2023-02-27

iOS调用高德地图SDK的完整步骤是怎样的

这篇文章将为大家详细讲解有关iOS调用高德地图SDK的完整步骤是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。准备工作:安装CocoaPods使用下载第三方库相同的方法下载SDK方法如
2023-06-21

Vue项目安装less和less-loader的详细步骤

这篇文章主要介绍了Vue项目安装less和less-loader的详细步骤,本文分步骤结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-22

vue项目中使用mapbox地图切换底图的详细教程

最近开始入坑前端mapbox地图,跟大家一起慢慢深入学习,下面这篇文章主要给大家介绍了关于vue项目中使用mapbox地图切换底图的详细教程,文中给出了详细的实例代码,需要的朋友可以参考下
2023-05-18

Goland项目使用gomod配置的详细步骤

Goland是一个用于Go语言开发的IDE,Goland的项目结构与Go语言的项目结构相似,下面这篇文章主要给大家介绍了关于Goland项目使用gomod配置的详细步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
2023-05-18

使用vscode搭建javaweb项目的详细步骤

我个人是很喜欢VsCode的,开源免费、功能全面,所以为了方便,我把我几乎所有的运行都集成到了VsCode上来,JavaWeb也不例外,下面这篇文章主要给大家介绍了关于使用vscode搭建javaweb项目的相关资料,需要的朋友可以参考下
2022-11-13

编程热搜

目录