Пример #1
0
        public void TypeFromGeoJson(JProperty json)
        {
            MetaInfo = new MetaInfoCollection();
            foreach (var childJ in json.Children().OfType<JObject>())
            {
                JToken tokenS;
                childJ.TryGetValue("style", out tokenS);
                if (tokenS != null)
                {
                    // First, convert the JSON to XML.
                    var styleNode = JsonConvert.DeserializeXmlNode("{style:" + tokenS + "}");
                    var styleDoc = styleNode.ToXDocument();
                    var xElement = styleDoc.Element(XName.Get("style"));
                    if (xElement != null)
                    {
                        // Convert child nodes to attributes.
                        foreach (var el in xElement.Elements())
                        {
                            xElement.Add(new XAttribute(UppercaseFirst(el.Name), (string)el));
                        }
                        xElement.Elements().Remove();
                        // Parse the style.
                        try
                        {
                            var newStyle = new PoIStyle();
                            newStyle.FromXml(xElement, ".", false); // Do not catch exception.
                            Style = newStyle;
                        }
                        catch
                        {
                            // Ok, keep old style.
                        }
                    }
                }

                JToken tokenM;
                childJ.TryGetValue("propertyTypeData", out tokenM);
                if (tokenM != null)
                {
                    var metaInfos = tokenM.Children();
                    foreach (var metaInfo in metaInfos)
                    {
                        var newMetaInfo = new MetaInfo();
                        newMetaInfo.FromGeoJson(metaInfo.ToString(Formatting.None), false);
                        MetaInfo.Add(newMetaInfo);
                    }
                }
            }
        }