iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Vue如何开发高德地图应用
  • 480
分享到

Vue如何开发高德地图应用

2023-06-20 13:06:19 480人浏览 八月长安
摘要

这篇文章主要为大家展示了“Vue如何开发高德地图应用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue如何开发高德地图应用”这篇文章吧。异步加载因为使用 js sdk 应用,脚本文件本身体积很

这篇文章主要为大家展示了“Vue如何开发高德地图应用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue如何开发高德地图应用”这篇文章吧。

异步加载

因为使用 js sdk 应用,脚本文件本身体积很大,所以要注意下加载的白屏时间,解决用户体验问题,目前绝大部分产品应用都是 SPA 单页面应用系统,所以我封装一个异步加载的方法:

const loadScripts = async scripts => {  const get = src => {    return new Promise(function(resolve, reject) {      const el = document.createElement('script')      el.addEventListener('load', function() {        resolve(src)      }, false)      el.addEventListener('error', function() {        reject(src)      }, false)      el.id = src.id      el.src = src.url      document.getElementsByTagName('body')[0].appendChild(el) || document.getElementsByTagName('head')[0].appendChild(el)    })  }  const myPromises = scripts.map(async script => {    if (document.getElementById(script.id) === null) {      return await get(script)    }  })  return await Promise.all(myPromises)}export default loadScripts

这个方法在加载脚本的时候先去判断页面是否存在该脚本,如果存在就不会加载第二次,然后再利用加载完毕回调执行相关方法。

封装组件

如果系统中有多个页面需要地图应用业务,那么需要封装一个通用型的地图组件,提高项目可维护性,我这边就简单的封装下地图应用:

<template>  <div    :style="{      width: width,      height: height    }"    class="amap-container"  >    <div ref="amap" class="amap">      <slot />    </div>  </div></template><style lang="sCSS" scoped>    .amap-container {    .amap {        width: 100%;        height: 100%;    }    }</style>

指定一个地图应用容器,外面包裹一层指定高宽,高宽作为外部变量传入,业务逻辑如下:

import loadScripts from '@/loadScripts'export default {  name: 'AMapContainer',  props: {    width: {      require: false,      type: String,      default: '100%'    },    height: {      require: false,      type: String,      default: '600px'    },    options: {      require: false,      type: Object,      default: () => {}    }  },  data: () => ({    amap: null,    amapinfo: {      key: 'xxxxxxxxxxxxxx'    }  }),  created() {    this.initAMap()  },  beforeDestroy() {    // 销毁地图    if (!this.amap) {      return    }    this.amap.destroy()    this.amap = null  },  methods: {    initAMap() {      loadScripts([{        id: 'ampa',        url: `https://webapi.amap.com/maps?v=2.0&key=${this.amapInfo.key}&plugin=AMap.PolyGonEditor`      }]).then(() => {        this.amap = new window.AMap.Map(this.$refs['amap'], this.options)        this.$emit('map', this.amap, window.AMap)      })    }  }}

应用加载的时候初始化地图容器:异步加载高德地图 js sdk 然后回调方法里进行实例化地图应用,并且把地图实例化的对象传入 $emit 事件里,方便父类组件需要。另外注意要在销毁生命周期里对地图应用进行销毁,否则会占用大量的系统内存。

使用组件

封装好组件后就可以在对应的页面进行引入组件使用即可:

<template>    <amap-container height="100%" :options="amapOptions" @map="getAMapData" /></template><script>    import AMap from '@/components/AMap'    export default {        name: 'AMapDemo',        components: {            'amap-container': AMap        },        data: () => ({            amapOptions: {                zoom: 14,                resizeEnable: true,                viewMode: '3D',                mapStyle: 'amap://styles/nORMal'            },            AMap: null, // 地图对象            amap: null // 当前地图实例        }),        methods: {                        getAMapData(amap, AMap) {                // 从组件获取地图 amap 对象                this.amap = amap                // 从组件获取地图 AMap 静态对象                this.AMap = AMap            }        }    }</script>

然后在上面基础上展开相关业务。对于地图应用来说,最核心的数据就是地图应用中的坐标,无论是地图的标记元素,折线元素(轨迹等),绘制图元素等,只需要获取对应的经纬度数据存到数据库即可,至于怎么获取这边不再详述。

自定义界面最佳实践

之前制作的地图应用,在标记的详细界面(选择某个标记左键打开界面),这个界面是需要传入原生 document 对象,但是在 vue 对象里面不符合这种写法,所以导致之前很多系统都是花大量的时间去编写 dom 结构,甚是头疼,后续为了解决这个问题,vue 是否有相关方法挂载组件获取真实的 document 对象,查阅相关文档后,确实有这个 api : Vue.extend,利用这个 api 挂载组件对象即可得到实例化组件的对象。

import ContextCard from './components/ContextCard'// 创建标记const marker = new this.AMap.Marker({  map: this.amap,  position: [119.058904, 33.537069]})// 绑定点击事件marker.on('click', this.markerInfoWindow)// 点击打开弹窗const markerInfoWindow = () => {  // 引入 Vue 组件构造器实例化  const ContextCardContent = Vue.extend(ContextCard)  // 挂载组件  const contextCardContent = new ContextCardContent().$mount()  // 实例化窗口对象  this.amapInfoWindow = new this.AMap.InfoWindow({    isCustom: true,    content: contextCardContent.$el,    offset: new this.AMap.Pixel(0, -40)  })  // 打开窗口  this.amapInfoWindow.open(this.amap, marker.getPosition())  // 监听组件事件关闭窗口  contextCardContent.$on('closeWindow', () => this.amapInfoWindow.close())}

ContextCard.vue 组件:

<template>  <el-card class="context-box-card box-card">    <div slot="header" class="header">      <span>卡片名称</span>      <el-button type="text" class="close-btn" @click="closeWindow">关闭</el-button>    </div>    <div v-for="o in 4" :key="o" class="text item">      {{ '列表内容 ' + o }}    </div>  </el-card></template><script>export default {  name: 'AMapContextCard',  methods: {    closeWindow() {      this.$emit('closeWindow')    }  }}</script><style lang="scss" scoped>.context-box-card {  width: 320px;  height: 200px;  .header {    display: flex;    justify-content: space-between;    align-items: center;  }  ::v-deep .el-card__header {    padding: 5px 20px;  }}</style>

上面就是一个标点点击打开标记弹窗的详细信息,利用 Vue.extend 构造器进行实例化组件。这样很大程度上提高项目健壮性。

import Vue from "vue";import App from "./App.vue";import Element from "element-ui";import "normalize.css/normalize.css";import "element-ui/lib/theme-chalk/index.css";Vue.config.productionTip = false;Vue.use(Element);new Vue({  render: (h) => h(App)}).$mount("#app");

以上是“Vue如何开发高德地图应用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Vue如何开发高德地图应用

本文链接: https://www.lsjlt.com/news/296825.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Vue如何开发高德地图应用
    这篇文章主要为大家展示了“Vue如何开发高德地图应用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue如何开发高德地图应用”这篇文章吧。异步加载因为使用 js sdk 应用,脚本文件本身体积很...
    99+
    2023-06-20
  • Vue开发高德地图应用的最佳实践
    目录前言异步加载封装组件使用组件自定义界面最佳实践总结前言 之前做不过不少关于地图交互的产品系统,目前国内主流的地图应用 SDK 只有几家:高德、百度和腾讯。所以个人觉得在 PC ...
    99+
    2024-04-02
  • Vue如何接入高德地图
    这篇“Vue如何接入高德地图”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue如何接入高德地图”文章吧。Vue接入高德地图...
    99+
    2023-07-02
  • vue项目中如何使用高德地图
    这篇文章主要介绍“vue项目中如何使用高德地图”,在日常操作中,相信很多人在vue项目中如何使用高德地图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue项目中如何使用高德地图”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • vue如何利用openlayers加载天地图和高德地图
    这篇文章给大家分享的是有关vue如何利用openlayers加载天地图和高德地图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、天地图部分1、在vue中安装openlayersnpm i -...
    99+
    2023-06-25
  • vue利用openlayers加载天地图和高德地图
    目录一、天地图部分1、在vue中安装openlayers二、高德地图部分一、天地图部分 1、在vue中安装openlayers npm i --save ol 这里说的vue是基于脚...
    99+
    2024-04-02
  • Android开发Compose集成高德地图实例
    目录正文高德地图官网开发者建议初始化MapView并添加到AndroidView里面MapView增加一个管理地图生命周期的扩展给MapView添加生命周期观察者添加MapView的...
    99+
    2024-04-02
  • vue如何使用原生高德地图你知道吗
    1、先在vue项目根目录下新建vue.config.js,这个文件是没有的,vue不提供 module.exports = { configureWebpack: { ex...
    99+
    2024-04-02
  • vue怎么使用原生高德地图
    本篇内容主要讲解“vue怎么使用原生高德地图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么使用原生高德地图”吧!1、先在vue项目根目录下新建vue.config.js,这个文件是没有...
    99+
    2023-06-29
  • vue3中如何使用高德地图api
    本篇内容介绍了“vue3中如何使用高德地图api”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前置工作在开发之前我们需要了解 vue3 中接...
    99+
    2023-07-05
  • Vue组件如何实现高德地图地址选择功能
    这篇文章给大家分享的是有关Vue组件如何实现高德地图地址选择功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、效果图二、组件要实现的功能1. 如果有传入坐标点,则定位到坐标点...
    99+
    2024-04-02
  • Vue使用高德地图实现城市定位
    本文实例为大家分享了Vue使用高德地图实现城市定位的具体代码,供大家参考,具体内容如下 一 前端选择框点击跳转至地图选址页面 <van-row class="address...
    99+
    2024-04-02
  • Vue接入高德地图的完整实例
    目录前言参考资料Vue接入高德地图引用使用实现点击按钮缩放功能地图放大地图缩小测量距离测量面积行政区划查询渲染关键字搜索鼠标绘制区域总结前言 Vue 使用高德地图,实现缩放,鼠标绘制...
    99+
    2024-04-02
  • VUE项目调用高德地图的详细步骤
    目录前言申请高德key技术选型准备工作项目中应用刷新页面,地图加载偶尔失败在绑定插件的时候,控制台报错 a[d].split is not a function原生调用高德API混合...
    99+
    2024-04-02
  • UNiAPP中如何使用render.js绘制高德地图
    目录什么是render.js使用方式在uniAPP中使用render.js 绘制高德地图明确需求解决思路编写代码vue页面使用render.js初始化地图实现效果render.js中...
    99+
    2024-04-02
  • VUE中如何调用高德地图获取当前位置(VUE2.0和3.0通用)
    1、去高德开放平台获取高德地图KEY 地址:https://lbs.amap.com/ 注意:这里一定要选择WEB端的KEY,不要选择WEB服务的KEY,否则拿不到数据 2、去项目中...
    99+
    2023-05-15
    vue中使用高德地图 vue 高德地图定位 vue获取当前地理位置
  • VUE中怎么调用高德地图获取当前位置
    这篇文章主要介绍“VUE中怎么调用高德地图获取当前位置”,在日常操作中,相信很多人在VUE中怎么调用高德地图获取当前位置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”VUE中怎么调用高德地图获取当前位置”的疑...
    99+
    2023-07-06
  • 在vue3项目中如何使用新版高德地图
    这篇文章主要讲解了“在vue3项目中如何使用新版高德地图”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在vue3项目中如何使用新版高德地图”吧!1. 首先你要注册好账号登录2. 获取key和...
    99+
    2023-07-05
  • VUE项目中调用高德地图的全流程讲解
    目录前言申请高德key技术选型刷新页面,地图加载偶尔失败在绑定插件的时候,控制台报错 a[d].split is not a function原生调用高德API总结前言 相信大家或多...
    99+
    2024-04-02
  • vue怎么使用高德地图根据坐标定位点
    这篇文章将为大家详细讲解有关vue怎么使用高德地图根据坐标定位点,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。正文<script> var map,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作