做的功能比较简单,实现了ArcGIS中时间滑块功能,数据使用的是自带的数据,我把它放在程序的根目录下了,可自行加载。
下面是主界面:可以看到这里有两个方法,说是两种方法,其实是第一种方法比较复杂,调试的不是很成功(手动尴尬),用这个数据的会报错 ,大家有需要的话可以自己调试下;第二种方法就是简化了第一种方法,虽然比较简单,但是麻雀虽小,五脏俱全,功能实现了。
时间滑块界面:贼简单,达到目的就罢工,,哈哈。
效果图
主要用到了一下两个函数:
private void DoReplay(IFeatureLayer pFLyr)
{
try
{
ITimeZoneFactory pTimeZoneFactory = new TimeZoneFactoryClass();
ITimeData pTimeData = pFLyr as ITimeData;
pTimeData.UseTime = true;
String slocalTimeZoneWId = pTimeZoneFactory.QueryLocalTimeZoneWindowsID();
ITimeReference pTimeReference = pTimeZoneFactory.CreateTimeReferenceFromWindowsID(slocalTimeZoneWId);
if (!pTimeData.SupportsTime) return;
pTimeData.UseTime = true;
ITimeTableDefinition pTimeDataDef = pFLyr as ITimeTableDefinition;
pTimeDataDef.StartTimeFieldName = "Date_Time";//设置时间属性为Date_time
pTimeDataDef.TimeReference = pTimeReference;
//获取图层时态数据时间
pLayerTimeExtent = pTimeData.GetFullTimeExtent();
//激活timer控件
timer1.Enabled = true;
pCount = 0;
}
catch (Exception Err)
{
string msg = Err.Message;
}
}
private void Display(int count)
{
//IMap pMap = axMapControl1.Map;
IActiveView pActiveView = pMap as IActiveView;
IScreenDisplay pScreenDisplay = pActiveView.ScreenDisplay;
ITimeDisplay pTimeDisplay = pScreenDisplay as ITimeDisplay;
ITime startTime = pLayerTimeExtent.StartTime;
ITime endTime = (ITime)((IClone)startTime).Clone();
//每次递进24小时
((ITimeOffsetOperator)startTime).AddHours(24 * (count - 1));
((ITimeOffsetOperator)endTime).AddHours(24 * count);
ITimeExtent pTimeExt = new TimeExtentClass();
pTimeExt.SetExtent(startTime, endTime);
pTimeExt.Empty = false;
pTimeDisplay.TimeValue = pTimeExt as ITimeValue;
pActiveView.Refresh();
}
##代码下载