vue中谷歌地图标记点、聚合点图标自定义

  • 标记点自定义
  • 聚合点自定义
  • 完整代码

最近用vue+谷歌地图做国外项目,地图需要有标记点和聚合点。
标记点:1,图标样式自定义 2,点击更换图标
聚合点:1,图标样式自定义

标记点自定义

标记点自定义图标主要是设置 url 地址,记住 url 直接引入图片的地址需要用到 require('../../***.png')
代码:

new google.maps.Marker({position: item,icon: {          //  icon对象里面设置标记点的图标和图标宽高url: require("../../../static/images/maker.png"),size: {width: 46,height: 50,},},
})
//  通过setIcon方法更换标记点图标
item.setIcon(require("../../../static/images/maker_touch.png"))

具体的其他属性可以参考官网:地图标记

聚合点自定义

聚合点更换图标也不复杂,官方给出的案例我试了,没有作用,参考的是源代码。
代码:

//  这里写五个是因为标记点必须要有五个,官方是有五个不同样式的标记点,这里我用的是相同的五个,
import mar1 from "../../../static/images/marker_clusterer1.png";
import mar2 from "../../../static/images/marker_clusterer2.png";
import mar3 from "../../../static/images/marker_clusterer3.png";
import mar4 from "../../../static/images/marker_clusterer4.png";
import mar5 from "../../../static/images/marker_clusterer5.png";
markerStyles:[{url:mar1,width:46,height:48,textSize: 16,  //  聚合点内字体大小,下面有更多属性},{url:mar2,width:46,height:48,textSize: 16,},{url:mar3,width:46,height:48,textSize: 16,},{url:mar4,width:46,height:48,textSize: 16,},{url:mar5,width:46,height:48,textSize: 16,},
],
//  关键在这句话,官方给的案例里面是 imagePath ,我试了没有作用
new MarkerClusterer(map, markers, { styles: this.markerStyles })
//  聚合点源码static withDefaultStyle(overrides: ClusterIconStyle): ClusterIconStyle {return {textColor: "black",textSize: 11,textDecoration: "none",textLineHeight: overrides.height,fontWeight: "bold",fontStyle: "normal",fontFamily: "Arial,sans-serif",backgroundPosition: "0 0",...overrides,};}

具体的其他属性可以参考官网:地图聚合点
这个页面可以跳转到官方的聚合点github,里面可以看到用TS写的源码,有需要可以进行参考

完整代码

import mar1 from "../../../static/images/marker_clusterer1.png";
import mar2 from "../../../static/images/marker_clusterer2.png";
import mar3 from "../../../static/images/marker_clusterer3.png";
import mar4 from "../../../static/images/marker_clusterer4.png";
import mar5 from "../../../static/images/marker_clusterer5.png";
export default {name: "test",data() {return {// 谷歌地图聚合点样式更换markerStyles:[{url:mar1,width:46,height:48,textSize: 16,},{url:mar2,width:46,height:48,textSize: 16,},{url:mar3,width:46,height:48,textSize: 16,},{url:mar4,width:46,height:48,textSize: 16,},{url:mar5,width:46,height:48,textSize: 16,},],}},methods: {// ---------------谷歌地图-------------------// 页面第一次渲染谷歌地图加载全部坐标点(显示聚合点)//  data参数是所有的标记点数组setAllGooglePosition(data) {let options = {zoom: 10,center: { lat: data[0].lat, lng: data[0].lng },zoomControl: true,// 操作按钮的位置zoomControlOptions: {position: google.maps.ControlPosition.RIGHT_CENTER,},streetViewControl: false,}let map = new google.maps.Map(document.getElementById("screenGmap"), options)const markers = data.map((item, i) => {return new google.maps.Marker({position: item,icon: {url: require("../../../static/images/maker.png"),size: {width: 46,height: 50,},},})})markers.map((item, index) => {item.addListener("click", () => {//  点击标记点弹窗显示具体信息  this.$t 用的是I18N做的国际化let contentString = `<div id="window-box"><div>${ this.$t('mapMarker.title') }Lamp-post</div><div><label>${ this.$t('mapMarker.lng') }:</label>${data[index].lng}</div><div><label>${ this.$t('mapMarker.lat') }:</label>${data[index].lat}</div><div><label>${ this.$t('mapMarker.name') }:</label>${data[index].label}</div><div><label>${ this.$t('mapMarker.group') }:</label>${data[index].groupName}</div><div><label>${ this.$t('mapMarker.device') }:</label>${data[index].count}</div></div>`let infowindow = new google.maps.InfoWindow({content: contentString,minWidth: 200});//  通过setIcon方法更换标记点图标item.setIcon(require("../../../static/images/maker_touch.png"))infowindow.open(map, item);map.addListener('click', function() {item.setIcon(require("../../../static/images/maker.png"))infowindow.close();})});});new MarkerClusterer(map, markers, { styles: this.markerStyles })},// ---------------谷歌地图-------------------}
}

代码写的不是很成熟,不过基本的实现是有用,有哪里写的有错误的地方欢迎各位大佬指出。

注: 1,谷歌地图不是下载的第三方包使用的,我是直接引入的script,有了script,就可以使用谷歌地图的实例方法。
2,在国内用谷歌地图还有一个坑就是,首先需要fanqiang,其次就是用免费的很容易地图不出现,控制台打印:google is not defined ,这个时候检查一下有没有fanqiang,或者说fanqiang的网络好不好,当然如果这些问题都不存在,那就考虑一下是不是地图apikey的引入问题

vue中谷歌地图标记点、聚合点图标自定义相关推荐

  1. vue 引入json地图_使用vue引入maptalks地图及聚合效果的实现

    1.安装maptalks.js npm install maptalks --save 2.安装聚合mapkercluster npm install maptalks.markercluster 3 ...

  2. html地图无法点击,无法触发谷歌地图标记点击事件从HTML按钮

    我尝试创建一个HTML按钮,可以触发谷歌地图上的标记的点击事件,所以每当我点击按钮,地图将自动放大到标记和显示infowindow.这里是我的代码无法触发谷歌地图标记点击事件从HTML按钮 Semua ...

  3. vue是否可以做行车轨迹_在vue中高德地图引入和轨迹的绘制的实现

    高德地图引入和轨迹的绘制 1.第一步 vue中使用cdn引入高德地图,并在main.js中进行全局配置.(百度上有高德地图引入与配置方法,这里就不详细介绍): 1)npm install vue-am ...

  4. vue中修改浏览器标签栏title和图标

    vue中修改浏览器标签栏title和图标 一.修改文字 在项目中的index.html文件title标签中直接写 二.修改标签栏图片 1.在项目中的static文件中放入一张图片 2.在index.h ...

  5. vue中百度地图使用及自定义点聚合样式

    百度地图使用及点聚合功能 由于后台固定了百度地图,百度地图和高德地图经纬度转换有次数限制,不能满足项目的正常运行,所以切换了百度地图,下面对使用中遇到的问题进行记录: 安装及使用百度地图: npm i ...

  6. vue使用谷歌地图绘制图形以及地图选点功能

    因做加拿大配送项目得用到谷歌地图 效果图: 第一步: 首先访问谷歌地图以及文档需要加速插件 你得在谷歌浏览器扩展程序里添加一个加速插件(如图): 最好充值vip,不然免费的加速通道不稳定 本人是在vu ...

  7. Vue中百度地图(vue-baidu-map)的使用

    1.开始 vue-map-baidu:https://dafrok.github.io/vue-baidu-map/#/zh/start/installation 百度地图开发者平台申请密钥详见: h ...

  8. vue人员轨迹_在vue中高德地图引入和轨迹的绘制的实现

    高德地图引入和轨迹的绘制 1.第一步 vue中使用cdn引入高德地图,并在main.js中进行全局配置.(百度上有高德地图引入与配置方法,这里就不详细介绍): 1)npm install vue-am ...

  9. 在html和vue中使用iconfont的symble色彩图标

    在html以及vue中使用iconfont的symbol图标 写给新手看的 首先注册iconfont,并创建一个项目,在图标库把选择的图标加入项目 可以选择使用在线链接,这里推荐下载到本地 要注意使用 ...

最新文章

  1. leangoo敏捷开发看板工具
  2. 制作多域名(SAN/UCC)CSR(证书请求文件)
  3. android setimageresource取list的,Java ImageView.setImageTintList方法代码示例
  4. Oracle 如何实现第M行至第N行的有序读取,避免子查询order by出错
  5. 仿制波形驱动机器人- SAW
  6. jquery 全国 三联 地址选择
  7. php网站本地调试工具,php本地调试工具-php/asp网站程序本地调试工具下载 v5.1--pc6下载站...
  8. 支持rotate和大小限制的golang log库
  9. CCNA Cisco 安全配置
  10. 51单片机模块化编程
  11. python---字符串的拼接、去重、反转、字母花样排序、单词出现判断、统计文件特定单词频率lambda、硬盘容量、列表转字符串
  12. PS自学教程之色彩三原色RGB
  13. R-S编码译码-缩短码(10,6)
  14. Angularjs之模块(angular.module('myApp', [])参数)
  15. Java后台生成多个Excel并用Zip打包后(可以将excel文件放置到不同的目录)下载
  16. css中清除li的点默认样式
  17. pstack工具查看线程堆栈的方法
  18. Vsftpd 详细配置
  19. Java 编程问题:十一、并发-深入探索
  20. 1加到100用python实现

热门文章

  1. CSS设置 background-image透明度小技巧
  2. 解析错误:$%7BpageContext.request.contextPath%7D
  3. Entity Framework学习笔记——EF简介(一篇文章告诉你什么是EF)
  4. 安装纯净版win10系统
  5. Linux命令行操作串口收发数据(stty命令)
  6. 重载和重写的区别是什么
  7. 雷卯电子PUSB3FR4完美兼容安世半导体
  8. 引力魔方扣费方式是什么?引力魔方有什么功能?
  9. ANT 下载,ant的配法及用法
  10. 微软修复打印机服务漏洞 所有支持Windows系统都受影响