Пример #1
0
        // 鼠标左键按下
        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;
            }
        }
Пример #2
0
        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 { }
        }
Пример #3
0
        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);
        }
Пример #4
0
 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;
            }
        }
Пример #6
0
 private void MapWidgetOnMotionNotifyEvent(object o, MotionNotifyEventArgs args)
 {
     if (_addressIsMoving)
     {
         _addressMarker.Position = _mapWidget.FromLocalToLatLng((int)args.Event.X, (int)args.Event.Y);
     }
 }
Пример #7
0
        // 鼠标按下事件,
        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;
            }
        }
Пример #8
0
 // 鼠标按下事件
 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);
     }
 }
Пример #9
0
        // 鼠标移动事件
        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();
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
        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);
        }
Пример #12
0
 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);
         }
     }
 }
Пример #13
0
        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);
            }
Пример #15
0
 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));
     }
 }
Пример #16
0
        /// <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);              //移除点
        }
Пример #17
0
        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)));
        }
Пример #18
0
        // 点的鼠标移动事件,如果是选中状态下,则拖动图元
        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);
        }
Пример #19
0
        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();
        }
Пример #20
0
        /// <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();
        }
Пример #21
0
        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());
        }
Пример #22
0
        /// <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);
        }
Пример #23
0
        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);
            }
        }
Пример #24
0
        /// <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;
            }
        }
Пример #25
0
        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;
        }
Пример #26
0
 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;
 }
Пример #27
0
 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));
     }
 }
Пример #28
0
 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);
     }
 }
Пример #29
0
 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);
     }
 }
Пример #30
0
 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);
 }