private void UpdateItems(GisEditorWpfMap map)
        {
            LegendImporterItems.Clear();
            var featureLayers = map.GetFeatureLayers(true);

            foreach (var featureLayer in featureLayers)
            {
                LegendImporterItems.Add(GenerateLayerItem(featureLayer));
                if (featureLayer.ZoomLevelSet.CustomZoomLevels.Count > 0)
                {
                    var featureLayerListItem = GisEditor.LayerManager.GetLayerListItem(featureLayer);
                    if (featureLayerListItem != null)
                    {
                        if (featureLayerListItem.Load != null)
                        {
                            featureLayerListItem.Load();
                            featureLayerListItem.Load = null;
                        }
                        foreach (var ComponentStyle in featureLayerListItem.Children)
                        {
                            if (ComponentStyle.Children.Count > 1)
                            {
                                LegendImporterItems.Add(GenerateComponentSytleItem(ComponentStyle));

                                GenerateImporterItems(ComponentStyle, LegendImporterItems, 2);
                            }
                            else
                            {
                                GenerateImporterItems(ComponentStyle, LegendImporterItems, 1);
                            }
                        }
                    }
                }
            }
        }
Пример #2
0
        private static void ChangeAllLayersZoomLevelSet(GisEditorWpfMap map, IEnumerable <ZoomLevel> zoomLevels)
        {
            var zoomLevelSet = new ZoomLevelSet();

            map.ZoomLevelSet.CustomZoomLevels.Clear();
            foreach (var item in zoomLevels)
            {
                zoomLevelSet.CustomZoomLevels.Add(item);
            }
            map.ZoomLevelSet = zoomLevelSet;
            map.MinimumScale = map.ZoomLevelSet.CustomZoomLevels.LastOrDefault().Scale;
            var allFeatureLayers = map.GetFeatureLayers();

            foreach (var featureLayer in allFeatureLayers)
            {
                var originalZoomLevels = featureLayer.ZoomLevelSet.CustomZoomLevels.ToList();
                featureLayer.ZoomLevelSet.CustomZoomLevels.Clear();
                foreach (var item in zoomLevels)
                {
                    var       max          = item.Scale * 2;
                    var       min          = item.Scale * 0.5;
                    ZoomLevel newZoomLevel = null;
                    if (item is PreciseZoomLevel)
                    {
                        newZoomLevel = new PreciseZoomLevel(item.Scale);
                    }
                    else
                    {
                        newZoomLevel = new ZoomLevel(item.Scale);
                    }
                    foreach (var style in item.CustomStyles)
                    {
                        newZoomLevel.CustomStyles.Add(style);
                    }

                    var styles = originalZoomLevels.Where(z => z.Scale <max && z.Scale> min).SelectMany(z => z.CustomStyles);
                    foreach (var style in styles)
                    {
                        if (!newZoomLevel.CustomStyles.Contains(style))
                        {
                            newZoomLevel.CustomStyles.Add(style);
                        }
                    }
                    featureLayer.ZoomLevelSet.CustomZoomLevels.Add(newZoomLevel);
                }
            }
            foreach (var layerOverlay in GisEditor.ActiveMap.Overlays.OfType <LayerOverlay>())
            {
                if (layerOverlay.MapArguments != null)
                {
                    // layerOverlay.Refresh();
                    layerOverlay.RefreshWithBufferSettings();
                }
            }
        }
        public void Refresh(GisEditorWpfMap wpfMap)
        {
            RaisePropertyChanged(() => TargetLayers);
            RaisePropertyChanged(() => SnappingLayerName);

            if (SnappingLayers != null && SnappingLayers.Count > 0)
            {
                var count = wpfMap.GetFeatureLayers().Count(l => SnappingLayers.Contains(l));
                if (count == 0)
                {
                    SnappingLayers.Clear();
                    EditOverlay.Refresh();
                }
            }
        }
        private static void RemoveConditionsLayerNotExist(GisEditorWpfMap wpfMap)
        {
            var allLayers = wpfMap.GetFeatureLayers();

            QueryFeatureLayerWindow.ClearConditions(allLayers);
        }