Vue2 中使用 gmap - marker 和 GmapCluster 实现谷歌地图标点与聚合

Vue2 中使用 gmap - marker 和 GmapCluster 实现谷歌地图标点与聚合

一、安装与配置依赖

在项目开始前,请确保已安装vue2-google-maps依赖。若尚未安装,在项目根目录下运行以下命令:

复制代码
npm install vue2-google-maps

随后,在main.js文件中进行基础配置,引入你的谷歌地图 API 密钥(可在谷歌云平台申请):

javascript 复制代码
import Vue from 'vue';

import App from './App.vue';

import { VueGoogleMaps } from 'vue2-google-maps';

Vue.use(VueGoogleMaps, {

 load: {

   key: 'YOUR\_API\_KEY',

   libraries: 'places' // 若需使用地点相关功能,可添加此选项

 }

});

new Vue({

 render: h => h(App)

}).$mount('#app');

二、创建地图组件

src/components目录下创建地图组件,例如GoogleMapWithCluster.vue

xml 复制代码
<template>

 <gmap-map

   :center="{lat: 37.7749, lng: -122.4194}"

   :zoom="12"

   map-type-id="roadmap"

   style="width: 100%; height: 500px;"

 >

   <gmap-cluster>

     <gmap-marker

       v-for="(marker, index) in markers"

       :key="index"

       :position="marker.position"

       :title="marker.title"

     />

   </gmap-cluster>

 </gmap-map>

</template>

<script>

import { GmapMap, GmapMarker } from 'vue2-google-maps';

import GmapCluster from 'vue2-google-maps/src/components/cluster';

export default {

 components: {

   GmapMap,

   GmapMarker,

   GmapCluster

 },

 data() {

   return {

     markers: [

       {

         position: { lat: 37.7749, lng: -122.4194 },

         title: 'Marker 1'

       },

       {

         position: { lat: 37.7761, lng: -122.4185 },

         title: 'Marker 2'

       },

       {

         position: { lat: 37.7755, lng: -122.4178 },

         title: 'Marker 3'

       }

       // 可按需添加更多标记数据

     ]

   };

 }

};

</script>

<style scoped>

/\* 地图样式可依需求调整 \*/

</style>

代码说明:

模板部分通过gmap-map组件创建地图,设置了地图的中心坐标、缩放级别和地图类型。

gmap-cluster作为gmap-map的子组件,在gmap-cluster内部通过v-for循环渲染gmap-marker组件,每个gmap-marker对应一组标记数据,以此实现标点和聚合的展示。

脚本部分引入所需的GmapMapGmapMarkerGmapCluster组件,并在components选项中进行局部注册。同时,在data中定义markers数组,用于存储标记数据。

三、使用地图组件

App.vue文件中使用刚创建的GoogleMapWithCluster.vue组件:

xml 复制代码
<template>

 <div id="app">

   <GoogleMapWithCluster />

 </div>

</template>

<script>

import GoogleMapWithCluster from './components/GoogleMapWithCluster.vue';

export default {

 components: {

   GoogleMapWithCluster

 }

};

</script>

<style>

#app {

 font-family: Avenir, Helvetica, Arial, sans-serif;

 -webkit-font-smoothing: antialiased;

 -moz-osx-font-smoothing: grayscale;

 text-align: center;

 color: #2c3e50;

 margin-top: 60px;

}

</style>

下图是效果(样式是经过修改):

相关推荐
xy34531 分钟前
Axure 9.0 中继器核心结构
前端·ui·html·axure·原型·产品设计
老王以为8 分钟前
走进 AI Agent 第四篇(上):知识获取管道——RAG 基础
前端·人工智能·全栈
夏天要喝冰可乐21 分钟前
一处写作,多平台分发:我给掘金做了一款开源 Chrome 插件
前端·chrome·vibecoding
货拉拉技术31 分钟前
货拉拉开源Hadice:安卓 & 鸿蒙桌面调试工具
前端
程序猿DD1 小时前
OctaFuse Gateway 2.11.0:流式请求优化、用户折扣策略与错误契约升级
前端·后端
尾善爱看海1 小时前
《JavaScript 数组操作全攻略:12 类 API + 30 个实战场景 + 20 个避坑指南》
前端·javascript·面试
计算机魔术师1 小时前
Anthropic 估值冲 4 万亿,但企业客户已经偷偷换了便宜模型
前端
王六米。2 小时前
RAG知识库建设 文档解析 切分与索引如何衔接
服务器·前端·网络·企业数字化转型·智钳智能盒子
名字还没想好☜2 小时前
React 文件上传实战:预览 URL 回收、多文件逐个进度与拖拽放置区踩坑
前端·react·next.js
console.log('npc')2 小时前
06 — Model 层:数据模型与操作
前端·后端·node.js·express