예제 #1
0
        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;
            }
        }
예제 #2
0
        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));
            }
        }