/** * Creates a new KmlPolygon object. Parses only one outer boundary and no or many inner * boundaries containing the coordinates. * * @return KmlPolygon object */ private static KmlPolygon createPolygon(XmlPullParser parser) throws XmlPullParserException, IOException { // Indicates if an outer boundary needs to be defined Boolean isOuterBoundary = false; List<LatLng> outerBoundary = new ArrayList<>(); List<List<LatLng>> innerBoundaries = new ArrayList<>(); int eventType = parser.getEventType(); while (!(eventType == END_TAG && parser.getName().equals("Polygon"))) { if (eventType == START_TAG) { if (parser.getName().matches(BOUNDARY_REGEX)) { isOuterBoundary = parser.getName().equals("outerBoundaryIs"); } else if (parser.getName().equals("coordinates")) { if (isOuterBoundary) { outerBoundary = convertToLatLngArray(parser.nextText()); } else { innerBoundaries.add(convertToLatLngArray(parser.nextText())); } } } eventType = parser.next(); } return new KmlPolygon(outerBoundary, innerBoundaries); }
public KmlPolygon createOuterPolygon() { ArrayList<LatLng> outerCoordinates = new ArrayList<LatLng>(); outerCoordinates.add(new LatLng(10, 10)); outerCoordinates.add(new LatLng(20, 20)); outerCoordinates.add(new LatLng(30, 30)); outerCoordinates.add(new LatLng(10, 10)); return new KmlPolygon(outerCoordinates, null); }
public KmlPolygon createRegularPolygon() { ArrayList<LatLng> outerCoordinates = new ArrayList<LatLng>(); outerCoordinates.add(new LatLng(10, 10)); outerCoordinates.add(new LatLng(20, 20)); outerCoordinates.add(new LatLng(30, 30)); outerCoordinates.add(new LatLng(10, 10)); ArrayList<List<LatLng>> innerCoordinates = new ArrayList<List<LatLng>>(); ArrayList<LatLng> innerHole = new ArrayList<LatLng>(); innerHole.add(new LatLng(20, 20)); innerHole.add(new LatLng(10, 10)); innerHole.add(new LatLng(20, 20)); innerCoordinates.add(innerHole); return new KmlPolygon(outerCoordinates, innerCoordinates); }