[cesium] | 提取时间轴和罗盘单独与地图交互

  ps:之前有需求在二维地图上使用时间轴 效果要和cesium的一样。当时就想到把这个插件直接提取出来使用

html

<div id="map" style="height: 100%;width:100%;position: relative;padding:20px;"></div>

 css:

  @import url(../Build/Cesium/Widgets/widgets.css);
        html,
        body,
        #cesiumContainer {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            overflow: hidden;
        };

js:

<script type="text/javascript" src="../Build/Cesium/Cesium.js"></script>
//用的是openlayes
var map = new ol.Map({
			layers: list,
			target: document.getElementById('map'),
			view: new ol.View({
				center: [13328108, 2920366],
				maxZoom: 15,
				zoom: 5
			})
		});	

 核心代码:

//添加时间轴div
		var viewerContainer = document.getElementsByName("viewer")[0];
		//追加仪表盘
		var animationContainer = document.createElement('div');
		animationContainer.className = 'cesium-viewer-animationContainer';
		viewerContainer.appendChild(animationContainer);
		//追加时间
		var timelineContainer = document.createElement('div');
		timelineContainer.className = 'cesium-viewer-timelineContainer';
		viewerContainer.appendChild(timelineContainer);
		//创建时间轴
		var clock,animation,timeline;
		var createTime = function(start,stop){
			try{
				clock = new Cesium.Clock({
				startTime: Cesium.JulianDate.fromIso8601(start),
				currentTime: Cesium.JulianDate.fromIso8601(stop),
				stopTime: Cesium.JulianDate.fromIso8601(stop),
				clockRange: Cesium.ClockRange.LOOP_STOP,
				clockStep: Cesium.ClockStep.SYSTEM_CLOCK_MULTIPLIER
				});
				//时间轴默认开始
				clock.shouldAnimate = true;
				//创建ViewModel
				var clockViewModel = new Cesium.ClockViewModel(clock);
				animation = new Cesium.Animation(animationContainer, new Cesium.AnimationViewModel(clockViewModel));
				timeline = new Cesium.Timeline(timelineContainer, clock);
				timeline.addEventListener('settime', onTimelineScrubfunction, false);
				timeline.zoomTo(clock.startTime, clock.stopTime);
				addEvents();
	
			}catch(e){
				console.log(e);
				alert("创建时间轴异常!");
			}
		};
		//添加事件
		var addEvents = function(){
			var eventHelper = new Cesium.EventHelper();
			eventHelper.add(clock.onTick, _onTick);
			setInterval(function () {clock.tick();}, 2000);
		}
		
		//时间轴点击移动时间
		var onTimelineScrubfunction = function (e) {
			var clock = e.clock;
			clock.currentTime = e.timeJulian;
			clock.shouldAnimate = false;
		}

        //时间转换
		var getIsoTime = function (time){
			var time2 = (new Date(Cesium.JulianDate.toDate(time))).getTime();
			var time3=Math.floor(time2/1000/60)*60;
			return time3;
		}
		
		
		//创建时间
		var oldTimes;
		var _onTick = function (clock) {
			var time = clock.currentTime;
			//地图交互
			
		};

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值