private void MyDrawObject_DrawComplete(object sender, DrawEventArgs args)
        {
            ESRI.ArcGIS.Client.Geometry.MapPoint point = args.Geometry as ESRI.ArcGIS.Client.Geometry.MapPoint;
            point.SpatialReference = MyMap.SpatialReference;
            System.Windows.Point screenPnt = MyMap.MapToScreen(point);

            // Account for difference between Map and application origin
            GeneralTransform generalTransform = MyMap.TransformToVisual(Application.Current.MainWindow);

            System.Windows.Point transformScreenPnt = generalTransform.Transform(screenPnt);

            IEnumerable <Graphic> selected =
                parcelGraphicsLayer.FindGraphicsInHostCoordinates(transformScreenPnt);

            foreach (Graphic g in selected)
            {
                if (g.Selected)
                {
                    g.UnSelect(); selectedGraphics.Remove(g);
                }
                else
                {
                    g.Select(); selectedGraphics.Add(g);
                }
            }

            if (selectedGraphics.Count > 1)
            {
                UnionButton.IsEnabled = true;
            }
            else
            {
                UnionButton.IsEnabled = false;
            }
        }
        private void MyMap_MouseClick(object sender, ESRI.ArcGIS.Client.Map.MouseEventArgs e)
        {
            System.Windows.Point screenPnt = MyMap.MapToScreen(e.MapPoint);
            // Account for difference between Map and application origin
            GeneralTransform generalTransform = MyMap.TransformToVisual(Application.Current.MainWindow);

            System.Windows.Point transformScreenPnt = generalTransform.Transform(screenPnt);
            var selected = new List <Graphic>();

            selected.AddRange(RuntimeGraphicsLayer.FindGraphicsInHostCoordinates(transformScreenPnt));

            //if button was pressen on clear map point
            if (selected.Count == 0)
            {
                ClearSelection();
                CreateNewSelectionMapPoint();
                return;
            }

            // if button was pressen on item (which is on map)
            else
            {
                ClearSelection();
                foreach (Graphic g in selected)
                {
                    SelectedExistingItem           = g as GraphicMapPoint;
                    SelectedPointInfoWindow.Anchor = new MapPoint(g.Geometry.Extent.XMax, g.Geometry.Extent.YMax, g.Geometry.SpatialReference);
                    SelectedPointInfoWindow.IsOpen = true;
                    //Since a ContentTemplate is defined, Content will define the DataContext for the ContentTemplate
                    //SelectedPointInfoWindow.Content = g.Attributes;
                    return;
                }
            }
        }
Ejemplo n.º 3
0
        public static IEnumerable <Graphic> FindGraphicsInHostCoordinates(GraphicsLayer layer, Rect intersectingRect, bool includeClustered = false)
        {
            if (layer == null)
            {
                return(null);
            }

            IEnumerable <Graphic> graphics = layer.FindGraphicsInHostCoordinates(intersectingRect);

            FindGraphicsInHostCoordinates(layer, ref graphics, includeClustered);

            return(graphics);
        }
Ejemplo n.º 4
0
        private void MyDrawObject_DrawComplete(object sender, DrawEventArgs args)
        {
            MyDrawObject.IsEnabled = false;
            offsetGraphicsLayer.ClearGraphics();

            ESRI.ArcGIS.Client.Geometry.MapPoint point = args.Geometry as ESRI.ArcGIS.Client.Geometry.MapPoint;
            point.SpatialReference = MyMap.SpatialReference;
            System.Windows.Point screenPnt = MyMap.MapToScreen(point);

            // Account for difference between Map and application origin
            GeneralTransform generalTransform = MyMap.TransformToVisual(null);

            System.Windows.Point transformScreenPnt = generalTransform.Transform(screenPnt);

            IEnumerable <Graphic> selected =
                parcelGraphicsLayer.FindGraphicsInHostCoordinates(transformScreenPnt);

            List <Graphic> graphicsList = new List <Graphic>();

            foreach (Graphic g in selected)
            {
                graphicsList.Add(g);
            }

            if (graphicsList.Count < 1)
            {
                MyDrawObject.IsEnabled = true;
                return;
            }

            geometryService =
                new GeometryService("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");

            geometryService.OffsetCompleted += GeometryService_OffsetCompleted;
            geometryService.Failed          += GeometryService_Failed;

            OffsetParameters offsetParameters = new OffsetParameters()
            {
                BevelRatio     = 1.1,
                OffsetDistance = -30,
                OffsetHow      = GeometryOffset.Bevelled,
                OffsetUnit     = LinearUnit.Meter,
                Simplify       = true
            };

            geometryService.OffsetAsync(graphicsList, offsetParameters);
        }
        private void MyDrawObject_DrawComplete(object sender, DrawEventArgs args)
        {
            MyDrawObject.IsEnabled = false;

            if (MyDrawObject.DrawMode == DrawMode.Point)
            {
                ESRI.ArcGIS.Client.Geometry.MapPoint point = args.Geometry as ESRI.ArcGIS.Client.Geometry.MapPoint;
                point.SpatialReference = MyMap.SpatialReference;
                System.Windows.Point screenPnt = MyMap.MapToScreen(point);

                // Account for difference between Map and application origin
                GeneralTransform     generalTransform   = MyMap.TransformToVisual(Application.Current.RootVisual);
                System.Windows.Point transformScreenPnt = generalTransform.Transform(screenPnt);

                IEnumerable <Graphic> selected =
                    parcelGraphicsLayer.FindGraphicsInHostCoordinates(transformScreenPnt);

                if (selected.ToArray().Length <= 0)
                {
                    MyDrawObject.IsEnabled = true;
                    return;
                }

                selectedGraphic = selected.ToList()[0] as Graphic;

                selectedGraphic.Select();

                MyDrawObject.DrawMode  = DrawMode.Polyline;
                MyDrawObject.IsEnabled = true;

                InfoTextBlock.Text = LayoutRoot.Resources["EndText"] as string;
            }
            else
            {
                ESRI.ArcGIS.Client.Geometry.Polyline polyline = args.Geometry as ESRI.ArcGIS.Client.Geometry.Polyline;
                polyline.SpatialReference = MyMap.SpatialReference;

                GeometryService geometryService =
                    new GeometryService("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");

                geometryService.ReshapeCompleted += GeometryService_ReshapeCompleted;
                geometryService.Failed           += GeometryService_Failed;

                geometryService.ReshapeAsync(selectedGraphic.Geometry, polyline);
            }
        }
Ejemplo n.º 6
0
        private void MyMap_MouseClick(object sender, ESRI.ArcGIS.Client.Map.MouseEventArgs e)
        {
            System.Windows.Point screenPnt = MyMap.MapToScreen(e.MapPoint);

            // Account for difference between Map and application origin
            GeneralTransform generalTransform = MyMap.TransformToVisual(null);

            System.Windows.Point transformScreenPnt = generalTransform.Transform(screenPnt);

            int  tolerance  = 20;
            Rect screenRect = new Rect(new Point(transformScreenPnt.X - tolerance / 2, transformScreenPnt.Y - tolerance / 2),
                                       new Point(transformScreenPnt.X + tolerance / 2, transformScreenPnt.Y + tolerance / 2));
            IEnumerable <Graphic> selected =
                FindResultLocationsGraphicsLayer.FindGraphicsInHostCoordinates(screenRect);

            foreach (Graphic g in selected)
            {
                MyInfoWindow.Anchor = e.MapPoint;
                MyInfoWindow.IsOpen = true;
                //Since a ContentTemplate is defined, Content will define the DataContext for the ContentTemplate
                MyInfoWindow.Content = g.Attributes;
                return;
            }
        }
Ejemplo n.º 7
0
        private void ShowInfoWinByClickOrTouch(Point screenPnt)
        {
            GeneralTransform generalTransform   = mainMap.TransformToVisual(Application.Current.MainWindow);
            Point            transformScreenPnt = generalTransform.Transform(screenPnt);

            foreach (FeatureLayer featureLayer in PublicParams.listFLayer)
            {
                if (featureLayer != null && featureLayer.Visible == true)
                {
                    IEnumerable <Graphic> selectedFLayer = featureLayer.FindGraphicsInHostCoordinates(transformScreenPnt);
                    foreach (Graphic graphic in selectedFLayer)
                    {
                        //mainInfoWindow.Anchor = e.MapPoint;
                        mainInfoWindow.Anchor          = graphic.Geometry as MapPoint;
                        mainInfoWindow.IsOpen          = true;
                        mainInfoWindow.ContentTemplate = this.FindResource("DT" + graphic.Attributes["Class"].ToString()) as DataTemplate;
                        mainInfoWindow.Content         = graphic.Attributes;
                        MapMethods.SendOpenInfoWindow(graphic);
                        return;
                    }
                }
            }


            GraphicsLayer graphicsLayerPoliceCar = MapLayers.GetGraphicsLayerByID(PublicParams.gLayerPoliceCarGPS);

            if (graphicsLayerPoliceCar != null && graphicsLayerPoliceCar.Visible != false)
            {
                IEnumerable <Graphic> selectedGraphics = graphicsLayerPoliceCar.FindGraphicsInHostCoordinates(transformScreenPnt);
                foreach (Graphic graphic in selectedGraphics)
                {
                    mainInfoWindow.Anchor          = graphic.Geometry as MapPoint;
                    mainInfoWindow.IsOpen          = true;
                    mainInfoWindow.ContentTemplate = this.FindResource("DTPoliceCar") as DataTemplate;
                    mainInfoWindow.Content         = graphic.Attributes;
                    MapMethods.SendOpenInfoWindow(graphic);
                    return;
                }
            }

            GraphicsLayer graphicsLayerCase = MapLayers.GetGraphicsLayerByID(PublicParams.gLayerCase);

            if (graphicsLayerCase != null && graphicsLayerCase.Visible == true)
            {
                IEnumerable <Graphic> selectedGraphics = graphicsLayerCase.FindGraphicsInHostCoordinates(transformScreenPnt);
                foreach (Graphic graphic in selectedGraphics)
                {
                    //LPY 2016-4-14 添加 新案件点周围视频点自动查找和播放
                    MapLayers.ClearGLayerByID(PublicParams.gLayerSearchCamerasNearCrime);//清空图层
                    MapMethods.SendClearGraphicsLayerByID(PublicParams.gLayerSearchCamerasNearCrime);

                    ESRI.ArcGIS.Client.Geometry.Geometry geoSearch = MapMethods.GetEllipseGeometry(PublicParams.SearchRadius / (106 * 1000), graphic.Geometry as MapPoint);

                    GeoServHelper gsh = new GeoServHelper();
                    gsh.ExecuteAsyncQueryForCasePoint(geoSearch, PublicParams.urlCamerasLayer);

                    PublicParams.pubCanvasChild1.BeginStoryboard(App.Current.FindResource("StoryboardForPadCamerasOpen") as System.Windows.Media.Animation.Storyboard);
                    MapMethods.SendOpenPadVideos();//打开视频背景板

                    Graphic gSearch = new Graphic()
                    {
                        Symbol = PublicParams.symbolSearchCameras, Geometry = geoSearch
                    };
                    MapLayers.AddGraphicToGLayerByLayerID(gSearch, PublicParams.gLayerSearchCamerasNearCrime);
                    MapMethods.SendGraphicSearchCameras(gSearch);
                }
            }
        }