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();
        }
예제 #2
0
        protected override void OnClick()
        {
            IMxDocument pMxDoc           = ArcMap.Document;
            IMap        pMap             = pMxDoc.FocusMap;
            string      sampeMapFileName = "BasicHurricanes.mxd";

            if (pMap.LayerCount < 1)
            {
                MessageBox.Show("Before running this sample, load the associated file \'" + sampeMapFileName + "\'");
                return;
            }
            if (pMap.get_Layer(0).Name != "atlantic_hurricanes_2000")
            {
                MessageBox.Show("Before running this sample, load the associated file \'" + sampeMapFileName + "\'");
                return;
            }

            ITimeZoneFactory pTZFac = new TimeZoneFactoryClass();
            //making the first layer of the focused map time-aware
            IFeatureLayer pFLyr     = pMap.get_Layer(0) as IFeatureLayer;
            ITimeData     pTimeData = pFLyr as ITimeData;

            String         localTimeZoneId = pTZFac.QueryLocalTimeZoneWindowsID();
            ITimeReference timeRef         = pTZFac.CreateTimeReferenceFromWindowsID(localTimeZoneId);

            if (pTimeData.SupportsTime)
            {
                pTimeData.UseTime = true;
                ITimeTableDefinition pTimeDataDef = pFLyr as ITimeTableDefinition;
                pTimeDataDef.StartTimeFieldName = "Date_Time";

                pTimeDataDef.TimeReference = timeRef;
                ITimeDataDisplay pTimeAnimProp = pFLyr as ITimeDataDisplay;
                pTimeAnimProp.TimeIntervalUnits = esriTimeUnits.esriTimeUnitsHours;
                pTimeAnimProp.TimeInterval      = 12.0;
            }

            //
            IActiveView    pActiveView    = pMap as IActiveView;
            IScreenDisplay pScreenDisplay = pActiveView.ScreenDisplay;
            ITimeDisplay   pTimeDisplay   = pScreenDisplay as ITimeDisplay;

            pTimeDisplay.TimeReference = timeRef;

            ITime pStartTime = new TimeClass();

            pStartTime.Year = 2000; pStartTime.Month = 9; pStartTime.Day = 25;
            ITime pEndTime = new TimeClass();

            pEndTime.Year = 2000; pEndTime.Month = 9; pEndTime.Day = 30;

            ITimeExtent pTimeExt = new TimeExtentClass();

            pTimeExt.StartTime     = pStartTime;
            pTimeExt.EndTime       = pEndTime;
            pTimeDisplay.TimeValue = pTimeExt as ITimeValue;

            pActiveView.ContentsChanged();
        }
    protected override void OnClick()
    {
      IMxDocument pMxDoc = ArcMap.Document;
      IMap pMap = pMxDoc.FocusMap;
      string sampeMapFileName = "BasicHurricanes.mxd";

      if (pMap.LayerCount < 1)
      {
        MessageBox.Show("Before running this sample, load the associated file \'" + sampeMapFileName + "\'");
        return;
      }
      if (pMap.get_Layer(0).Name != "atlantic_hurricanes_2000")
      {
        MessageBox.Show("Before running this sample, load the associated file \'" + sampeMapFileName + "\'");
        return;
      }

      ITimeZoneFactory pTZFac = new TimeZoneFactoryClass();
      //making the first layer of the focused map time-aware
      IFeatureLayer pFLyr = pMap.get_Layer(0) as IFeatureLayer;
      ITimeData pTimeData = pFLyr as ITimeData;

      String localTimeZoneId = pTZFac.QueryLocalTimeZoneWindowsID();
      ITimeReference timeRef = pTZFac.CreateTimeReferenceFromWindowsID(localTimeZoneId);
      if (pTimeData.SupportsTime)
      {
        pTimeData.UseTime = true;
        ITimeTableDefinition pTimeDataDef = pFLyr as ITimeTableDefinition;
        pTimeDataDef.StartTimeFieldName = "Date_Time";

        pTimeDataDef.TimeReference = timeRef;
        ITimeDataDisplay pTimeAnimProp = pFLyr as ITimeDataDisplay;
        pTimeAnimProp.TimeIntervalUnits = esriTimeUnits.esriTimeUnitsHours;
        pTimeAnimProp.TimeInterval = 12.0;
      }

      //
      IActiveView pActiveView = pMap as IActiveView;
      IScreenDisplay pScreenDisplay = pActiveView.ScreenDisplay;
      ITimeDisplay pTimeDisplay = pScreenDisplay as ITimeDisplay;
      pTimeDisplay.TimeReference = timeRef;

      ITime pStartTime = new TimeClass();
      pStartTime.Year = 2000; pStartTime.Month = 9; pStartTime.Day = 25;
      ITime pEndTime = new TimeClass();
      pEndTime.Year = 2000; pEndTime.Month = 9; pEndTime.Day = 30;

      ITimeExtent pTimeExt = new TimeExtentClass();
      pTimeExt.StartTime = pStartTime;
      pTimeExt.EndTime = pEndTime;
      pTimeDisplay.TimeValue = pTimeExt as ITimeValue;

      pActiveView.ContentsChanged();
    }
        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();
        }
    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();

    }