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; } } }
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); }
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); } }
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; } }
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); } } }