Ejemplo n.º 1
0
        private void editObject(xObject obj)
        {
            // Check if user has Edit permissions for this group of objects
            if (_Dh.getGroupAccessLevel(_Dh.getGroupById(obj.ObGroupId)).CompareTo(_Dh.AccessLevel.Edit) < 0)
            {
                _Dh.msgExclamation("У вас на достаточно привилегий");
                return;
            }

            // Show markers of polygons
            if (wObject.Polygon != null && _Dh.getGroupById(obj.ObGroupId).GroupType == ObjectType.POLYGON)
            {
                for (int i = 0; i < wObject.Polygon.Points.Count; i++)
                {
                    GMapMarker m = new GMarkerGoogle(wObject.Polygon.Points[i], GMarkerGoogleType.green_pushpin)
                    {
                        Tag = (i) + "", IsVisible = true, ToolTipMode = MarkerTooltipMode.Always
                    };
                    wObject.Polygon.Overlay.Markers.Add(m);

                    TheMap.UpdateMarkerLocalPosition(m);
                }

                TheMap.UpdatePolygonLocalPosition(wObject.Polygon);
            }

            // Show markers of route
            if (wObject.Route != null && _Dh.getGroupById(obj.ObGroupId).GroupType == ObjectType.ROUTE)
            {
                for (int i = 0; i < wObject.Route.Points.Count; i++)
                {
                    GMapMarker m = new GMarkerGoogle(wObject.Route.Points[i], GMarkerGoogleType.green_pushpin)
                    {
                        Tag = (i) + "", IsVisible = true, ToolTipMode = MarkerTooltipMode.Always
                    };
                    wObject.Route.Overlay.Markers.Add(m);

                    TheMap.UpdateMarkerLocalPosition(m);
                }

                TheMap.UpdateRouteLocalPosition(wObject.Route);
            }

            var fObjInfo = new FrmObjInfo(obj);

            fObjInfo.Show();
            if (_Dh.myAccount.IsModerator)
            {
                isEditMode = true;
            }

            //    RefreshUI();
        }
Ejemplo n.º 2
0
        private void TheMap_MouseClick(object sender, MouseEventArgs e)
        {
            /* Don't use those, 'cause no one uses!
             *  Recalculate gRecalculations = new Recalculate();
             *  var lat = gRecalculations.SK42_WGS84_Lat(point.Lat, point.Lng, 0);
             *  var lng = gRecalculations.WGS84_SK42_Long(point.Lat, point.Lng, 0);
             */

            // MessageBox.Show(GeoAngle.FromDouble(point.Lat).ToString() + "\r\n" + GeoAngle.FromDouble(point.Lng).ToString());


            if (isbtnNewObjectClicked)
            {
                if (e.Button == System.Windows.Forms.MouseButtons.Left)
                {
                    switch (currentGroup.GroupType)
                    {
                    case ObjectType.DOT:
                    {
                        cmbObGroups.Enabled = true;
                        GMarkerGoogle marker;
                        PointLatLng   point = TheMap.FromLocalToLatLng(e.X, e.Y);

                        if (currentGroup.Appendix.Length > 5)
                        {
                            Bitmap bmp;
                            using (var ms = new MemoryStream(Convert.FromBase64String(currentGroup.Appendix)))
                            {
                                bmp = new Bitmap(ms);
                            }
                            marker = new GMarkerGoogle(point, bmp);
                        }
                        else
                        {
                            marker = new GMarkerGoogle(point, GMarkerGoogleType.green);
                        }



                        TheMap.Overlays[cmbObGroups.SelectedIndex].Markers.Add(marker);
                        TheMap.UpdateMarkerLocalPosition(marker);
                        isbtnNewObjectClicked = false;

                        GeoCoderStatusCode status;
                        var fObjInfo = new FrmObjInfo(new xObject()
                            {
                                Coordinates = new List <PointLatLng>()
                                {
                                    point
                                }, ObGroupId = currentGroup.Id, C_Date = _Dh.rightNow, Placemark = GMapProviders.OpenStreet4UMap.GetPlacemark(point, out status).Value.Address
                            });


                        if (fObjInfo.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            MarkerTooltipMode mode = MarkerTooltipMode.Always;
                            marker.ToolTip     = new GMapBaloonToolTip(marker);
                            marker.ToolTipMode = mode;
                            Brush ToolTipBackColor = new SolidBrush(Color.Transparent);
                            marker.ToolTipText = wObject.Name;
                            wObject.Marker     = marker;
                        }
                        RefreshUI();
                        break;
                    }

                    case ObjectType.ROUTE:
                    {
                        somePoints.Add(TheMap.FromLocalToLatLng(e.X, e.Y));
                        _Dh.getOverlay(TheMap, currentGroup).Markers.Add(new GMarkerCross(TheMap.FromLocalToLatLng(e.X, e.Y))
                            {
                                IsVisible = true, ToolTipMode = MarkerTooltipMode.Always
                            });
                        recycleIndexes.Add(_Dh.getOverlay(TheMap, currentGroup).Markers.Count - 1);

                        break;
                    }

                    case ObjectType.POLYGON:
                    {
                        somePoints.Add(TheMap.FromLocalToLatLng(e.X, e.Y));
                        GMapOverlay ov = _Dh.getOverlay(TheMap, currentGroup);
                        ov.Markers.Add(new GMarkerCross(TheMap.FromLocalToLatLng(e.X, e.Y))
                            {
                                IsVisible = true, ToolTipMode = MarkerTooltipMode.Always
                            });
                        recycleIndexes.Add(_Dh.getOverlay(TheMap, currentGroup).Markers.Count - 1);

                        break;
                    }
                    }
                }

                if (e.Button == System.Windows.Forms.MouseButtons.Right)
                {
                    DialogResult dr = _Dh.msgQuestion("Закончить выбор точек?");
                    if (dr == DialogResult.Yes)
                    {
                        cmbObGroups.Enabled   = true;
                        isbtnNewObjectClicked = false;
                        if (currentGroup.GroupType == ObjectType.ROUTE)
                        {
                            newRoute();
                        }
                        if (currentGroup.GroupType == ObjectType.POLYGON)
                        {
                            newPolygon();
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void drawObject(xObject x)
        {
            xObGroup    obGr = _Dh.getGroupById(x.ObGroupId);
            GMapOverlay ov   = _Dh.getOverlay(TheMap, obGr);


            switch (obGr.GroupType)
            {
            case ObjectType.DOT:
                GMarkerGoogle marker = null;
                PointLatLng   point  = x.Coordinates[0];

                if (obGr.Appendix.Length > 5)
                {
                    Bitmap bmp;
                    using (var ms = new MemoryStream(Convert.FromBase64String(obGr.Appendix)))
                    {
                        bmp = new Bitmap(ms);
                    }
                    marker = new GMarkerGoogle(point, bmp);
                }
                else
                {
                    marker = new GMarkerGoogle(point, GMarkerGoogleType.green);
                }


                MarkerTooltipMode mode = MarkerTooltipMode.Always;
                marker.ToolTip     = new GMapBaloonToolTip(marker);
                marker.ToolTipMode = mode;
                Brush ToolTipBackColor = new SolidBrush(Color.Transparent);
                marker.ToolTipText = x.Name;

                x.Marker = marker;
                ov.Markers.Add(x.Marker);
                TheMap.UpdateMarkerLocalPosition(x.Marker);
                break;

            case ObjectType.ROUTE:
                GMapRoute route = new GMapRoute(x.Coordinates, x.Name);

                route.Stroke = obGr.Pen;

                route.IsHitTestVisible = true;
                x.Marker = new GMarkerGoogle(route.Points[0], new Bitmap(1, 1))
                {
                    Tag = x.Name, IsVisible = false, ToolTipMode = MarkerTooltipMode.Always, ToolTipText = x.Name
                };

                x.Route = route;
                ov.Routes.Add(x.Route);
                x.Route.Overlay.Markers.Add(x.Marker);
                break;

            case ObjectType.POLYGON:
                var polygon = new GMapPolygon(x.Coordinates, x.Name);
                polygon.Fill             = new SolidBrush(Color.FromArgb(50, obGr.Pen.Color));
                polygon.Stroke           = obGr.Pen;
                polygon.IsHitTestVisible = true;


                x.Marker = new GMarkerGoogle(polygon.Points[0], new Bitmap(1, 1))
                {
                    Tag = x.Name, IsVisible = false, ToolTipMode = MarkerTooltipMode.Always, ToolTipText = x.Name
                };


                x.Polygon = polygon;
                ov.Polygons.Add(x.Polygon);
                x.Polygon.Overlay.Markers.Add(x.Marker);
                break;
            }
        }