当前位置:首页 > VUE

用vue实现地图

2026-02-20 23:00:49VUE

使用Vue实现地图的几种方法

基于高德地图API

安装高德地图JavaScript API库:

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

创建地图组件:

<template>
  <div id="map-container"></div>
</template>

<script>
import AMapLoader from '@amap/amap-jsapi-loader'

export default {
  data() {
    return {
      map: null
    }
  },
  mounted() {
    this.initMap()
  },
  methods: {
    initMap() {
      AMapLoader.load({
        key: '您的高德key',
        version: '2.0',
        plugins: ['AMap.ToolBar', 'AMap.Scale']
      }).then((AMap) => {
        this.map = new AMap.Map('map-container', {
          viewMode: '2D',
          zoom: 11,
          center: [116.397428, 39.90923]
        })
      })
    }
  }
}
</script>

<style>
#map-container {
  width: 100%;
  height: 500px;
}
</style>

使用百度地图API

安装百度地图JavaScript API:

npm install vue-baidu-map --save

全局注册组件:

import Vue from 'vue'
import BaiduMap from 'vue-baidu-map'

Vue.use(BaiduMap, {
  ak: '您的百度key'
})

在组件中使用:

<template>
  <baidu-map class="map" :center="center" :zoom="zoom"></baidu-map>
</template>

<script>
export default {
  data() {
    return {
      center: {lng: 116.404, lat: 39.915},
      zoom: 15
    }
  }
}
</script>

<style>
.map {
  width: 100%;
  height: 500px;
}
</style>

使用Leaflet地图库

安装Leaflet及相关插件:

用vue实现地图

npm install leaflet vue2-leaflet

创建地图组件:

<template>
  <div>
    <l-map :zoom="zoom" :center="center">
      <l-tile-layer :url="url"></l-tile-layer>
      <l-marker :lat-lng="marker"></l-marker>
    </l-map>
  </div>
</template>

<script>
import { LMap, LTileLayer, LMarker } from 'vue2-leaflet'

export default {
  components: {
    LMap,
    LTileLayer,
    LMarker
  },
  data() {
    return {
      url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
      zoom: 13,
      center: [51.505, -0.09],
      marker: [51.505, -0.09]
    }
  }
}
</script>

<style>
@import "~leaflet/dist/leaflet.css";

.leaflet-container {
  height: 500px;
  width: 100%;
}
</style>

使用Google Maps API

安装Google Maps JavaScript API:

npm install @googlemaps/js-api-loader

创建地图组件:

用vue实现地图

<template>
  <div ref="mapRef" class="map-container"></div>
</template>

<script>
import { Loader } from '@googlemaps/js-api-loader'

export default {
  data() {
    return {
      map: null
    }
  },
  mounted() {
    this.initMap()
  },
  methods: {
    async initMap() {
      const loader = new Loader({
        apiKey: "您的Google key",
        version: "weekly"
      })

      await loader.load()
      this.map = new google.maps.Map(this.$refs.mapRef, {
        center: { lat: 39.90923, lng: 116.397428 },
        zoom: 8
      })
    }
  }
}
</script>

<style>
.map-container {
  height: 500px;
  width: 100%;
}
</style>

地图功能扩展建议

添加标记点

// 高德地图示例
new AMap.Marker({
  position: [116.39, 39.9],
  map: this.map
})

绘制多边形

// 百度地图示例
const polygon = new BMap.Polygon([
  new BMap.Point(116.387, 39.919),
  new BMap.Point(116.385, 39.913),
  new BMap.Point(116.394, 39.911)
], {strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5})
this.map.addOverlay(polygon)

添加信息窗口

// Leaflet示例
L.popup()
  .setLatLng([51.5, -0.09])
  .setContent("这里是信息窗口内容")
  .openOn(this.map)

实现地图搜索

// 高德地图搜索示例
AMap.plugin('AMap.PlaceSearch', () => {
  const placeSearch = new AMap.PlaceSearch({
    pageSize: 5,
    pageIndex: 1,
    city: '北京'
  })
  placeSearch.search('餐馆', (status, result) => {
    // 处理搜索结果
  })
})

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

相关文章

vue实现详情

vue实现详情

Vue 实现详情页的常见方法 使用动态路由 在 Vue Router 中配置动态路由参数,通过 $route.params 获取详情 ID。示例路由配置: { path: '/detail/:i…

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…

vue实现双向

vue实现双向

Vue 实现双向绑定的方法 Vue 的双向绑定主要通过 v-model 指令实现,它结合了数据绑定和事件监听,适用于表单元素(如 input、select、textarea 等)。以下是几种常见的实现…

vue 实现excel

vue 实现excel

Vue 实现 Excel 功能 前端导出 Excel 使用 xlsx 库可以轻松实现前端 Excel 导出功能。安装依赖: npm install xlsx 导出 Excel 示例代码: impo…

vue实现slidedown

vue实现slidedown

Vue 实现 SlideDown 动画效果 在 Vue 中实现 SlideDown 效果可以通过 CSS 过渡或动画结合 Vue 的过渡系统完成。以下是几种常见方法: 使用 Vue Transiti…

vue实现拉伸

vue实现拉伸

Vue 实现元素拉伸功能 在Vue中实现元素的拉伸(拖拽调整大小)功能,可以通过监听鼠标事件结合CSS样式来实现。以下是两种常见实现方式: 使用原生事件监听 创建可拉伸的组件需要处理鼠标按下…