效果DEMO预览

一、首先,先加载地图,你可以用实际的经纬度定位、浏览器定位、根据ip定位、根据城市名定位,这个你可以自己选择

GDScript3
4 行
// 创建Map实例,设置地图允许的最小/大级别
var map = this.map;
map.centerAndZoom(new BMap.Point(121.365593, 37.528502), 15); // 初始化地图,用城市名设置地图中心点
//map.enableScrollWheelZoom(true); //启用滚轮放大缩小

centerAndZoom(center:Point, zoom:Number)

参数解释:

Point(lng:Number, lat:Number)  以指定的经度和纬度创建一个地理点坐标。
zoom:number         地图缩放级别
二、标注的使用(覆盖物)

结合百度地图api示例Demo 设置点的新图标和添加多个点示例 结合一下,就可以改写成添加多个地图标注

百度地图标注添加看懂了,接下来就是动态添加标注,并且随和日期的变化而变化,比如展示垃圾箱的动态变化,8.3号清理了颜色为绿色,8.6号没清理为红色..

思想:

动态:就要使用ajax异步获取数据
变化:就要使用定时器(setInterval或者 setTimeout)
setInterval 循环调用
setTimeout 延迟调用 1次     具体区别可以自行百度
动手写插件

以上是我自己手写的组件代码,对设计模式了解还是一般.本来是想用原型模式写,不过在setInterval时候,方法没法调用原型方法,让后我就改成了单例模式

TimeLine组件介绍

data:数据容器绑定

protect 保护属性 (对播放、暂停、时间轴index、标注index)

rubbish_datas 存储ajax读取的数据

Interval_label 百度地图标注定时器

Interval_process 时间轴定时器

Utils 工具类

init() TimeLine初始化

createMap() 创建百度地图

ajaxCreate() 获取数据,创建容器(create()),时间绑定(bindEvent())

遇到的问题:

两个定时器运行时,公共index 容易读取错误,一个定时器修改了index 另一个定时器还没修改,这样造成了创建标注与当前时间不符合,

注:要将修改公共变量尽量写在一个方法中。公共变量最好不要在多个方法中公用,容易在增减的时候出现不必要的BUG
定时器运行到最后一天的时候要将定时器清除。

程序如图:

article image