Пример #1
0
        /// <summary>
        /// Merges the given newProperties with this one.
        /// </summary>
        /// <param name="newProperties"></param>
        /// <returns></returns>
        internal MapCSSRuleProperties Merge(MapCSSRuleProperties newProperties)
        {
            // determine the tightest zoom.
            int minZoom = this.MinZoom;
            int maxZoom = this.MaxZoom;

            if (this.MinZoom < newProperties.MinZoom)
            {
                minZoom = newProperties.MinZoom;
            }
            if (this.MaxZoom > newProperties.MaxZoom)
            {
                maxZoom = newProperties.MaxZoom;
            }

            // create a new rule and merge properties from both.
            var rule = new MapCSSRuleProperties(minZoom, maxZoom);

            foreach (var key in this.GetKeys())
            {
                object value;
                this.TryGetProperty(key, out value);
                rule.AddProperty(key, value);
            }
            foreach (var key in newProperties.GetKeys())
            {
                object value;
                newProperties.TryGetProperty(key, out value);
                rule.AddProperty(key, value);
            }
            return(rule);
        }