private async Task <List <Measurement> > ReloadSelectionAsync() { List <Measurement> result = new List <Measurement>(); bool thisMeasurement = false; if (Layer.SelectionCount >= 1) { await QueuedTask.Run(async() => { Selection selectionFeatures = Layer?.GetSelection(); using (RowCursor rowCursur = selectionFeatures?.Search()) { while (rowCursur?.MoveNext() ?? false) { Row row = rowCursur.Current; Feature feature = row as Feature; Geometry geometry = feature?.GetShape(); long objectId = feature?.GetObjectID() ?? -1; if ((geometry != null) && (objectId != -1)) { Measurement measurement = _measurementList.Get(objectId) ?? (await _measurementList.GetAsync(geometry)); thisMeasurement = true; _measurementList.DrawPoint = false; EditTools editTool = _vectorLayerList.EditTool; if ((editTool != EditTools.SketchLineTool) && (editTool != EditTools.SketchPointTool) && (editTool != EditTools.SketchPolygonTool)) { measurement = _measurementList.StartMeasurement(geometry, measurement, false, objectId, this); } _measurementList.DrawPoint = true; if (measurement != null) { await measurement.UpdateMeasurementPointsAsync(geometry); measurement.CloseMeasurement(); result.Add(measurement); } } } } }); } if (thisMeasurement && (_vectorLayerList.EditTool == EditTools.SketchPointTool)) { _vectorLayerList.SketchFinished(); await _vectorLayerList.StartSketchToolAsync(); } return(result); }
private async Task StartMeasurementSketchAsync(VectorLayer vectorLayer) { Measurement measurement = _measurementList.Sketch; MapView mapView = MapView.Active; Geometry geometry = await mapView.GetCurrentSketchAsync(); _measurementList.StartMeasurement(geometry, measurement, true, null, vectorLayer); }