// Accept user click point and select the underlying target polygon private async Task SelectTargetGeometryAsync() { txtInstruct.Text = "Click to select a target geometry"; _coordinateOverlay.Graphics.Clear(); _targetOverlay.Graphics.Clear(); Graphic graphic = null; while (graphic == null) { var point = await MyMapView.Editor.RequestPointAsync(); graphic = await _graphicsOverlay.HitTestAsync(MyMapView, MyMapView.LocationToScreen(point)); if (graphic == null) { continue; } _targetOverlay.Graphics.Add(graphic); var poly = graphic.Geometry as Polygon; foreach (var coord in poly.Parts.First().GetPoints()) { _targetOverlay.Graphics.Add(new Graphic(coord, _vertexSymbol)); } } }
private async Task SelectParcelForOffsetAsync() { ResetButton.IsEnabled = false; try { _offsetOverlay.Graphics.Clear(); var pointGeom = await MyMapView.Editor.RequestPointAsync(); var screenPnt = MyMapView.LocationToScreen(pointGeom); _selectedParcelGraphic = await _parcelOverlay.HitTestAsync(MyMapView, screenPnt); DoOffset(); } catch (TaskCanceledException) { } catch (Exception ex) { var _x = new MessageDialog(ex.Message).ShowAsync(); } ResetButton.IsEnabled = true; }
// Hittest the graphics layer and show the map tip for the selected graphic private async void MyMapView_MapViewTapped(object sender, MapViewInputEventArgs e) { try { _graphicsOverlay.ClearSelection(); var graphic = await _graphicsOverlay.HitTestAsync(MyMapView, e.Position); if (graphic != null) { graphic.IsSelected = true; MapView.SetViewOverlayAnchor(_mapTip, e.Location); _mapTip.DataContext = graphic; _mapTip.Visibility = Visibility.Visible; } else { _mapTip.Visibility = Visibility.Collapsed; } } catch { _mapTip.Visibility = Visibility.Collapsed; } }
private async Task SelectParcelForOffsetAsync() { try { ResetButton.IsEnabled = false; _offsetOverlay.Graphics.Clear(); var pointGeom = await MyMapView.Editor.RequestPointAsync(); var screenPnt = MyMapView.LocationToScreen(pointGeom); _selectedParcelGraphic = await _parcelOverlay.HitTestAsync(MyMapView, screenPnt); DoOffset(); } catch (TaskCanceledException) { } catch (Exception ex) { MessageBox.Show(ex.Message, "Sample Error"); } finally { ResetButton.IsEnabled = true; } }
private async void mapView1_MapViewTapped(object sender, Esri.ArcGISRuntime.Controls.MapViewInputEventArgs e) { Graphic hitGraphic = await _addressOverlay.HitTestAsync(MyMapView, e.Position); if (hitGraphic != null) { if (maptip.Visibility == Windows.UI.Xaml.Visibility.Collapsed) { MapTipGraphic = hitGraphic; RenderMapTip(); } else { maptip.Visibility = Windows.UI.Xaml.Visibility.Collapsed; maptip.DataContext = null; MapTipGraphic = null; } } }
private async void MouseRightButtonUp(object parameter) { Point curPoint = Mouse.GetPosition(tagView as FrameworkElement); MapPoint tagPoint = tagView.ScreenToLocation(curPoint); _graphicsOverlay = tagView.GraphicsOverlays["drawGraphicsOverlay"]; var ga = await _graphicsOverlay.HitTestAsync(tagView, curPoint); if (ga != null) { if (ga.Geometry.GeometryType == GeometryType.Point) { drawPointGraphic = ga; drawpointX = (drawPointGraphic.Geometry as MapPoint).X; drawpointY = (drawPointGraphic.Geometry as MapPoint).Y; drawpointZ = (drawPointGraphic.Geometry as MapPoint).Z; if (pointwinshowing == false) { pointWin = new PointToolWin(); pointwinshowing = true; pointWin.ShowDialog(); } } if (ga.Geometry.GeometryType == GeometryType.Polyline) { drawLineGraphic = ga; linegraphictext = drawLineGraphic.Attributes["Label"] as string; linewidth = (drawLineGraphic.Symbol as SimpleLineSymbol).Width; Esri.ArcGISRuntime.Geometry.PointCollection tagcol = new Esri.ArcGISRuntime.Geometry.PointCollection(); foreach (var part in (drawLineGraphic.Geometry as Polyline).Parts) { for (int i = 0; i < part.Count; i++) { var linepart = part.ElementAt(i); tagcol.Add(linepart.StartPoint); if (i == (part.Count - 1)) { tagcol.Add(linepart.EndPoint); } drawLineZ = linepart.StartPoint.Z; } } Linepointcollec = tagcol; if (linewinshowing == false) { LineWin = new LineToolWin(); linewinshowing = true; LineWin.ShowDialog(); } } if (ga.Geometry.GeometryType == GeometryType.Polygon) { drawPolygonGraphic = ga; polygongraphictext = drawPolygonGraphic.Attributes["Label"] as string; Esri.ArcGISRuntime.Geometry.PointCollection tagcol = new Esri.ArcGISRuntime.Geometry.PointCollection(); foreach (var part in (drawPolygonGraphic.Geometry as Polygon).Parts) { for (int i = 0; i < part.Count; i++) { var Polygonpart = part.ElementAt(i); tagcol.Add(Polygonpart.StartPoint); if (i == (part.Count - 1)) { tagcol.Add(Polygonpart.EndPoint); } drawPolygonZ = Polygonpart.StartPoint.Z; } } Polygonpointcollec = tagcol; if (Polygonwinshowing == false) { PolygonWin = new PolygonToolWin(); Polygonwinshowing = true; PolygonWin.ShowDialog(); } } } }
private async void MouseRightButtonUp(object parameter) { Point curPoint = Mouse.GetPosition(tagView as FrameworkElement); MapPoint tagPoint = tagView.ScreenToLocation(curPoint); _graphicsOverlay = tagView.GraphicsOverlays["drawGraphicsOverlay"]; var ga = await _graphicsOverlay.HitTestAsync(tagView, curPoint); if (ga != null) { if(ga.Geometry.GeometryType==GeometryType.Point) { drawPointGraphic = ga; drawpointX = (drawPointGraphic.Geometry as MapPoint).X; drawpointY = (drawPointGraphic.Geometry as MapPoint).Y; drawpointZ = (drawPointGraphic.Geometry as MapPoint).Z; if(pointwinshowing==false) { pointWin = new PointToolWin(); pointwinshowing = true; pointWin.ShowDialog(); } } if (ga.Geometry.GeometryType == GeometryType.Polyline) { drawLineGraphic = ga; linegraphictext = drawLineGraphic.Attributes["Label"] as string; linewidth = (drawLineGraphic.Symbol as SimpleLineSymbol).Width; Esri.ArcGISRuntime.Geometry.PointCollection tagcol = new Esri.ArcGISRuntime.Geometry.PointCollection(); foreach (var part in (drawLineGraphic.Geometry as Polyline).Parts) { for(int i=0;i<part.Count;i++) { var linepart = part.ElementAt(i); tagcol.Add(linepart.StartPoint); if(i==(part.Count-1)) tagcol.Add(linepart.EndPoint); drawLineZ = linepart.StartPoint.Z; } } Linepointcollec = tagcol; if(linewinshowing==false) { LineWin = new LineToolWin(); linewinshowing = true; LineWin.ShowDialog(); } } if (ga.Geometry.GeometryType == GeometryType.Polygon) { drawPolygonGraphic = ga; polygongraphictext = drawPolygonGraphic.Attributes["Label"] as string; Esri.ArcGISRuntime.Geometry.PointCollection tagcol = new Esri.ArcGISRuntime.Geometry.PointCollection(); foreach (var part in (drawPolygonGraphic.Geometry as Polygon).Parts) { for (int i = 0; i < part.Count; i++) { var Polygonpart = part.ElementAt(i); tagcol.Add(Polygonpart.StartPoint); if (i == (part.Count - 1)) tagcol.Add(Polygonpart.EndPoint); drawPolygonZ = Polygonpart.StartPoint.Z; } } Polygonpointcollec = tagcol; if(Polygonwinshowing==false) { PolygonWin = new PolygonToolWin(); Polygonwinshowing = true; PolygonWin.ShowDialog(); } } } }
private async void mapView1_MapViewTapped(object sender, Esri.ArcGISRuntime.Controls.MapViewInputEventArgs e) { if (MyMapView.Editor.IsActive || _layer == null) { return; } _layer.ClearSelection(); Graphic hitGraphic = await _stopsOverlay.HitTestAsync(MyMapView, e.Position); var features = await _layer.HitTestAsync(MyMapView, e.Position); if (hitGraphic != null) { FlyoutBase.ShowAttachedFlyout((FrameworkElement)sender); return; } if (features != null) { string message = null; MyMapView.Overlays.Items.Clear(); try { if (!features.Any()) { return; } var featureID = features.FirstOrDefault(); _layer.SelectFeatures(new long[] { featureID }); var feature = (GeodatabaseFeature)await _layer.FeatureTable.QueryAsync(featureID); message = _layer.DisplayName; for (int i = 0; i < feature.Attributes.Values.Count(); i++) { if (feature.Attributes.Keys.ToArray()[i].ToString() != "OBJECTID") { message += "\n" + feature.Attributes.Keys.ToArray()[i] + ": " + feature.Attributes.Values.ToArray()[i]; } } } catch (Exception ex) { message = ex.Message; } if (!string.IsNullOrWhiteSpace(message)) { var result = message; var overlay = new ContentControl() { HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Top }; overlay.Template = LayoutRoot.Resources["PopUpTipTemplate"] as ControlTemplate; overlay.DataContext = result; MapView.SetViewOverlayAnchor(overlay, e.Location); MyMapView.Overlays.Items.Add(overlay); } } }