/// <summary>
    /// Occurs when this command is clicked
    /// </summary>
    public override void OnClick()
    {
      m_dynamicMap = m_hookHelper.FocusMap as IDynamicMap;
      if (m_dynamicMap == null)
        return;

      if (!m_dynamicMap.DynamicMapEnabled)
      {
        MessageBox.Show("Please enable dynamic mode and try again.");
        return;
      }

      if (!m_bConnected)
      {
        m_xmlPath = GetPlaybackXmlPath();
        if (m_xmlPath == string.Empty)
          return;

        m_bikePositionInfo = new BikePositionInfo();
        m_bikePositionInfo.positionCount = m_bikePositionCount;
        m_bikePositionInfo.altitudeMeters = 0;
        m_bikePositionInfo.time = DateTime.Now;
        m_bikePositionInfo.position.X = 0;
        m_bikePositionInfo.position.Y = 0;
        m_bikePositionInfo.heartRate = 0;
        m_bikePositionInfo.lapCount = 0;
        m_bikePositionInfo.lapAverageHeartRate = 0;
        m_bikePositionInfo.lapMaximumHeartRate = 0;
        m_bikePositionInfo.lapDistanceMeters = 0;
        m_bikePositionInfo.lapMaximumSpeed = 0;
        m_bikePositionInfo.lapCalories = 0;

        m_gpsPosition = new PointClass();
        m_additionalInfoPoint = new PointClass();
        m_additionalInfoPoint.PutCoords(70, 90);
        m_bikeRouteGeometry = new PolylineClass();

        // wire dynamic map events
        ((IDynamicMapEvents_Event)m_dynamicMap).AfterDynamicDraw += new IDynamicMapEvents_AfterDynamicDrawEventHandler(OnAfterDynamicDraw);
        ((IDynamicMapEvents_Event)m_dynamicMap).DynamicMapStarted += new IDynamicMapEvents_DynamicMapStartedEventHandler(OnDynamicMapStarted);

        // spin the thread that plays the data from the xml file
        m_dataLoaderThread = new Thread(new ParameterizedThreadStart(XmlReaderTask));

        XmlDocTaksData taskData;
        taskData.xmlDocPath = m_xmlPath;
        m_dataLoaderThread.Start(taskData);
      }
      else
      {
        // unwire wire dynamic map events
        ((IDynamicMapEvents_Event)m_dynamicMap).AfterDynamicDraw -= new IDynamicMapEvents_AfterDynamicDrawEventHandler(OnAfterDynamicDraw);
        ((IDynamicMapEvents_Event)m_dynamicMap).DynamicMapStarted -= new IDynamicMapEvents_DynamicMapStartedEventHandler(OnDynamicMapStarted);

        // force the bike xml playback thread to quite
        m_autoEvent.Set();
        m_dataLoaderThread.Join();

        System.Diagnostics.Trace.WriteLine("Done!!!");
      }

      m_bConnected = !m_bConnected;
    }
Example #2
0
        /// <summary>
        /// Occurs when this command is clicked
        /// </summary>
        public override void OnClick()
        {
            m_dynamicMap = m_hookHelper.FocusMap as IDynamicMap;
            if (m_dynamicMap == null)
            {
                return;
            }

            if (!m_dynamicMap.DynamicMapEnabled)
            {
                MessageBox.Show("Please enable dynamic mode and try again.");
                return;
            }

            if (!m_bConnected)
            {
                m_xmlPath = GetPlaybackXmlPath();
                if (m_xmlPath == string.Empty)
                {
                    return;
                }

                m_bikePositionInfo = new BikePositionInfo();
                m_bikePositionInfo.positionCount       = m_bikePositionCount;
                m_bikePositionInfo.altitudeMeters      = 0;
                m_bikePositionInfo.time                = DateTime.Now;
                m_bikePositionInfo.position.X          = 0;
                m_bikePositionInfo.position.Y          = 0;
                m_bikePositionInfo.heartRate           = 0;
                m_bikePositionInfo.lapCount            = 0;
                m_bikePositionInfo.lapAverageHeartRate = 0;
                m_bikePositionInfo.lapMaximumHeartRate = 0;
                m_bikePositionInfo.lapDistanceMeters   = 0;
                m_bikePositionInfo.lapMaximumSpeed     = 0;
                m_bikePositionInfo.lapCalories         = 0;

                m_gpsPosition         = new PointClass();
                m_additionalInfoPoint = new PointClass();
                m_additionalInfoPoint.PutCoords(70, 90);
                m_bikeRouteGeometry = new PolylineClass();

                // wire dynamic map events
                ((IDynamicMapEvents_Event)m_dynamicMap).AfterDynamicDraw  += new IDynamicMapEvents_AfterDynamicDrawEventHandler(OnAfterDynamicDraw);
                ((IDynamicMapEvents_Event)m_dynamicMap).DynamicMapStarted += new IDynamicMapEvents_DynamicMapStartedEventHandler(OnDynamicMapStarted);

                // spin the thread that plays the data from the xml file
                m_dataLoaderThread = new Thread(new ParameterizedThreadStart(XmlReaderTask));

                XmlDocTaksData taskData;
                taskData.xmlDocPath = m_xmlPath;
                m_dataLoaderThread.Start(taskData);
            }
            else
            {
                // unwire wire dynamic map events
                ((IDynamicMapEvents_Event)m_dynamicMap).AfterDynamicDraw  -= new IDynamicMapEvents_AfterDynamicDrawEventHandler(OnAfterDynamicDraw);
                ((IDynamicMapEvents_Event)m_dynamicMap).DynamicMapStarted -= new IDynamicMapEvents_DynamicMapStartedEventHandler(OnDynamicMapStarted);

                // force the bike xml playback thread to quite
                m_autoEvent.Set();
                m_dataLoaderThread.Join();

                System.Diagnostics.Trace.WriteLine("Done!!!");
            }

            m_bConnected = !m_bConnected;
        }