コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: EditTrail.cs プロジェクト: tsofron/trails
        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();
        }
コード例 #3
0
ファイル: EditTrail.cs プロジェクト: tsofron/trails
        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;
                }
            }
        }
コード例 #4
0
 public PointMapMarker(TrailGPSLocation location, MapIcon icon, bool clickable)
     : base(location, icon, clickable)
 {
 }
コード例 #5
0
ファイル: EditTrail.cs プロジェクト: tsofron/trails
        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();
        }