Vue高德地图

一、高德地图介绍

高德地图是中国领先的数字地图内容、导航和位置服务解决方案提供商,其提供了各种地图服务,如:定位,搜索,导航,交通等。高德地图的主要目标是为用户提供实用、智能、人性化的信息服务,成为人们移动出行生活的最佳伙伴。

二、Vue.js简介

Vue.js是一个流行的渐进式Javascript框架,其核心库在2021年4月发布了最新的版本。Vue.js使用单文件组件风格,将模板、脚本和样式都写在一个文件中,使代码更清晰和维护起来更容易。Vue.js还提供了许多实用的指令和插件,如v-bind、v-model等,使Vue.js非常适合构建复杂的单页应用程序(SPA)。

三、Vue高德地图使用

1、安装

首先需要安装高德地图的Javascript API以及Vue.js官方提供的VueAMap插件:

npm install vue-amap amap-jsapi-loader --save

2、注册插件

在main.js文件中引入VueAMap插件,并注册到Vue实例中:

// main.js

import Vue from 'vue'
import VueAMap from 'vue-amap'

Vue.use(VueAMap)

VueAMap.initAMapApiLoader({
  // 高德的key
  key: 'your amap key',
  // 插件集合
  plugin: [
    'AMap.Geolocation',
    'AMap.Marker',
    'AMap.Walking',
    'AMap.MapType',
    'AMap.PolyEditor'
  ],
  // 高德 sdk 版本,默认为 1.4.15
  v: '1.4.15',
  uiVersion: '1.0.11' // UI库版本号
})

3、创建地图组件

在Vue组件中添加高德地图,使用VueAMap提供的`amp-map`标签,并设置各种属性来自定义地图实例:

<template>
  <div>
    <amap-map :zoom="13">
      </amap-map>
  </div>
</template>

<script>
export default {
  name: 'MapDemo'
}
</script>

4、标记和信息窗体

创建一个标记对象,并为其添加事件处理程序来显示信息窗口:

<template>
  <div>
    <amap-map :zoom="13">
      <amap-marker :position="markerPosition" @click="showInfoWindow"/>
      <amap-info-window :position="infoWindowPosition">
        <div>{{infoWindowText}}</div>
      </amap-info-window>
    </amap-map>
  </div>
</template>

<script>
export default {
  name: 'MapDemo',
  data () {
    return {
      markerPosition: [121.484170, 31.233385],
      infoWindowPosition: [121.484170, 31.233385],
      infoWindowText: '信息窗体内容'
    }
  },
  methods: {
    showInfoWindow () {
      this.$refs.infoWindow.open(this.markerPosition)
    }
  }
}
</script>

5、搜索

使用高德地图的JavaScript API和VueAMap插件进行地址搜索:

<template>
  <div>
    <amap-map :zoom="zoom">
      <amap-marker :position="markerPosition"/>
    </amap-map>
  </div>
</template>

<script>
export default {
  name: 'MapDemo',
  data () {
    return {
      address: '上海市黄浦区南京东路',
      zoom: 13,
      markerPosition: []
    }
  },
  mounted () {
    this.searchAddress(this.address)
  },
  methods: {
    searchAddress (address) {
      this.$amap.getGeocoder().getLocation(address, (status, result) => {
        if (status === 'complete' && result.geocodes.length) {
          this.markerPosition = result.geocodes[0].location
        } else {
          alert('地址不存在')
        }
      })
    }
  }
}
</script>

6、路线规划

使用高德地图提供的JavaScript API和VueAMap插件进行步行和公共交通路线规划:

<template>
  <div>
    <amap-map :zoom="zoom">
      <amap-marker :position="startPosition"></amap-marker>
      <amap-marker :position="endPosition"></amap-marker>
      <amap-polyline :path="polylinePath">
        <amap-icon :icon="walkIcon" offset="-5,-10"></amap-icon>
      </amap-polyline>
    </amap-map>
  </div>
</template>

<script>
export default {
  name: 'MapDemo',
  data () {
    return {
      zoom: 13,
      startPosition: [121.484170, 31.233385],
      endPosition: [121.537018, 31.245945],
      polylinePath: [],
      walkIcon: {
        size: new this.$amap.Size(23, 25),
        image: '//a.amap.com/jsapi_demos/static/demo-center/icons/dir-marker.png',
        imageOffset: new this.$amap.Pixel(-2, -13)
      }
    }
  },
  mounted () {
    this.walkRoutePlan()
  },
  methods: {
    walkRoutePlan () {
      const walker = new this.$amap.Walking({
        map: this.$refs.map,
        panel: '',
        // from和to同时存在时,from优先
        from: this.startPosition,
        to: this.endPosition
      })

      walker.search((status, result) => {
        if (status === 'complete' && result.routes.length) {
          const path = result.routes[0].path
          this.polylinePath = path.map((p) => [p.lng, p.lat])
          this.$refs.map.setFitView()
        }
      })
    }
  }
}
</script>

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/291092.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-24 13:14
下一篇 2024-12-24 13:14

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • 用Python画疫情地图

    COVID-19疫情在全世界范围内肆虐了数月,为了让人们了解当前疫情的最新情况,很多技术人员都开始使用数据可视化的手段展示疫情数据。其中一个重要的展示形式就是利用Python编程语…

    编程 2025-04-29
  • Echarts 地图 Label 增加背景图

    本文将从多个方面对 Echarts 地图 Label 增加背景图进行详细的阐述。 一、背景图的作用 为 Echarts 地图添加背景图可以使 Label 更加直观、美观,提升视觉效…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的数据请求方法

    本文将介绍如何在ThinkPHP6和Vue.js中进行数据请求,同时避免使用Fetch函数。 一、AJAX:XMLHttpRequest的基础使用 在进行数据请求时,最基础的方式就…

    编程 2025-04-27
  • 开发前端程序,Vue是否足够?

    Vue是一个轻量级,高效,渐进式的JavaScript框架,用于构建Web界面。开发人员可以使用Vue轻松完成前端编程,开发响应式应用程序。然而,当涉及到需要更大的生态系统,或利用…

    编程 2025-04-27
  • ECharts地图轮播

    本文将从插件基础、数据准备及处理、地图呈现、轮播控制等方面,对ECharts地图轮播进行详细阐述。 一、插件基础 ECharts官方提供了一个名为“echarts-gl”的插件,它…

    编程 2025-04-27
  • 如何在Vue中点击清除SetInterval

    在Vue中点击清除SetInterval是常见的需求之一。本文将介绍如何在Vue中进行这个操作。 一、使用setInterval和clearInterval 在Vue中,使用set…

    编程 2025-04-27

发表回复

登录后才能评论