vue使用Google地图的实现示例代码


Posted in Javascript onDecember 19, 2018

最近用Vue开发后台系统时,有些数据需要在地图上标注出来,需要用到地图功能,因为是国际项目,国内的地图不太适用,所以选用了Google地图,谷歌地图API: https://developers.google.cn/maps/documentation/javascript/tutorial 。

一、必须的开发要求

1.获取密钥API Key

首先,要使用Google Maps JavaScript API,必须获取一个可用的API密钥,并且必须启用结算,具体获取步骤可百度查询,在此就不一一叙述了,主要想讲的地图用法。

2.海外服务器IP

.想要使用谷歌地图就需要翻墙了,公司购买的是发条云的账号,在浏览器上下载发条云安装,安装好之后输入用户账号和密码进行登录,就可以选择服务器进行操作了。

vue使用Google地图的实现示例代码

海外模式的网速比较慢,一般开发谷歌地图的时候,我才打开。

二、引入谷歌插件

使用npm进行引入:

npm install vue-google-maps
//mian.js中:
import 'vue-googlemaps/dist/vue-googlemaps.css'
import VueGoogleMaps from 'vue-googlemaps'
Vue.use(VueGoogleMaps, {
 load: {
//填入申请的apiKey账号
  apiKey: '',
  libraries: ['places'],
  useBetaRenderer: false,
 },
})

三、使用谷歌插件

1.使用方法

//创建dom
<div id="allmap" ref="allmap"></div>
  //创建谷歌地图
   this.maps = new google.maps.Map(document.getElementById("allmap"), {
    //显示一个滑动条来控制map的Zoom级别
    zoom: 13,
    //设置地图中心点
    center: { lat: mapData[0].latitude, lng: mapData[0].longitude },
    //为了关闭默认控件集,设置地图的disableDefaultUI的属性为true
    disableDefaultUI: true,
   // 通过单击缩放控件来缩放地图
    gestureHandling: 'cooperative',  
   // 删除地图上的“ 缩放”控件按钮。
    zoomControl: false,
   // 控制地图的类型 roadmap 地图 terrain 地图地形 
   satellite 卫星图像 hybrid 卫星图像+地名
    mapTypeId: 'satellite',      
    //语言可选值:en,zh_en, zh_cn
    language: zh_en  
  
   // 添加标记 (红色的标点)
   let marker = new google.maps.Marker({
    //标点的位置
    position: { lat: 22.5397965915, lng: 114.0611121534 },
    map: this.maps,
   //标点的名称
    title: "中华人民共和国",
   //标点中的文字
    label: "SZ",
   //标点的动画
    animation: google.maps.Animation.DROP
    });
    // 创建消息窗口DOM,将内容包装在HTML DIV中,以便设置InfoWindow的高度和宽度。
   let contentString =
    '<div class="content"><h3>地图</h3><p>测试数据</p></div>';
   //地图的消息窗口:InfoWindow
   let infowindow = new google.maps.InfoWindow({
    content: contentString
   });
   // 点击标点事件
   marker.addListener("click", function() {
    infowindow.open(this.maps, marker);
   });

示例图片:

vue使用Google地图的实现示例代码

2.结合项目

//mapPAge.vue
<template>
 <div class="container">
  <div id="allmap" ref="allmap"></div>
 </div>
</template>
<script>
export default {
  mounted(){
  //在mounted中执行地图方法,mapData为要展示的数据
  this.initMap(mapData);
}
  methods:{
  initMap(mapData) {
   let that = this;
   // 创建google地图
    this.maps = new google.maps.Map(document.getElementById("allmap"), {
    zoom: 13,
    //地图中心点,这里我以第一个数据的经纬度来设置中心点
    center: { lat: mapData[0].latitude, lng: mapData[0].longitude },
    disableDefaultUI: false,
    zoomControl: false   
   });  
   // 设置满足条件的自定义标记图标
   let imageblue = "@/img/map_blue.png";
   let imagered = "@/img/map_red.png";
   let imagegray = "@/img/map_gray.png";
   let infoWindow = new google.maps.InfoWindow();
   // 循环渲染数据
   mapData.map(currData=>{
    // 判断当前图片
    let currImg = "";
    if (currData.line == 0) {
     currImg = imagegray;
    } else {
     if (currData.available >= 4) {
      currImg = imageblue;
     } else {
      currImg = imagered;
     }
    }
    let marker = new google.maps.Marker({
     position: { lat: currData.latitude, lng: currData.longitude },
     map: this.maps,
     title: currData.name,
     // 此处的icon为标记的自定义图标
     icon: currImg,
     animation: google.maps.Animation.DROP
    });
    
     //多个标记点的点击事件
    (function(marker, currData) {
     google.maps.event.addListener(marker, "click", function(e) {
      let currLine =
       currData.line == 1? '在线': '离线';
      //设置消息窗口的统一内容
      infoWindow.setContent(
       '<div class="content"><h3 style="margin-bottom:5px;font-size:20px;">' +
        currData.name +
        '</h3><p style="margin-bottom:5px;font-size:16px;">' +
        currData.address +
        '</p></h3><p style="display: flex;align-items:center;margin-bottom:5px;"><span style="display:inline-block;width:12px;height:12px;border-radius:50%;background:#4ECC77;"></span><span style="margin-left:5px;color:#4ECC77;">可用电池 ' +
        +currData.available +
        '<span style="display:inline-block;width:12px;height:12px;border-radius:50%;background:#FF485C;margin-left:25px;"></span><span style="margin-left:5px;color:#FF485C;">空仓 ' +
        +currData.empty +
        '</span></p><p style="color:#333;margin-top:5px;">机柜状态:<span style="color:#000;">' +currLine+
        '</span></p><p style="color:#333;margin-top:5px;">地理位置:<span style="color:#000;">lat:' +
        currData.latitude +
        ";log:" +
        currData.longitude +
        "</span></p></div>"
      );
      //调用 infoWindow.open
      infoWindow.open(this.maps, marker);
     });
    })(marker, currData);
     })
    }
  }
 }

示例图片:

vue使用Google地图的实现示例代码

以上使用的是谷歌地图的基本内容,有兴趣的小伙伴儿可以查看谷歌官方文档,查看更多内容,使用更多功能O(∩_∩)O。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js获取提交的字符串的字节数
Feb 09 Javascript
写入cookie的JavaScript代码库 cookieLibrary.js
Oct 24 Javascript
一个简单的动态加载js和css的jquery代码
Sep 01 Javascript
node.js中的console.warn方法使用说明
Dec 09 Javascript
input输入框鼠标焦点提示信息
Mar 17 Javascript
20分钟轻松创建自己的Bootstrap站点
May 12 Javascript
基于vue实现swipe轮播组件实例代码
May 24 Javascript
vue删除html内容的标签样式实例
Sep 13 Javascript
详解angularjs跨页面传参遇到的一些问题
Nov 01 Javascript
vue.js中导出Excel表格的案例分析
Jun 11 Javascript
vue路由传参页面刷新参数丢失问题解决方案
Oct 08 Javascript
vue-next/runtime-core 源码阅读指南详解
Oct 25 Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 #Javascript
vue动态绑定class选中当前列表变色的方法示例
Dec 19 #Javascript
js指定日期增加指定月份的实现方法
Dec 19 #Javascript
动态内存分配导致影响Javascript性能的问题
Dec 18 #Javascript
关于node-bindings无法在Electron中使用的解决办法
Dec 18 #Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 #Javascript
JS监听滚动和id自动定位滚动
Dec 18 #Javascript
You might like
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
Javascript使用function创建类的两种方法(推荐)
2016/11/19 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
js实现简单的打印表格
2020/01/15 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
python中pip的安装与使用教程
2018/08/10 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
Python虚拟环境venv用法详解
2020/05/25 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
打印机墨盒:123Inkjets
2017/02/16 全球购物
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
小学生作文评语
2014/04/18 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
网络技术专业求职信
2014/07/13 职场文书
宣传稿格式范文
2015/07/23 职场文书
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers