当前位置:首页 > VUE

vue实现地图导航

2026-01-23 08:29:17VUE

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

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

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

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

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)
      }
    })
  }
}

添加地图标记和信息窗口

实现地点标记和信息展示

vue实现地图导航

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)
      })
    }
  })
}

响应式地图容器样式

确保地图容器正确显示

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

注意事项

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

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

相关文章

vue实现放大效果

vue实现放大效果

使用 CSS transform 实现放大效果 在 Vue 中实现放大效果可以通过 CSS 的 transform: scale() 属性。这种方法简单高效,适合大多数交互场景。 定义一个 CSS…

vue实现页面截屏

vue实现页面截屏

使用html2canvas库实现截屏 html2canvas是一个流行的JavaScript库,可以将DOM元素转换为Canvas图像。在Vue项目中安装html2canvas: npm insta…

vue实现绑卡的原理

vue实现绑卡的原理

Vue 实现绑卡的原理 Vue 实现绑卡功能通常涉及前端表单处理、数据绑定、验证以及和后端 API 的交互。以下是实现绑卡功能的核心原理和步骤: 数据绑定与表单处理 Vue 通过 v-model 指…

vue实现一个tab栏

vue实现一个tab栏

Vue 实现 Tab 栏 基础实现(选项式 API) <template> <div class="tab-container"> <div class="t…

vue实现边框

vue实现边框

Vue 实现边框的方法 在 Vue 中实现边框效果可以通过多种方式完成,包括内联样式、CSS 类绑定、动态样式以及使用第三方 UI 库。以下是几种常见的实现方法。 内联样式绑定 使用 Vue 的…

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…