public void UpdateCurrentTime(double progress) { if (progress <= 0) { progress = 0.05; } else if (progress >= 100) { progress = 0.95; } //Calculate how far into the layer to jump ITimeDuration offsetToNewCurrentTime = m_myLayerTimeExtent.QueryTimeDuration(); offsetToNewCurrentTime.Scale(progress); IMxDocument pMxDoc = ArcMap.Document; IMap pMap = pMxDoc.FocusMap; IActiveView pActiveView = pMap as IActiveView; IScreenDisplay pScreenDisplay = pActiveView.ScreenDisplay; ITimeDisplay pTimeDisplay = pScreenDisplay as ITimeDisplay; ITime startTime = m_myLayerTimeExtent.StartTime; ITime endTime = (ITime)((IClone)startTime).Clone(); ((ITimeOffsetOperator)endTime).AddDuration(m_layerInterval); ITimeExtent pTimeExt = new TimeExtentClass(); pTimeExt.SetExtent(startTime, endTime); pTimeExt.Empty = false; ((ITimeOffsetOperator)pTimeExt).AddDuration(offsetToNewCurrentTime); pTimeDisplay.TimeValue = pTimeExt as ITimeValue; pActiveView.Refresh(); }
protected override void OnClick() { IMxDocument pMxDoc = ArcMap.Document; if (pMxDoc.SelectedLayer == null) { MessageBox.Show("There is no layer selected. First select a time-aware layer."); return; } IFeatureLayer pFLyr = pMxDoc.SelectedLayer as IFeatureLayer; ITimeData pTimeData = pFLyr as ITimeData; if (!pTimeData.SupportsTime) { MessageBox.Show("Select a time-aware layer first."); return; } m_myLayerTimeExtent = pTimeData.GetFullTimeExtent(); ITimeDataDisplay pTimeDataDisplayProperties = pFLyr as ITimeDataDisplay; esriTimeUnits LayerIntervalUnits = pTimeDataDisplayProperties.TimeIntervalUnits; double LayerInterval = pTimeDataDisplayProperties.TimeInterval; ITime startTime = m_myLayerTimeExtent.StartTime; ITime endTime = (ITime)((IClone)startTime).Clone(); switch (LayerIntervalUnits) { case esriTimeUnits.esriTimeUnitsYears: ((ITimeOffsetOperator)endTime).AddYears(LayerInterval, false, true); break; case esriTimeUnits.esriTimeUnitsMonths: ((ITimeOffsetOperator)endTime).AddMonths(LayerInterval, false, true); break; case esriTimeUnits.esriTimeUnitsDays: ((ITimeOffsetOperator)endTime).AddDays(LayerInterval); break; case esriTimeUnits.esriTimeUnitsHours: ((ITimeOffsetOperator)endTime).AddHours(LayerInterval); break; case esriTimeUnits.esriTimeUnitsMinutes: ((ITimeOffsetOperator)endTime).AddMinutes(LayerInterval); break; case esriTimeUnits.esriTimeUnitsSeconds: ((ITimeOffsetOperator)endTime).AddSeconds(LayerInterval); break; } ITimeExtent pTimeExt = new TimeExtentClass(); pTimeExt.SetExtent(startTime, endTime); m_layerInterval = pTimeExt.QueryTimeDuration(); m_sliderDlg = new TimeSliderDialog(this); m_sliderDlg.Show(); }
public void UpdateCurrentTime(double progress) { if (progress <= 0) progress = 0.05; else if (progress >= 100) progress = 0.95; //Calculate how far into the layer to jump ITimeDuration offsetToNewCurrentTime = m_myLayerTimeExtent.QueryTimeDuration(); offsetToNewCurrentTime.Scale(progress); IMxDocument pMxDoc = ArcMap.Document; IMap pMap = pMxDoc.FocusMap; IActiveView pActiveView = pMap as IActiveView; IScreenDisplay pScreenDisplay = pActiveView.ScreenDisplay; ITimeDisplay pTimeDisplay = pScreenDisplay as ITimeDisplay; ITime startTime = m_myLayerTimeExtent.StartTime; ITime endTime = (ITime)((IClone)startTime).Clone(); ((ITimeOffsetOperator)endTime).AddDuration(m_layerInterval); ITimeExtent pTimeExt = new TimeExtentClass(); pTimeExt.SetExtent(startTime, endTime); pTimeExt.Empty = false; ((ITimeOffsetOperator)pTimeExt).AddDuration(offsetToNewCurrentTime); pTimeDisplay.TimeValue = pTimeExt as ITimeValue; pActiveView.Refresh(); }