private void CreateRoads(XDocument doc, Canvas canvas) { foreach (var way in doc.Root.Elements("way")) { bool isRoad = false; foreach (var tag in way.Elements("tag")) { if (tag.Attribute("k").Value == "highway") { isRoad = true; } if (tag.Attribute("k").Value == "aeroway") { isRoad = true; } } if (isRoad) { List <Point> points = new List <Point>(); foreach (var nd in way.Elements("nd")) { Point point = NodePosition(long.Parse(nd.Attribute("ref").Value)); point = new Point(canvas.Width * 0.5 - point.X, canvas.Height * 0.5 + point.Y); points.Add(point); } var road = OsmUIElements.CreateRoad(points, way); canvas.Children.Add(road); } } }