vue基于Vue2.0和高德地图的地图组件实例


Posted in Javascript onApril 28, 2017

前言

在做基于LBS的应用中,时常会和地图打交道,最直接的解决方案,当然是去对应的地图官网找文档,然后一步步来玩。对于简单场景而言,体验应该还好,但对于一些状态多,变化频繁的复杂场景而言,不仅要时刻维护本地数据状态和地图状态同步,还要查找设置各种状态的地图API,实在是让人头疼的事情。
设计vue-amap的初衷,也就是为了让开发者,在编写地图应用时,能从查找众多地图API和繁琐的地图状态同步中解脱出来。

那么vue-amap是如何做到的,又能给开发者带来怎样的便利与开发体验呢?我们就从一个轻点的栗子讲起。

产品经理说,咱们要搞个地图,上面给我放N个人,我要时刻知道他们的位置。

安装

npm install vue-amap --save

引入vue-amap

vue-amap的引入方式很简单,在入口文件中加入下面内容

// 引入vue-amap
import AMap from 'vue-amap';
Vue.use(AMap);

// 初始化vue-amap
AMap.initAMapApiLoader({
 // 申请的高德key
 key: 'YOUR_KEY',
 // 插件集合
 plugin: ['']
});

显示地图

在模版中加入vue-amap的地图组件

<el-amap vid="amapDemo">
</el-amap>

给地图加入N个人

在模版中加入vue-amap的地图组件

<template>
 <el-amap vid="amapDemo">
  // 添加N个人
  <el-amap-marker v-for="marker in markers" :position="marker.position">
  </el-amap-marker>
</el-amap>
</template>

<script>
export default {
 data() {
  return {
   markers: []
  };
 },
 mounted() {
  // 姑且N为2
  // 这样地图上就添加了两个人
  this.markers = [
   {
   position: [121.5273285, 31.21515044]
   }, {
   position: [121.5273286, 31.21515045]
   }
  ];
 }
};
</script>

让N个人动起来

之前我们已经将N个人放上去了,关键的时候来了,我们如何更新地图状态呢?vue-amap支持数据的单向绑定,直接更新本地数据状态即可同步地图显示状态。

<template>
 <el-amap vid="amapDemo">
  <el-amap-marker v-for="marker in markers" :position="marker.position">
  </el-amap-marker>
</el-amap>
</template>

<script>
export default {
 data() {
  return {
   markers: []
  };
 },
 mounted() {
  // 姑且N为2
  // 为地图添加两个人
  this.markers = [
   {
   position: [121.5273285, 31.21515044]
   }, {
   position: [121.5273286, 31.21515045]
   }
  ];

  // 模拟实时更新位置
  // 开启一个1s的轮训,每个人的经纬度都自增0.00001
  const step = 0.00001;
  setInterval(() => {
   this.markers.forEach((marker) => {
    marker.position = [marker.position[0] + step, marker.position[1] + step];
   });
  }, 1000);
 }
};
</script>

一个简单的基于vue-amap的地图应用就完成了,有没有觉得方便很多,我们只要维护好自己本地的数据状态即可,将具体地图的API,以及本地数据集和地图状态同步问题交给vue-amap负责就好了。

我们会持续维护这个项目,同时也希望vue-amap能给更多开发者带来开发效率的提高以及体验上的舒适。

Github:vue-amap

demo完成下载地址:vue-amap_3water.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
B/S开发中常用javaScript技术与代码
Mar 09 Javascript
javascript 简练的几个函数
Aug 29 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
Feb 11 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
Jul 04 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
Nov 03 Javascript
js加载读取内容及显示与隐藏div示例
Feb 13 Javascript
Javascript函数式编程语言
Oct 11 Javascript
JS获取随机数和时间转换的简单实例
Jul 10 Javascript
form+iframe解决跨域上传文件的方法
Nov 18 Javascript
解决layui laydate 时间控件一闪而过的问题
Sep 28 Javascript
功能完善的小程序日历组件的实现
Mar 31 Javascript
Vue的全局过滤器和私有过滤器的实现
Apr 20 Javascript
d3.js实现立体柱图的方法详解
Apr 28 #Javascript
JS基于正则表达式的替换操作(replace)用法示例
Apr 28 #Javascript
vue调用高德地图实例代码
Apr 28 #Javascript
vue省市区三联动下拉选择组件的实现
Apr 28 #Javascript
AngulaJS路由 ui-router 传参实例
Apr 28 #Javascript
Angular.Js之Scope作用域的学习教程
Apr 27 #Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
Apr 27 #Javascript
You might like
推荐文章系统(一)
2006/10/09 PHP
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
Django的session中对于用户验证的支持
2015/07/23 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
小学生演讲稿
2014/01/12 职场文书
关于爱情的广播稿
2014/01/16 职场文书
婚庆公司计划书
2014/09/15 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
田径运动会通讯稿
2015/07/18 职场文书
2016年端午节寄语
2015/12/04 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python
python基础入门之普通操作与函数(三)
2021/06/13 Python