123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- /**
- * @fileoverview 工具 云图动画 模块
- * @author Song.Huang
- * @version 1.0.0
- */
- define(['html!templates/tools/toolWeatherMap',
- 'css!styles/tools/toolWeatherMap'],
- function(tpcLayout){
- /**
- * 状态值
- * @type {Boolean}
- * @default false
- * @private
- */
- var status ={
- initialized:false//是否初始化
- }
- /**
- * 模块数据 用于数据存储和外部调用
- * @type {Object}
- * 数据存放
- */
- var modValue ={
- weatherMapData:[],
- currentSelected:0,
- weatherMapLayerGuid:null,
- intervalTimer:null,
- timeStep:5000
- }
- /**
- * 初始化
- * 监听事件
- * @type {Function}
- */
- function init(options){
- remove();
- // modValue.weatherMapData = [
- // {
- // datetime:'2017-08-09 12:20',
- // layerUrl:'http://mt.mmmaps.cn/v1.0/gh?z={z}&x={x}&y={y}'
- // },
- // {
- // datetime:'2017-08-09 14:20',
- // layerUrl:'http://mt.mmmaps.cn/v1.0/go?z={z}&x={x}&y={y}'
- // },
- // {
- // datetime:'2017-08-09 15:20',
- // layerUrl:'http://mt.mmmaps.cn/v1.0/gr?z={z}&x={x}&y={y}'
- // },
- // {
- // datetime:'2017-08-09 16:20',
- // layerUrl:'http://mt.mmmaps.cn/v1.0/gm?z={z}&x={x}&y={y}'
- // }
- // ]
- for(var op in options){
- modValue[op] = options[op];
- }
- if(modValue.weatherMapData.length == 0){
- ONEMAP.C.publisher.publish({ type: 'warning', message: '没有云图数据' }, 'noteBar::add');
- return false;
- }
- if(!status.initialized){
- status.initialized = true;
- setLayout();
- bindEvent();
- actionEvent();
- subscribe();
- }
- };
- function setLayout(){
- $('body').append(tpcLayout);
- //绑定数据列表
- _.each(modValue.weatherMapData, function(el,index) {
- $('<li cid="'+index+'">'+el.datetime+'</li>').appendTo('#timePlayerControl .time-list ul');
- });
-
- $('#timePlayerControl .time-list').mCustomScrollbar();
- };
- function bindEvent(){
- $('#timePlayerControl .abtn-close').bind('click',function(){
- $("#userThematicList .thematic-layer-link").removeClass('selected');
- remove();
- });
- $('#timePlayerControl .datetime-picker').bind('click',function(){
- $('#timePlayerControl .time-list').show();
- });
- $('#timePlayerControl .time-list').bind('mouseleave',function(){
- $('#timePlayerControl .time-list').hide();
- });
- $('#timePlayerControl .time-list li').bind('click',function(){
- rollPlay('stop');
- $('#timePlayerControl .datetime-picker').html($(this).html());
- $('#timePlayerControl .time-list').hide();
- modValue.currentSelected = $(this).attr('cid');
- actionEvent();
- });
- $('#timePlayerControl .player-control .prev-start').bind('click',function(){
- rollPlay('stop');
- modValue.currentSelected = 0;
- actionEvent();
- });
- $('#timePlayerControl .player-control .prev').bind('click',function(){
- if(modValue.currentSelected == 0){
- ONEMAP.C.publisher.publish({ type: 'warning', message: '已经到达第一条记录' }, 'noteBar::add');
- return false;
- }else {
- rollPlay('stop');
- modValue.currentSelected--;
- actionEvent();
- }
- });
- $('#timePlayerControl .player-control .pause').bind('click',function(){
- rollPlay('stop');
-
- });
- $('#timePlayerControl .player-control .play').bind('click',function(){
- rollPlay('start');
-
- });
- $('#timePlayerControl .player-control .next').bind('click',function(){
- if(modValue.currentSelected == (modValue.weatherMapData.length-1)){
- ONEMAP.C.publisher.publish({ type: 'warning', message: '已经到达最后一条记录' }, 'noteBar::add');
- return false;
- }else {
- rollPlay('stop');
- modValue.currentSelected++;
- actionEvent();
- }
- });
- $('#timePlayerControl .player-control .next-end').bind('click',function(){
- rollPlay('stop');
- modValue.currentSelected = modValue.weatherMapData.length-1;
- actionEvent();
- });
- };
- /**
- * 循环播放
- * @param {[type]} op [description]
- * @return {[type]} [description]
- */
- function rollPlay(op){
- if(op == 'stop'){
- clearInterval(modValue.intervalTimer);
- $('#timePlayerControl .player-control .pause').hide();
- $('#timePlayerControl .player-control .play').show();
- }
- if(op == 'start'){
- modValue.intervalTimer = setInterval(function(){
- modValue.currentSelected++;
- if(modValue.currentSelected == modValue.weatherMapData.length){
- modValue.currentSelected = 0;
- }
- actionEvent();
- },modValue.timeStep);
- actionEvent();
- $('#timePlayerControl .player-control .pause').show();
- $('#timePlayerControl .player-control .play').hide();
- }
- }
- /**
- * 播放面板触发事件
- * @return {[type]} [description]
- */
- function actionEvent(){
- //先移除后添加
- if(modValue.weatherMapLayerGuid){
- removeWeatherLayer();
- }
- var layerOp = {
- layerUrl:modValue.weatherMapData[modValue.currentSelected]['layerUrl']
- }
- $('#timePlayerControl .datetime-picker').html(modValue.weatherMapData[modValue.currentSelected]['datetime']);
- addWeatherLayer(layerOp);
- }
- /**
- * 添加云图到地图上
- */
- function addWeatherLayer(options){
- var tdTileLayerUrl = options['layerUrl'].replace('{z}/{x}/{y}', '%d/%d/%d');
- tdTileLayerUrl = options['layerUrl'].replace('z={z}&x={x}&y={y}', 'z=%d&x=%d&y=%d');
- modValue.weatherMapLayerGuid = map23DControl.tileLayer({
- action: 'add',
- layer: {
- url2D: options['layerUrl'],
- url3D: tdTileLayerUrl,
- imageType: 'png'
- }
- })
- }
- /**
- * 移除指定guid的云图
- * @return {[type]} [description]
- */
- function removeWeatherLayer(){
- map23DControl.tileLayer({
- action: 'remove',
- guid:modValue.weatherMapLayerGuid
- })
- modValue.weatherMapLayerGuid = null;
- }
- /**
- * 注册监听
- */
- function subscribe(){
- }
- /**
- * 功能移除
- */
- function remove(options){
- $('#timePlayerControl').remove();
- clearInterval(modValue.intervalTimer);
- modValue.weatherMapData = [];
- modValue.currentSelected = 0;
- removeWeatherLayer();
- modValue.weatherMapLayerGuid = null;
- status.initialized = false;
- }
- return ONEMAP.M.toolWeatherMap = {
- init:init,
- remove:remove
- }
- });
|