private void GoToSample(int SampleID, bool movemap, bool movegraph, bool movegrid) { bool zoomgraph = false; m_currSampleID = SampleID; markeroverlay.Markers.Clear(); PointLatLng pt1; if (GetGPSFromRow(SampleID, out pt1)) { MissionPlanner.Utilities.PointLatLngAlt pt3 = new MissionPlanner.Utilities.PointLatLngAlt(pt1); GMapMarker pos3 = new GMarkerGoogle(pt3, GMarkerGoogleType.pink_dot); markeroverlay.Markers.Add(pos3); } if (movemap) { myGMAP1.Position = pt1; } //move the graph "cursor" if (m_cursorLine != null) { zg1.GraphPane.GraphObjList.Remove(m_cursorLine); } m_cursorLine = new LineObj(Color.Black, SampleID, 0, SampleID, 1); m_cursorLine.Location.CoordinateFrame = CoordType.XScaleYChartFraction; // This do the trick ! m_cursorLine.IsClippedToChartRect = true; m_cursorLine.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; m_cursorLine.Line.Width = 2f; m_cursorLine.Line.Color = Color.LightGray; m_cursorLine.ZOrder = ZOrder.E_BehindCurves; zg1.GraphPane.GraphObjList.Add(m_cursorLine); if (movegraph) { double delta = zg1.GraphPane.XAxis.Scale.Max - zg1.GraphPane.XAxis.Scale.Min; if (zoomgraph) { delta = 2 * 60.0 / 20; delta = Math.Max(100, delta); } zg1.GraphPane.XAxis.Scale.Min = SampleID - delta / 2; zg1.GraphPane.XAxis.Scale.Max = SampleID + delta / 2; zg1.AxisChange(); } zg1.Invalidate(); if (movegrid) { try { scrollGrid(dataGridView1, SampleID); dataGridView1.CurrentCell = dataGridView1.Rows[SampleID].Cells[1]; dataGridView1.ClearSelection(); dataGridView1.Rows[(int)SampleID].Selected = true; dataGridView1.Rows[(int)SampleID].Cells[1].Selected = true; } catch { } } }
private void myGMAP1_OnRouteClick(GMapRoute item, MouseEventArgs e) { if ((item.Name != null) && (item.Name.StartsWith("route_"))) { LogRouteInfo lri = item.Tag as LogRouteInfo; if (lri != null) { //cerco il punto più vicino MissionPlanner.Utilities.PointLatLngAlt pt2 = new MissionPlanner.Utilities.PointLatLngAlt(myGMAP1.FromLocalToLatLng(e.X, e.Y)); double dBest = double.MaxValue; int nBest = 0; for (int i = 0; i < item.LocalPoints.Count; i++) { PointLatLng pt = item.Points[i]; double d = Math.Sqrt((pt.Lat - pt2.Lat) * (pt.Lat - pt2.Lat) + (pt.Lng - pt2.Lng) * (pt.Lng - pt2.Lng)); if (d < dBest) { dBest = d; nBest = i; } } double perc = (double)nBest / (double) item.LocalPoints.Count; int SampleID = (int)(lri.firstpoint + (lri.lastpoint - lri.firstpoint) * perc); if ((lri.samples.Count > 0) && (nBest < lri.samples.Count)) SampleID = lri.samples[nBest]; GoToSample(SampleID, false, true, true); //debugging route click //GMapMarker pos2 = new GMarkerGoogle(pt2, GMarkerGoogleType.orange_dot); //markeroverlay.Markers.Add(pos2); } } }