public IGPSBounds RelevantArea() { IGPSBounds area = null; if (m_TrailRoutes.Count > 0) { area = TrailMapPolyline.getGPSBounds(m_TrailRoutes); } if (m_TrailPoints.Count > 0) { //Normal trails all have the same radius, should not be much difference anyway float highlightRadius = m_TrailPoints[0].Radius; IGPSBounds area2 = TrailGPSLocation.getGPSBounds(m_TrailPoints, 2 * highlightRadius); area = this.Union(area, area2); } if (m_SplitPoints.Count > 0) { IGPSBounds area2 = SplitGPSLocation.getGPSBounds(m_SplitPoints); area = this.Union(area, area2); } if (m_MarkedTrailRoutes.Count > 0 || m_MarkedTrailRoutesNoShow.Count > 0) { IGPSBounds area2 = Union(TrailMapPolyline.getGPSBounds(m_MarkedTrailRoutes), TrailMapPolyline.getGPSBounds(m_MarkedTrailRoutesNoShow)); area = this.Union(area, area2); } return(area); }
private void ValidateEdit() { IList <EditTrailRow> t = (IList <EditTrailRow>) this.EList.RowData; if (this.EList.Columns[this.m_subItemSelected].Id == EditTrailColumnIds.Distance) { try { double dist = UnitUtil.Distance.Parse(editBox.Text); DateTime d1 = this.m_trailResult.GetDateTimeFromDistActivity((float)dist); t[this.m_rowDoubleClickSelected].UpdateRow(this.m_trailResult, d1); } catch { } } else if (this.EList.Columns[this.m_subItemSelected].Id == EditTrailColumnIds.Time) { try { double time = UnitUtil.Time.Parse(editBox.Text); DateTime d1 = this.m_trailResult.GetDateTimeFromTimeActivity((float)time); t[this.m_rowDoubleClickSelected].UpdateRow(m_trailResult, d1); } catch { } } else { //TrailGPS fields if (this.EList.Columns[this.m_subItemSelected].Id == EditTrailColumnIds.LatitudeDegrees) { float pos = TrailGPSLocation.ParseLatLon(editBox.Text); t[this.m_rowDoubleClickSelected].TrailGPS.SetLatitude(pos); } else if (this.EList.Columns[this.m_subItemSelected].Id == EditTrailColumnIds.LongitudeDegrees) { float pos = TrailGPSLocation.ParseLatLon(editBox.Text); t[this.m_rowDoubleClickSelected].TrailGPS.SetLongitude(pos); } else if (this.EList.Columns[this.m_subItemSelected].Id == EditTrailColumnIds.Name) { t[this.m_rowDoubleClickSelected].TrailGPS.Name = editBox.Text; } else if (this.EList.Columns[this.m_subItemSelected].Id == EditTrailColumnIds.ElevationMeters) { //Allow NaN float pos = (float)GpsRunningPlugin.Util.UnitUtil.Elevation.Parse(editBox.Text); t[this.m_rowDoubleClickSelected].TrailGPS.SetElevation(pos); } //Note: result need to be recalculated to be accurate. However, the recalc could find other results, //let the user request recalc manually t[this.m_rowDoubleClickSelected].UpdateRow(this.m_trailResult, t[this.m_rowDoubleClickSelected].TrailGPS); } this.EList.RowData = t; this.m_layer.TrailPoints = this.m_TrailToEdit.TrailLocations; this.m_layer.SelectedTrailPoints = new List <TrailGPSLocation> { t[this.m_rowDoubleClickSelected].TrailGPS }; this.m_layer.Refresh(); }
public void UpdatePointFromMap(TrailGPSLocation point) { IList <EditTrailRow> list = (IList <EditTrailRow>) this.EList.RowData; for (int i = 0; i < list.Count; i++) { if (point == list[i].TrailGPS) { this.m_updatingFromMap = true; this.EList.SelectedItems = new object[] { list[i] }; this.m_updatingFromMap = false; this.EList.RefreshElements(this.EList.SelectedItems); break; } } }
public PointMapMarker(TrailGPSLocation location, MapIcon icon, bool clickable) : base(location, icon, clickable) { }
private void EList_AddRow() { int i = EList_SelectedRow(); if (i < 0) { if (((IList <EditTrailRow>) this.EList.RowData).Count > 0) { i = ((IList <EditTrailRow>) this.EList.RowData).Count - 1; } else { i = 0; } } TrailGPSLocation sel; if (((IList <EditTrailRow>) this.EList.RowData).Count > 0) { sel = new TrailGPSLocation(((IList <EditTrailRow>) this.EList.RowData)[i].TrailGPS); sel.GpsLoc = new GPSLocation(sel.LatitudeDegrees + 0.0001F, sel.LongitudeDegrees + 0.0001F); } else { IGPSLocation l = m_layer.GetCenterMap(); sel = new TrailGPSLocation(l, this.m_TrailToEdit.Radius); } sel.Name += " " + ZoneFiveSoftware.Common.Visuals.CommonResources.Text.ActionNew; //If a point is selected on the track, use it instead IList <IActivity> activities = new List <IActivity> { Controller.TrailController.Instance.ReferenceActivity }; IList <IItemTrackSelectionInfo> selectedGPS = TrailsItemTrackSelectionInfo.SetAndAdjustFromSelectionFromST(m_view.RouteSelectionProvider.SelectedItems, activities); if (TrailsItemTrackSelectionInfo.ContainsData(selectedGPS)) { IList <TrailGPSLocation> loc = TrailSelectorControl.GetGPS(this.Trail, activities, selectedGPS); if (loc.Count > 0 && loc[0] != null) { sel.GpsLoc = loc[0]; } } EditTrailRow newRow = new EditTrailRow(sel); if (((IList <EditTrailRow>) this.EList.RowData).Count > 0) { ((IList <EditTrailRow>) this.EList.RowData).Insert(i + 1, newRow); } else { this.EList.RowData = new List <EditTrailRow> { newRow }; } //Make ST see the update this.EList.RowData = ((IList <EditTrailRow>) this.EList.RowData); foreach (EditTrailRow t in (IList <EditTrailRow>) this.EList.RowData) { //Note: For reverse results, this is incorrect (but reverse results are only for incomplete, so no impact) this.EList.SetChecked(t, t.TrailGPS.Required); } this.EList.SelectedItems = new object[] { newRow }; this.EList.Refresh(); this.m_TrailToEdit.TrailLocations = EditTrailRow.getTrailGPSLocation((IList <EditTrailRow>) this.EList.RowData); this.m_layer.TrailPoints = m_TrailToEdit.TrailLocations; this.m_layer.SelectedTrailPoints = new List <TrailGPSLocation> { sel }; this.m_layer.Refresh(); }