private MapItemPolygon AddPolygonWithInteriorRings(string itemTitle, Point[] polygon, List <Point[]> interiors) { if (polygon.Length < 3) { throw new ArgumentException("A polygon should contain at least 3 points"); } if (polygon[0].Latitude != polygon[polygon.Length - 1].Latitude || polygon[0].Longitude != polygon[polygon.Length - 1].Longitude) { throw new ArgumentException("The last and first points in a polygon should be the same"); } List <Point> totalShape = new List <Point>(polygon); foreach (var interior in interiors) { if (interior.Length < 3) { throw new ArgumentException("A interior should contain at least 3 points"); } if (interior[0].Latitude != interior[interior.Length - 1].Latitude || interior[0].Longitude != interior[interior.Length - 1].Longitude) { throw new ArgumentException("The last and first points in a interior should be the same"); } totalShape.AddRange(new List <Point>(interior)); } //-- To close off the polygon add the start point totalShape.Add(new Point(totalShape[0].Latitude, totalShape[0].Longitude)); MapItemPolygon p = new MapItemPolygon(totalShape.ToArray()) { T = itemTitle }; Items.Add(p); return(p); }
private MapItemPolygon AddPolygon(string itemTitle, Point[] corners) { if (corners.Length < 3) { throw new ArgumentException("A polygon should contain at least 3 points"); } if (corners[0].Latitude != corners[corners.Length - 1].Latitude || corners[0].Longitude != corners[corners.Length - 1].Longitude) { throw new ArgumentException("The last and first points in a polygon should be the same"); } MapItemPolygon p = new MapItemPolygon(corners) { T = itemTitle }; Items.Add(p); return(p); }