コード例 #1
0
 public ParcelUsageTheme()
 {
     DictColor = new Dictionary <string, Color>();
     foreach (var entry in ParcelColorCfg.GetParcelColor())
     {
         Color color = VectorStyleManager.ParseColor(entry.Value);
         if (entry.Key == "_")
         {
             this.AddCondition(f => true, color);
             DictColor.Add("其余", color);
         }
         else
         {
             string key1 = entry.Key;
             string key2 = ParcelColorCfg.GetParcelUsage().First(f => f.Key == key1).Value;
             string key  = string.Format("{0}:{1}", key1, key2);
             DictColor.Add(key, color);
             this.AddCondition(f => f["用地代码"].StartsWith(key1), color);
         }
     }
 }
コード例 #2
0
        private void ComboBoxCallback(object sender, EventArgs e)
        {
            if (!MapControl.Current.Layers.Any(mapLayer => mapLayer.LayerData.Name == WellknownLayerNames.Parcel))
            {
                return;
            }

            var         parcelLayer = MapControl.Current.Layers.First(mapLayer => mapLayer.LayerData.Name == WellknownLayerNames.Parcel);
            string      currentItem = _comboBox.SelectedItem as string;
            IColorTheme parcelTheme = null;

            if (currentItem == None)
            {
                _vLayout.Children.Clear();

                _checkBox.Visibility = Visibility.Collapsed;
                parcelTheme          = null;
            }
            else if (currentItem == LandUse)
            {
                _checkBox.Visibility = Visibility.Visible;

                var usageTheme = new ParcelUsageTheme();
                parcelTheme = usageTheme;
                _dictColor  = usageTheme.DictColor;
                ShowLegend();
            }
            else if (currentItem == FloorAreaRatio || currentItem == SiteCoverageRatio ||
                     currentItem == GreenRate || currentItem == BuildingHeightLimit)
            {
                _checkBox.Visibility = Visibility.Visible;

                var gradientTheme = new BiColorGradientTheme
                {
                    Property = currentItem,
                    MinValue = GetPropMinValue(parcelLayer, currentItem),
                    MaxValue = GetPropMaxValue(parcelLayer, currentItem)
                };

                parcelTheme = gradientTheme;
                _dictColor  = GetGradientDictColor(gradientTheme);
                ShowLegend();
            }

            if (parcelTheme != null) // mod 20120725
            {
                parcelLayer.ApplyColorTheme(parcelTheme);
                if (parcelTheme is IDataVisualizationTheme)
                {
                    string prop = (parcelTheme as IDataVisualizationTheme).Property;
                    parcelLayer.ApplyToolTip(feature => UIHelper.TitledToolTip(title: prop, content: feature[prop]));
                }
                else if (parcelTheme is ParcelUsageTheme)
                {
                    parcelLayer.ApplyToolTip(feature => UIHelper.TitledToolTip(
                                                 title: feature[WellknownPropertyNames.LandUseCode],
                                                 content: ParcelColorCfg.GetUsageByCode(feature[WellknownPropertyNames.LandUseCode])));
                }
            }
            else
            {
                parcelLayer.ClearColorTheme();
                parcelLayer.ApplyToolTip(feature => null);
            }
        }