Beispiel #1
0
    private static void SetPlacemarkData(XmlNode xmlElement, out KMLPlacemark placemark)
    {
        placemark = new KMLPlacemark();

        foreach (XmlNode item in xmlElement.ChildNodes)
        {
            if (item.Name.Equals("name"))
            {
                placemark.Name = item.InnerText;
                placemark.Type = KMLPlacemark.TypeByName(placemark.Name);
            }
            //pins
            if (item.Name.Equals("Point"))
            {
                foreach (XmlNode child in item)
                {
                    if (child.Name.Equals("coordinates"))
                    {
                        string val = child.InnerText;
                        placemark.Longitude = Convert.ToDouble(val.Split(',')[0]);
                        placemark.Latitude  = Convert.ToDouble(val.Split(',')[1]);
                    }
                }
            }
            //routes
            if (item.Name.Equals("LineString"))
            {
                placemark.RouteValues = new List <Vector2>();
                string val = item.FirstChild.InnerText;
                //Remove last ',' and spaces
                val = val.Remove(item.FirstChild.InnerText.LastIndexOf(',')).Trim();
                //Remove altitude values from array (,0 )
                val = val.Replace("0 ", "");
                //Split values by ','
                string[] routeVals = val.Split(',');

                for (int i = 0; i < routeVals.Length; i += 2)
                {
                    placemark.RouteValues.Add(
                        new Vector2(
                            Convert.ToSingle(routeVals[i]),
                            Convert.ToSingle(routeVals[i + 1])
                            ));
                }
            }
        }
    }