我感觉到你的痛苦......我花了很长时间来实现我正在做的事情。下面是一个从 .kml 文件解析纬度和经度值的快速示例:
从存储纬度和经度值的地方开始:
public class Location
{
public float Latitude { get; set; }
public float Longitude { get; set; }
}
然后从您的 .kml 文件中获取流(在我的情况下,我一直使用相同的 .kml 文件并将其放在我的项目中,并将其构建操作设置为 'Embedded Resource' :
Stream stream = GetType().Assembly.GetManifestResourceStream("MyNamespace.Filename.kml");
List<Location> locations = ParseLocations(stream);
这是 ParseLocations 的实现:
public static List<Location> ParseLocations(Stream stream)
{
List<Location> locationList = new List<Location>();
var doc = XDocument.Load(stream);
XNamespace ns = "http://earth.google.com/kml/2.1";
var result = doc.Root.Descendants(ns + "Placemark");
foreach (XElement xmlTempleInfo in result)
{
var point = xmlTempleInfo.Element(ns + "Point");
string[] coordinates = point.Element(ns + "coordinates").Value.Split(",".ToCharArray());
locationList.Add(new Location()
{
Latitude = float.Parse(coordinates[1])
Longitude = float.Parse(coordinates[0]),
});
}
return locationList;
}