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); } } }
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); } }