/** * Creates a new KmlLayer object * * @param map GoogleMap object * @param stream InputStream containing KML file * @throws XmlPullParserException if file cannot be parsed */ public KmlLayer(GoogleMap map, InputStream stream, Context context) throws XmlPullParserException, IOException { if (stream == null) { throw new IllegalArgumentException("KML InputStream cannot be null"); } KmlRenderer mRenderer = new KmlRenderer(map, context); XmlPullParser xmlPullParser = createXmlParser(stream); KmlParser parser = new KmlParser(xmlPullParser); parser.parseKml(); stream.close(); mRenderer.storeKmlData(parser.getStyles(), parser.getStyleMaps(), parser.getPlacemarks(), parser.getContainers(), parser.getGroundOverlays()); storeRenderer(mRenderer); }
if (eventType == XmlPullParser.START_TAG) { if (mParser.getName().matches(UNSUPPORTED_REGEX)) { skip(mParser);
public void testPlacemarkParsing() throws Exception { XmlPullParser parser = createParser(com.google.maps.android.test.R.raw.amu_unsupported); KmlParser mParser = new KmlParser(parser); mParser.parseKml(); assertTrue(mParser.getPlacemarks().size() == 1); } }
public void testPolyStyleBooleanNumeric() throws Exception { XmlPullParser parser = createParser(com.google.maps.android.test.R.raw.amu_poly_style_boolean_numeric); KmlParser mParser = new KmlParser(parser); mParser.parseKml(); assertNotNull(mParser.getPlacemarks()); assertEquals(1, mParser.getContainers().size()); KmlContainer kmlContainer = mParser.getContainers().get(0); assertEquals(true, kmlContainer.hasPlacemarks()); HashMap<String, KmlStyle> styles = kmlContainer.getStyles(); KmlStyle kmlStyle = styles.get("#fireadvisory"); assertNotNull(kmlStyle); assertEquals(true, kmlStyle.hasFill()); assertEquals(false, kmlStyle.hasOutline()); }
public void testContainerHeirarchy() throws Exception { XmlPullParser parser = createParser(com.google.maps.android.test.R.raw.amu_document_nest); KmlParser mParser = new KmlParser(parser); mParser.parseKml(); assertEquals(mParser.getContainers().get(0).getContainerId(), "hasId"); assertEquals(mParser.getContainers().size(), 1); assertTrue(mParser.getContainers().get(0).hasContainers()); }
public void testPolyStyleBooleanAlpha() throws Exception { XmlPullParser parser = createParser(com.google.maps.android.test.R.raw.amu_poly_style_boolean_alpha); KmlParser mParser = new KmlParser(parser); mParser.parseKml(); assertNotNull(mParser.getPlacemarks()); assertEquals(1, mParser.getContainers().size()); KmlContainer kmlContainer = mParser.getContainers().get(0); assertEquals(true, kmlContainer.hasPlacemarks()); HashMap<String, KmlStyle> styles = kmlContainer.getStyles(); KmlStyle kmlStyle = styles.get("#fireadvisory"); assertNotNull(kmlStyle); assertEquals(true, kmlStyle.hasFill()); assertEquals(false, kmlStyle.hasOutline()); }
public void testInlineStyle() throws Exception { XmlPullParser parser = createParser(com.google.maps.android.test.R.raw.amu_inline_style); KmlParser mParser = new KmlParser(parser); mParser.parseKml(); assertNotNull(mParser.getPlacemarks()); assertEquals(mParser.getPlacemarks().size(), 1); for (KmlPlacemark placemark : mParser.getPlacemarks().keySet()) { KmlStyle inlineStyle = placemark.getInlineStyle(); assertNotNull(inlineStyle); assertEquals(inlineStyle.getPolylineOptions().getColor(), Color.parseColor("#000000")); assertEquals(inlineStyle.getPolygonOptions().getFillColor(), Color.parseColor("#ffffff")); assertEquals(inlineStyle.getPolylineOptions().getColor(), inlineStyle.getPolygonOptions().getStrokeColor()); assertEquals(placemark.getGeometry().getGeometryType(), "MultiGeometry"); } }
if (eventType == START_TAG) { if (parser.getName().matches(UNSUPPORTED_REGEX)) { KmlParser.skip(parser); } else if (parser.getName().matches(CONTAINER_REGEX)) { nestedContainers.add(assignPropertiesToContainer(parser));