// 鼠标左键按下 private void gmapControl_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left && !gmapControl.CanDragMap)//空格按下后漫游 { var lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y); centerPoint.Lng = lngLat.Lng; centerPoint.Lat = lngLat.Lat; Kml kml = new Kml(); kml.Placemark.Name = "draw_circle" + Utils.ElementIndex; KmlCircle circleKml = new KmlCircle(); circleKml.FillColor = Color.FromArgb(50, Color.Blue); circleKml.Position = new MapLngLat(lngLat.Lng, lngLat.Lat); circleKml.RandomPosition = circleKml.Position; circleKml.Radius = 0; circleKml.StrokeColor = Color.Gray; circleKml.StrokeWidth = 2; kml.Placemark.Graph = circleKml; IMFElement element = null; drawn = layer.AddElement(kml, out element); circleElement = element as IMFCircle; gmapControl.MouseMove += gmapControl_MouseMove; gmapControl.MouseUp += gmapControl_MouseUp; } }
public override void OnRender(Graphics g) { base.OnRender(g); if (wprad == 0 || MainMap == null) { return; } // undo autochange in mouse over if (Pen.Color == Color.Blue) { Pen.Color = Color.White; } double width = (MainMap.MapProvider.Projection.GetDistance(MainMap.FromLocalToLatLng(0, 0), MainMap.FromLocalToLatLng(MainMap.Width, 0)) * 1000.0); double height = (MainMap.MapProvider.Projection.GetDistance(MainMap.FromLocalToLatLng(0, 0), MainMap.FromLocalToLatLng(MainMap.Height, 0)) * 1000.0); double m2pixelwidth = MainMap.Width / width; double m2pixelheight = MainMap.Height / height; GPoint loc = new GPoint((int)(LocalPosition.X - (m2pixelwidth * wprad * 2)), LocalPosition.Y);// MainMap.FromLatLngToLocal(wpradposition); try { g.DrawArc(Pen, new System.Drawing.Rectangle((int)(LocalPosition.X - Offset.X - (Math.Abs(loc.X - LocalPosition.X) / 2)), (int)(LocalPosition.Y - Offset.Y - Math.Abs(loc.X - LocalPosition.X) / 2), (int)(Math.Abs(loc.X - LocalPosition.X)), (int)(Math.Abs(loc.X - LocalPosition.X))), 0, 360); } catch { } }
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { GMapControl map = parameter as GMapControl; //double X1 = System.Convert.ToDouble(values[0]); //double Y1 = System.Convert.ToDouble(values[1]); //double X2 = System.Convert.ToDouble(values[2]); //double Y2 = System.Convert.ToDouble(values[3]); double d = (values[4] as CheckpointData).distance; //PointLatLng pos1 = map.FromLocalToLatLng((int)X1, (int)Y1); //PointLatLng pos2 = map.FromLocalToLatLng((int)X2, (int)Y2); //double R = 6378.1; //double track = Math.Atan2(Math.Cos(pos2.Lat * Math.PI / 180) * Math.Sin((pos2.Lng - pos1.Lng) * Math.PI / 180), Math.Cos(pos1.Lat * Math.PI / 180) * Math.Sin(pos2.Lat * Math.PI / 180) - Math.Sin(pos1.Lat * Math.PI / 180) * Math.Cos(pos2.Lat * Math.PI / 180) * Math.Cos((pos2.Lng - pos1.Lng) * Math.PI / 180)); //double lat2 = Math.Asin(Math.Sin(pos1.Lat * Math.PI / 180) * Math.Cos(d / R) + Math.Cos(pos1.Lat * Math.PI / 180) * Math.Sin(d / R) * Math.Cos(track)) * 180 / Math.PI; //double lng2 = pos1.Lng + Math.Atan2(Math.Sin(track) * Math.Sin(d / R) * Math.Cos(pos1.Lat * Math.PI / 180), Math.Cos(d / R) - (Math.Sin(pos1.Lat * Math.PI / 180) * Math.Sin(lat2 * Math.PI / 180))) * 180 / Math.PI; //GPoint temp = map.FromLatLngToLocal(new PointLatLng(lat2, lng2)); //Point local1 = new Point(X1, Y1); //Point local2 = new Point((int)temp.X, (int)temp.Y); //return Math.Sqrt(Math.Pow(local2.X - local1.X, 2) + Math.Pow(local2.Y - local1.Y, 2)); PointLatLng pnt1 = map.FromLocalToLatLng(0, 20); PointLatLng pnt2 = map.FromLocalToLatLng(200, 20); double dist = new MapRoute(new List <PointLatLng>() { pnt1, pnt2 }, "B").Distance; double factor = 200 / dist; return(d * factor); }
void MapWidget_MotionNotifyEvent(object o, Gtk.MotionNotifyEventArgs args) { if (addressMoving) { addressMarker.Position = MapWidget.FromLocalToLatLng((int)args.Event.X, (int)args.Event.Y); } }
void mapa_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { var p = e.GetPosition(mapa); if (dibujando) { ZonaActual.Points.Add(mapa.FromLocalToLatLng((int)p.X, (int)p.Y)); ZonaActual.RegenerateShape(mapa); if (Keyboard.Modifiers == ModifierKeys.Control) { this.dibujando = false; mapa.Markers.Remove(Linea); Linea.Clear(); Linea = null; this.TerminarDibujo(); } } else { dibujando = true; PointLatLng[] points = { mapa.FromLocalToLatLng((int)p.X, (int)p.Y) }; this.ZonaActual = CrearPoligono(points, Brushes.Red); mapa.Markers.Add(this.ZonaActual); mapa.MouseMove += mapa_MouseMove; } }
private void MapWidgetOnMotionNotifyEvent(object o, MotionNotifyEventArgs args) { if (_addressIsMoving) { _addressMarker.Position = _mapWidget.FromLocalToLatLng((int)args.Event.X, (int)args.Event.Y); } }
// 鼠标按下事件, private void gmapControl_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { bIsLeftButtonDown = true; if (bIsMultiSelect == false) { return; } PointLatLng point = gmapControl.FromLocalToLatLng(e.X, e.Y); currentPoint = new MapLngLat(point.Lng, point.Lat); pointList[0] = currentPoint; Kml polygonKml = new Kml(); polygonKml.Placemark.Name = "select_rect"; List <MapLngLat> pList = new List <MapLngLat>(); pList.Add(new MapLngLat(point.Lng, point.Lat)); pList.Add(new MapLngLat(point.Lng, point.Lat)); pList.Add(new MapLngLat(point.Lng, point.Lat)); pList.Add(new MapLngLat(point.Lng, point.Lat)); polygonKml.Placemark.Graph = new KmlPolygon() { Description = "框框", FillColor = Color.FromArgb(20, Color.Blue), OutLineColor = Color.Blue, PositionList = pList }; IMFElement element = null; bool f = layer.AddElement(polygonKml, out element); polygonElement = element as IMFPolygon; } }
// 鼠标按下事件 void gmapControl_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { isMouseDown = true; prevPoint = gmapControl.FromLocalToLatLng(e.X, e.Y); } }
// 鼠标移动事件 private void gmapControl_MouseMove(object sender, MouseEventArgs e) { if (isLeftButtonDown == false) { return; } if (bOnMarkerEnter == true) { bOnMarkerEnter = false; gmapControl.OnMarkerEnter -= gmapControl_OnMarkerEnter; } if (bOnMarkerLeave == true) { bOnMarkerLeave = false; gmapControl.OnMarkerLeave -= gmapControl_OnMarkerLeave; } if (editType == 0) { var lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y); circleMarker.Position = lngLat; gmapControl.Cursor = Cursors.SizeAll; // 实时更新圆心坐标 centerPoint = circleMarker.Position; } else if (editType == 1) { if (currentEditPoint == null || currIndex == -1) { return; } var lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y); if (currIndex == 0 || currIndex == 2) { lngLat.Lng = currentEditPoint.Position.Lng; } else if (currIndex == 1 || currIndex == 3) { lngLat.Lat = currentEditPoint.Position.Lat; } currentEditPoint.Position = lngLat; double distance = gmapControl.MapProvider.Projection.GetDistance(centerPoint, lngLat) * 1000; circleMarker.Position = centerPoint; circleElement.UpdatePosition(distance); gmapControl.UpdateMarkerLocalPosition(circleMarker); // 实时更新半径 radius = distance; } RemoveEditMarker(); AddEditMarker(); }
private void Gmap_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { double lat = gmap.FromLocalToLatLng(e.X, e.Y).Lat; double lon = gmap.FromLocalToLatLng(e.X, e.Y).Lng; SetMarker(lat, lon); } }
public void GClick(GMapControl gMapControl1, MouseEventArgs e) { //obtener info y mostrar double lat = gMapControl1.FromLocalToLatLng(e.X, e.Y).Lat; double ln = gMapControl1.FromLocalToLatLng(e.X, e.Y).Lng; //posicionar el marker marker.Position = new PointLatLng(lat, ln); //mostrar texto en tooltip marker.ToolTipText = String.Format("Ubicación: \n Latitud:{0} \n Longitud:{1}", lat, ln); }
private void MainMap_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { fIsMouseDown = true; if (fTargetMarker.IsVisible) { fTargetMarker.Position = fMapControl.FromLocalToLatLng(e.X, e.Y); } } }
void gMapControl1_MouseClick(object sender, MouseEventArgs e) { double X = gMapControl1.FromLocalToLatLng(e.X, e.Y).Lng; double Y = gMapControl1.FromLocalToLatLng(e.X, e.Y).Lat; GMapOverlay markersOverlay = new GMapOverlay(gMapControl1, "NewMarkers"); GMapMarkerGoogleGreen markerG = new GMapMarkerGoogleGreen(new GMap.NET.PointLatLng(Y, X)); markerG.ToolTip = new GMapRoundedToolTip(markerG); markerG.ToolTipText = "Новый объект"; markersOverlay.Markers.Add(markerG); gMapControl1.Overlays.Add(markersOverlay); }
private void Marker_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton != MouseButtonState.Pressed || !IsMouseCaptured) { return; } var p = e.GetPosition(_map); Marker.Position = _map.FromLocalToLatLng((int)p.X, (int)p.Y); Location = new GeoCoordinate(Marker.Position.Lat, Marker.Position.Lng); }
internal void MouseDoubleClick(MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { if (markers.Count > 1) { markers.RemoveAt(1); } double lat = gMap.FromLocalToLatLng(e.X, e.Y).Lat; double lng = gMap.FromLocalToLatLng(e.X, e.Y).Lng; AddMarkerByMouseClick(markers, new PointLatLng(lat, lng)); } }
/// <summary> /// 鼠标移动,实时绘制 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gmapControl_MouseMove(object sender, MouseEventArgs e) { if (!drawn) { return; } var lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y); var maplngLat = new MapLngLat(lngLat.Lng, lngLat.Lat); listMapPoints.Add(maplngLat); //添加点 polygonElement.UpdatePosition(listMapPoints); //更新 listMapPoints.Remove(maplngLat); //移除点 }
private RectLatLng GetBounds(PointLatLng point) { var local = _gMap.FromLatLngToLocal(point); var t = local.Y - _gridYPixels / 2; var l = local.X - _gridXPixels / 2; var b = local.Y + _gridYPixels / 2; var r = local.X + _gridXPixels / 2; var tl = _gMap.FromLocalToLatLng((int)l, (int)t); var br = _gMap.FromLocalToLatLng((int)r, (int)b); return(new RectLatLng(tl.Lat, tl.Lng, br.Lng - tl.Lng, Math.Abs(br.Lat - tl.Lat))); }
// 点的鼠标移动事件,如果是选中状态下,则拖动图元 private void gmapControl_MouseMovePoint(object sender, System.Windows.Forms.MouseEventArgs e) { //面移动 var lnglat = gmapControl.FromLocalToLatLng(e.X, e.Y); int index = polygon.Points.FindIndex(o => o == currentPoint.Position); if (index != -1) { polygon.Points[index] = lnglat; } //点移动 currentPoint.Position = lnglat; gmapControl.UpdatePolygonLocalPosition(polygon); }
public CheckpointData(GMapControl map, Line ml, Ellipse node, Point setPoint) { parentData = node.Tag as RouteData; routenum = parentData.objID; linenum = (ml.Tag as RouteData).componentID; spdunit = parentData.baseSpeedunit; PointLatLng point1 = map.FromLocalToLatLng((int)ml.X1, (int)ml.Y1); PointLatLng point2 = map.FromLocalToLatLng((int)setPoint.X, (int)setPoint.Y); distance = new MapRoute(new List <PointLatLng>() { point1, point2 }, "D").Distance; updateData(); }
/// <summary> /// 鼠标移动,实时绘制 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gmapControl_MouseMove(object sender, MouseEventArgs e) { if (isMouseDown == false) { return; } if (isFinish) { return; } var lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y); gmapRoute.Points[1] = lngLat; gmapControl.UpdateRouteLocalPosition(gmapRoute); gmapControl.Refresh(); }
private Feature[] GetMapItemsOnMouseClick(MouseEventArgs e) { var mapItems = new List <Feature>(); var polygons = _mapControl.Overlays .SelectMany(o => o.Polygons) .Where(p => p.IsVisible && p.IsHitTestVisible) .Where(p => p.IsInside(_mapControl.FromLocalToLatLng(e.X, e.Y))) .Select(p => (Feature)p.Tag); mapItems.AddRange(polygons); var routes = _mapControl.Overlays .SelectMany(o => o.Routes) .Where(r => r.IsVisible && r.IsHitTestVisible) .Where(r => { var rp = new GPoint(e.X, e.Y); rp.OffsetNegative(_mapControl.Core.renderOffset); return(r.IsInside((int)rp.X, (int)rp.Y)); }) .Select(r => (Feature)r.Tag); mapItems.AddRange(routes); return(mapItems.ToArray()); }
/// <summary> /// 屏幕坐标转地理坐标 /// </summary> /// <param name="x">屏幕X</param> /// <param name="y">屏幕Y</param> /// <returns></returns> public MapLngLat SceneToGeographyPoint(int x, int y) { PointLatLng latlng = gmapControl.FromLocalToLatLng(x, y); Core.Model.MapLngLat lnglat = new MapLngLat(latlng.Lng, latlng.Lat); return(lnglat); }
private void OnMap_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { var x = _mapControl.FromLocalToLatLng(e.X, e.Y).Lat; var y = _mapControl.FromLocalToLatLng(e.X, e.Y).Lng; _closerDepartmentOverlay.Clear(); _userPositionOverlay.Markers.Clear(); GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(x, y), GMarkerGoogleType.red); marker.ToolTip = new GMapRoundedToolTip(marker); marker.ToolTipText = "Ваше местоположение"; _userPositionOverlay.Markers.Add(marker); } }
/// <summary> /// 鼠标按下事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gmapControl_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Clicks == 2) { return; } if (e.Button == MouseButtons.Left) { if (isFinish == true) { ReleaseCommond(); return; } var lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y); var maplngLat = new MapLngLat(lngLat.Lng, lngLat.Lat); if (pointIndex == 0)//第一个点 { listMapPoints = new List <MapLngLat>(); //加线 Kml kmlLine = new Kml(); kmlLine.Placemark.Name = lineName; KmlLineString line = new KmlLineString(); line.Argb = Color.Green.ToArgb(); line.Width = 2; List <MapLngLat> pList = new List <MapLngLat>(); pList.Add(new MapLngLat(lngLat.Lng, lngLat.Lat)); line.PositionList = pList; //string.Format("{0},{1}", lngLat.Lng, lngLat.Lat); kmlLine.Placemark.Graph = line; layerCollection.GetLayer(layerName).AddElement(kmlLine); listMapPoints.Add(maplngLat); pointIndex++; } else { pointIndex++; if (!listMapPoints.Contains(maplngLat)) { listMapPoints.Add(maplngLat); } } isMouseDown = true; } }
private void gMapServicio_Click_1(object sender, EventArgs e) { markersOverlay.Clear(); GMapControl gm = (GMapControl)sender; MouseEventArgs hj = (MouseEventArgs)e; lat = gm.FromLocalToLatLng(hj.X, hj.Y).Lat; lon = gm.FromLocalToLatLng(hj.X, hj.Y).Lng; GMapMarker marker = new GMap.NET.WindowsForms.Markers.GMarkerGoogle( new GMap.NET.PointLatLng(lat, lon), GMap.NET.WindowsForms.Markers.GMarkerGoogleType.blue_pushpin); markersOverlay.Markers.Add(marker); gMapServicio.Overlays.Add(markersOverlay); btConfirmar.Enabled = true; }
public PointLatLng[] CreateBesizer(GMapControl mapControl, PointLatLng startPos, PointLatLng endPos) { Point point = new Point((int)mapControl.FromLatLngToLocal(startPos).X, (int)mapControl.FromLatLngToLocal(startPos).Y); Point point2 = new Point((int)mapControl.FromLatLngToLocal(endPos).X, (int)mapControl.FromLatLngToLocal(endPos).Y); double x = Math.Sqrt(Math.Pow((double)(point2.X - point.X), 2.0) + Math.Pow((double)(point2.Y - point.Y), 2.0)) / 4.0; int num2 = 1; if ((point2.Y - point.Y) != 0) { num2 = (point2.Y - point.Y) / Math.Abs((int)(point2.Y - point.Y)); } else if ((point2.X - point.X) != 0) { num2 = (point2.X - point.X) / Math.Abs((int)(point2.X - point.X)); } double num3 = ((double)(point.X - point2.X)) / ((double)(point2.Y - point.Y)); PointF tf = new PointF((((float)(3 * point.X)) / 4f) + (((float)point2.X) / 4f), (((float)(3 * point.Y)) / 4f) + (((float)point2.Y) / 4f)); PointF tf2 = new PointF((((float)point.X) / 4f) + (((float)(3 * point2.X)) / 4f), (((float)point.Y) / 4f) + (((float)(3 * point2.Y)) / 4f)); double num4 = tf.Y - (num3 * tf.X); double num5 = tf2.Y - (num3 * tf2.X); double num6 = Math.Pow(num3, 2.0) + 1.0; double num7 = 2.0 * (((num3 * num4) - (num3 * tf.Y)) - tf.X); double num8 = (Math.Pow((double)tf.X, 2.0) + Math.Pow(num4 - tf.Y, 2.0)) - Math.Pow(x, 2.0); double num9 = (-num7 + (num2 * Math.Sqrt(Math.Pow(num7, 2.0) - ((4.0 * num6) * num8)))) / (2.0 * num6); double num10 = (num3 * num9) + num4; double num11 = Math.Pow(num3, 2.0) + 1.0; double num12 = 2.0 * (((num3 * num5) - (num3 * tf2.Y)) - tf2.X); double num13 = (Math.Pow((double)tf2.X, 2.0) + Math.Pow(num5 - tf2.Y, 2.0)) - Math.Pow(x, 2.0); double num14 = (-num12 + (num2 * Math.Sqrt(Math.Pow(num12, 2.0) - ((4.0 * num11) * num13)))) / (2.0 * num11); double num15 = (num3 * num14) + num5; PointF tf3 = new PointF((float)num9, (float)num10); PointF tf4 = new PointF((float)num14, (float)num15); if ((point2.Y - point.Y) == 0) { tf3 = new PointF(tf.X, tf.Y + ((float)(num2 * x))); tf4 = new PointF(tf2.X, tf.Y + ((float)(num2 * x))); } List<PointLatLng> pointList = new List<PointLatLng>(); PointLatLng pll3 = mapControl.FromLocalToLatLng((int)tf3.X, (int)tf3.Y); PointLatLng pll4 = mapControl.FromLocalToLatLng((int)tf4.X, (int)tf4.Y); pointList.Add(startPos); pointList.Add(pll3); pointList.Add(pll4); pointList.Add(endPos); PointLatLng[] points = GetBezierPoints(pointList.ToArray(), 1000); return points; }
void CustomMarkerDemo_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed && IsMouseCaptured) { Point p = e.GetPosition(MainWindow); Marker.Position = MainWindow.FromLocalToLatLng((int)(p.X), (int)(p.Y)); } }
void MarkerControl_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed && IsMouseCaptured && IsDraggable) { Point p = e.GetPosition(_map); _marker.Position = _map.FromLocalToLatLng((int)p.X, (int)p.Y); } }
void ProjectMarker_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed && IsMouseCaptured) { Point p = e.GetPosition(gMap); Marker.Position = gMap.FromLocalToLatLng((int)p.X, (int)p.Y); } }
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (parameter.ToString() == "Checkpoint") { double pos = System.Convert.ToDouble(values[0]); double height = System.Convert.ToDouble(values[1]); if (pos <= 0 || pos >= height) { return(Visibility.Hidden); } else { return(Visibility.Visible); } } else if (parameter is GMapControl) { GMapControl map = parameter as GMapControl; double height = System.Convert.ToDouble(values[0]); RouteData dat = values[1] as RouteData; double pos = System.Convert.ToDouble(values[2]); double climb = dat.neffectivedst; double descend = DataConverters.LengthUnits(dat.distance, dat.baseDistunit, "KM") - dat.effectivedst; PointLatLng pnt1 = map.FromLocalToLatLng(0, 20); PointLatLng pnt2 = map.FromLocalToLatLng(200, 20); double dist = new MapRoute(new List <PointLatLng>() { pnt1, pnt2 }, "B").Distance; double factor = dist / 200; if (height * factor < climb + descend) { return(Visibility.Hidden); } else if (pos == 0) { return(Visibility.Hidden); } else { return(Visibility.Visible); } } return(Visibility.Visible); }