当前位置:首页 > VUE

vue实现地图导航

2026-01-23 08:29:17VUE

使用高德地图API实现Vue地图导航

安装高德地图JavaScript API的Vue封装库

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

在Vue组件中引入并初始化地图

import AMapLoader from '@amap/amap-jsapi-loader'

export default {
  data() {
    return {
      map: null,
      AMap: null
    }
  },
  mounted() {
    this.initMap()
  },
  methods: {
    initMap() {
      AMapLoader.load({
        key: '您的高德地图Key',  // 替换为实际key
        version: '2.0',
        plugins: ['AMap.Driving']
      }).then((AMap) => {
        this.AMap = AMap
        this.map = new AMap.Map('map-container', {
          viewMode: '2D',
          zoom: 13,
          center: [116.397428, 39.90923]  // 默认北京中心点
        })
      })
    }
  }
}

添加路线规划功能

在组件中添加导航方法

methods: {
  drawRoute(start, end) {
    const driving = new this.AMap.Driving({
      map: this.map,
      policy: this.AMap.DrivingPolicy.LEAST_TIME
    })

    driving.search([
      { keyword: start, city: '城市名' },
      { keyword: end, city: '城市名' }
    ], (status, result) => {
      if (status === 'complete') {
        console.log('路线规划完成')
      } else {
        console.error('路线规划失败', result)
      }
    })
  }
}

添加地图标记和信息窗口

实现地点标记和信息展示

addMarker(position, title) {
  const marker = new this.AMap.Marker({
    position: position,
    title: title,
    map: this.map
  })

  const infoWindow = new this.AMap.InfoWindow({
    content: `<div>${title}</div>`
  })

  marker.on('click', () => {
    infoWindow.open(this.map, marker.getPosition())
  })
}

集成位置搜索功能

添加地点搜索方法

searchPlace(keyword) {
  const placeSearch = new this.AMap.PlaceSearch({
    map: this.map,
    city: '城市名'
  })

  placeSearch.search(keyword, (status, result) => {
    if (status === 'complete') {
      result.poiList.pois.forEach(poi => {
        this.addMarker([poi.location.lng, poi.location.lat], poi.name)
      })
    }
  })
}

响应式地图容器样式

确保地图容器正确显示

vue实现地图导航

<template>
  <div id="map-container" style="width: 100%; height: 500px;"></div>
</template>

注意事项

  1. 需要在项目中引入高德地图的安全密钥
  2. 使用前需在高德开放平台申请Web端Key
  3. 实际部署时需要考虑跨域问题和https协议要求
  4. 移动端需额外处理触摸事件和响应式布局

标签: 地图vue
分享给朋友:

相关文章

vue 实现递归

vue 实现递归

Vue 实现递归组件的方法 在 Vue 中实现递归组件通常用于处理树形结构数据,例如菜单、评论列表或文件目录。以下是实现递归组件的关键步骤: 定义递归组件 递归组件需要设置 name 属性,以便在模…

vue实现图片

vue实现图片

Vue 实现图片功能的方法 静态图片引入 在 Vue 项目中,可以通过 src 属性直接引入静态图片。图片通常放在 public 或 assets 目录下。 <template> &…

vue实现水印

vue实现水印

Vue 实现水印的方法 使用 CSS 背景图 通过 CSS 的 background-image 和 background-repeat 属性实现水印效果。创建一个包含水印文本的 Canvas,将其转…

vue实现拖动

vue实现拖动

Vue实现拖动的常用方法 在Vue中实现拖动功能通常需要结合HTML5的拖放API或第三方库。以下是几种常见实现方式: 使用HTML5原生拖放API HTML5提供了原生拖放API,可以通过drag…

vue实现vmodel

vue实现vmodel

Vue 实现 v-model Vue 的 v-model 是一个语法糖,用于在表单元素或组件上实现双向数据绑定。以下是其实现方式和原理的详细说明。 在表单元素上使用 v-model v-model…

vue实现单词逆转

vue实现单词逆转

实现单词逆转的方法 在Vue中实现单词逆转可以通过多种方式完成,以下是几种常见的方法: 使用计算属性逆转单词 计算属性是Vue中处理数据逻辑的理想选择。可以通过计算属性来实现单词逆转: <t…