/// <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; }
/// <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; }