private static string GetFeatureIdColumn(FeatureLayer featureLayer) { string featureIdColumn = string.Empty; LayerPlugin layerPlugin = GisEditor.LayerManager.GetLayerPlugins(featureLayer.GetType()).FirstOrDefault(); if (layerPlugin != null) { Uri uri = layerPlugin.GetUri(featureLayer); if (uri != null && GisEditor.LayerManager.FeatureIdColumnNames.ContainsKey(uri.ToString())) { featureIdColumn = GisEditor.LayerManager.FeatureIdColumnNames[uri.ToString()]; GisEditor.LayerManager.FeatureIdColumnNames.Remove(uri.ToString()); GisEditor.LayerManager.FeatureIdColumnNames[featureLayer.FeatureSource.Id] = featureIdColumn; } else if (GisEditor.LayerManager.FeatureIdColumnNames.ContainsKey(featureLayer.FeatureSource.Id)) { featureIdColumn = GisEditor.LayerManager.FeatureIdColumnNames[featureLayer.FeatureSource.Id]; } else if (GisEditor.LayerManager.FeatureIdColumnNames.Count == 0) { if (string.IsNullOrEmpty(featureIdColumn) && featureLayer.FeatureSource.IsOpen) { var apnColumn = featureLayer.FeatureSource.GetColumns().FirstOrDefault(c => { return(c.ColumnName == "APN"); }); if (apnColumn != null) { featureIdColumn = "APN"; } } } } return(featureIdColumn); }
protected virtual Collection <T> GetLayersCore <T>(GetLayersParameters getLayersParameters) where T : Layer { Collection <T> resultLayers = new Collection <T>(); LayerPlugin layerPlugin = GetLayerPlugins(typeof(T)).FirstOrDefault(); if (layerPlugin != null && layerPlugin.IsActive) { IEnumerable <T> layers = layerPlugin.GetLayers(getLayersParameters).OfType <T>(); foreach (T layer in layers) { resultLayers.Add(layer); } } return(resultLayers); }
/// <summary> /// Gets the layer list item core. /// </summary> /// <param name="layer">The layer.</param> /// <returns></returns> protected virtual LayerListItem GetLayerListItemCore(Layer layer) { LayerPlugin matchLayerPlugin = null; var matchLayerPlugins = GetLayerPlugins(layer.GetType()); if (matchLayerPlugins.Count > 1) { matchLayerPlugin = matchLayerPlugins.FirstOrDefault(p => !p.GetType().Assembly.Location.Equals(DefaultPluginPathFileName, StringComparison.OrdinalIgnoreCase)); } else { matchLayerPlugin = matchLayerPlugins.FirstOrDefault(); } if (matchLayerPlugin != null) { return(matchLayerPlugin.GetLayerListItem(layer)); } else { return(null); } }
private LayerListItem GetLayerListItemForLayer(Layer layer) { var layerListItem = GisEditor.LayerManager.GetLayerListItem(layer); if (layerListItem == null) { layerListItem = GetLayerListItemFromUIPlugins(layer); } LayerPlugin layerPlugin = GisEditor.LayerManager.GetLayerPlugins(layer.GetType()).FirstOrDefault(); if (layerPlugin != null) { bool isDataSourceAvailable = layerPlugin.DataSourceResolveTool.IsDataSourceAvailable(layer); if (!isDataSourceAvailable) { string noIndexToolTip = "This layer's data source is unavailable, please right-click to resolve it."; layerListItem.WarningImages.Add(new Image { Source = new BitmapImage(new Uri("pack://application:,,,/GisEditorInfrastructure;component/Images/NoIndexFile.png", UriKind.Absolute)), Width = 14, Height = 14, ToolTip = noIndexToolTip }); } } return(layerListItem); }
private void VisibilityChanged(bool value) { if (ConcreteObject is LayerOverlay && needRefresh) { foreach (var subEntity in Children) { subEntity.needRefresh = false; LayerPlugin layerPlugin = GisEditor.LayerManager.GetLayerPlugins(subEntity.ConcreteObject.GetType()).FirstOrDefault(); if (layerPlugin != null) { bool isDataSourceAvailable = layerPlugin.DataSourceResolveTool.IsDataSourceAvailable((Layer)subEntity.ConcreteObject); if (isDataSourceAvailable) { subEntity.IsChecked = IsChecked; ((Layer)subEntity.ConcreteObject).IsVisible = IsChecked; } } subEntity.needRefresh = true; } var tileOverlay = (TileOverlay)ConcreteObject; tileOverlay.IsVisible = isChecked; if (!isChecked) { RefreshOverlay(tileOverlay); } GisEditor.UIManager.InvokeRefreshPlugins(); } else if (ConcreteObject is Layer && needRefresh) { LayerPlugin layerPlugin = GisEditor.LayerManager.GetLayerPlugins(ConcreteObject.GetType()).FirstOrDefault(); if (layerPlugin != null) { bool isDataSourceAvailable = layerPlugin.DataSourceResolveTool.IsDataSourceAvailable((Layer)ConcreteObject); if (!isDataSourceAvailable) { ((Layer)ConcreteObject).IsVisible = false; isChecked = false; OnPropertyChanged("IsChecked"); return; } } if (!isChecked) { Image image = warningImages.FirstOrDefault(i => i.Name.Equals("InEditing", StringComparison.InvariantCultureIgnoreCase)); if (image != null) { warningImages.Remove(image); } } ((Layer)ConcreteObject).IsVisible = isChecked; Parent.needRefresh = false; Parent.IsChecked = Parent.Children.Any(m => m.IsChecked); Parent.needRefresh = true; TileOverlay tileOverlay = Parent.ConcreteObject as TileOverlay; if (tileOverlay != null) { //In this case, tileOverlay will execute Refresh() in default. if (!tileOverlay.IsVisible && Parent.IsChecked) { tileOverlay.IsVisible = Parent.IsChecked; } else { tileOverlay.IsVisible = Parent.IsChecked; tileOverlay.Invalidate(); RefreshOverlay(tileOverlay); } } GisEditor.UIManager.InvokeRefreshPlugins(); } if (!(ConcreteObject is Layer) && !(ConcreteObject is LayerOverlay)) { TryChangeIsVisiblePropertyOfMapElement(); } if (ConcreteObject is Styles.Style) { Styles.Style concreteStyle = (Styles.Style)ConcreteObject; concreteStyle.IsActive = value; Layer layer = LayerListHelper.FindMapElementInTree <Layer>(this); if (layer != null && layer.IsVisible) { LayerOverlay layerOverlay = LayerListHelper.FindMapElementInTree <LayerOverlay>(this); if (layerOverlay != null && layerOverlay.IsVisible) { layerOverlay.Invalidate(); RefreshOverlay(layerOverlay); } } } }