public void setSelectedItem(object selectedItem) { GraphicsOverlay.Graphics.Clear(); FeatureAttributes = new List <FeatureAttribute>(); if (selectedItem is FeatureResult) { List <FeatureAttribute> _featureAttributes = new List <FeatureAttribute>(); var featureResult = ((FeatureResult)selectedItem); var layer = LayerList.FirstOrDefault(_layer => _layer.Name == featureResult.layer.Name); foreach (var keyValue in featureResult.feature.Attributes) { var name = keyValue.Key; if (layer != null) { if (layer is FeatureLayer) { var field = ((FeatureLayer)layer).FeatureTable.Fields.FirstOrDefault(_field => _field.Name == keyValue.Key); if (field != null) { name = field.Alias; } } } _featureAttributes.Add(new FeatureAttribute(name, keyValue.Value?.ToString())); } var geometry = featureResult.feature.Geometry; Symbol symbol; if (geometry.GeometryType == GeometryType.Point || geometry.GeometryType == GeometryType.Multipoint) { symbol = new SimpleMarkerSymbol(); } else if (geometry.GeometryType == GeometryType.Polyline) { symbol = new SimpleLineSymbol(); } else { symbol = new SimpleFillSymbol(); } GraphicsOverlay.Graphics.Add(new Graphic(geometry, symbol)); FeatureAttributes = _featureAttributes; } }
private async void Identify(object sender, Esri.ArcGISRuntime.UI.Controls.GeoViewInputEventArgs e) { GraphicsOverlay.Graphics.Clear(); FeatureAttributes = new List <FeatureAttribute>(); if (SelectedLayer.Name == "<All>") { IdentifyLayerResults.Clear(); var results = await MapVM.MapView.IdentifyLayersAsync(e.Position, 10, false); foreach (var result in results) { if (result.LayerContent is FeatureLayer && LayerList.FirstOrDefault(layer => layer.Name == result.LayerContent.Name) != null) { IdentifyLayerResults.Add(GetLayerResult(result)); } if (result.LayerContent is GroupLayer) { foreach (var subresult in result.SublayerResults) { if (subresult.LayerContent is FeatureLayer && LayerList.FirstOrDefault(layer => layer.Name == subresult.LayerContent.Name) != null) { IdentifyLayerResults.Add(GetLayerResult(subresult)); } } } } } else { IdentifyLayerResults.Clear(); var result = await MapVM.MapView.IdentifyLayerAsync(SelectedLayer, e.Position, 10, false); IdentifyLayerResults.Add(GetLayerResult(result)); } }