Initial version -- added millennium read funcionality

This commit is contained in:
Pablo
2026-03-09 22:05:28 +01:00
commit 77c2ded482
2770 changed files with 141927 additions and 0 deletions
@@ -0,0 +1,131 @@
package com.google.maps.android.data.kml;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import com.google.android.gms.maps.GoogleMap;
import com.google.maps.android.collections.GroundOverlayManager;
import com.google.maps.android.collections.MarkerManager;
import com.google.maps.android.collections.PolygonManager;
import com.google.maps.android.collections.PolylineManager;
import com.google.maps.android.data.Layer;
import com.google.maps.android.data.Renderer;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
/* JADX INFO: loaded from: classes2.dex */
public class KmlLayer extends Layer {
public KmlLayer(GoogleMap googleMap, int i, Context context) throws XmlPullParserException, IOException {
this(googleMap, context.getResources().openRawResource(i), context, new MarkerManager(googleMap), new PolygonManager(googleMap), new PolylineManager(googleMap), new GroundOverlayManager(googleMap), (Renderer.ImagesCache) null);
}
public KmlLayer(GoogleMap googleMap, InputStream inputStream, Context context) throws XmlPullParserException, IOException {
this(googleMap, inputStream, context, new MarkerManager(googleMap), new PolygonManager(googleMap), new PolylineManager(googleMap), new GroundOverlayManager(googleMap), (Renderer.ImagesCache) null);
}
public KmlLayer(GoogleMap googleMap, int i, Context context, MarkerManager markerManager, PolygonManager polygonManager, PolylineManager polylineManager, GroundOverlayManager groundOverlayManager, Renderer.ImagesCache imagesCache) throws XmlPullParserException, IOException {
this(googleMap, context.getResources().openRawResource(i), context, markerManager, polygonManager, polylineManager, groundOverlayManager, imagesCache);
}
public KmlLayer(GoogleMap googleMap, InputStream inputStream, Context context, MarkerManager markerManager, PolygonManager polygonManager, PolylineManager polylineManager, GroundOverlayManager groundOverlayManager, Renderer.ImagesCache imagesCache) throws Throwable {
if (inputStream == null) {
throw new IllegalArgumentException("KML InputStream cannot be null");
}
KmlRenderer kmlRenderer = new KmlRenderer(googleMap, context, markerManager, polygonManager, polylineManager, groundOverlayManager, imagesCache);
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
bufferedInputStream.mark(1024);
ZipInputStream zipInputStream = new ZipInputStream(bufferedInputStream);
try {
ZipEntry nextEntry = zipInputStream.getNextEntry();
if (nextEntry != null) {
HashMap<String, Bitmap> map = new HashMap<>();
KmlParser kml = null;
while (nextEntry != null) {
if (kml == null && nextEntry.getName().toLowerCase().endsWith(".kml")) {
kml = parseKml(zipInputStream);
} else {
Bitmap bitmapDecodeStream = BitmapFactory.decodeStream(zipInputStream);
if (bitmapDecodeStream != null) {
map.put(nextEntry.getName(), bitmapDecodeStream);
} else {
Log.w("KmlLayer", "Unsupported KMZ contents file type: " + nextEntry.getName());
}
}
nextEntry = zipInputStream.getNextEntry();
}
if (kml == null) {
throw new IllegalArgumentException("KML not found in InputStream");
}
kmlRenderer.storeKmzData(kml.getStyles(), kml.getStyleMaps(), kml.getPlacemarks(), kml.getContainers(), kml.getGroundOverlays(), map);
} else {
bufferedInputStream.reset();
KmlParser kml2 = parseKml(bufferedInputStream);
kmlRenderer.storeKmlData(kml2.getStyles(), kml2.getStyleMaps(), kml2.getPlacemarks(), kml2.getContainers(), kml2.getGroundOverlays());
}
} catch (Throwable th) {
th = th;
}
try {
storeRenderer(kmlRenderer);
inputStream.close();
bufferedInputStream.close();
zipInputStream.close();
} catch (Throwable th2) {
th = th2;
inputStream.close();
bufferedInputStream.close();
zipInputStream.close();
throw th;
}
}
private static KmlParser parseKml(InputStream inputStream) throws XmlPullParserException, IOException {
KmlParser kmlParser = new KmlParser(createXmlParser(inputStream));
kmlParser.parseKml();
return kmlParser;
}
private static XmlPullParser createXmlParser(InputStream inputStream) throws XmlPullParserException {
XmlPullParserFactory xmlPullParserFactoryNewInstance = XmlPullParserFactory.newInstance();
xmlPullParserFactoryNewInstance.setNamespaceAware(true);
XmlPullParser xmlPullParserNewPullParser = xmlPullParserFactoryNewInstance.newPullParser();
xmlPullParserNewPullParser.setInput(inputStream, null);
return xmlPullParserNewPullParser;
}
@Override // com.google.maps.android.data.Layer
public void addLayerToMap() {
super.addKMLToMap();
}
public boolean hasPlacemarks() {
return hasFeatures();
}
public Iterable<KmlPlacemark> getPlacemarks() {
return getFeatures();
}
@Override // com.google.maps.android.data.Layer
public boolean hasContainers() {
return super.hasContainers();
}
@Override // com.google.maps.android.data.Layer
public Iterable<KmlContainer> getContainers() {
return super.getContainers();
}
@Override // com.google.maps.android.data.Layer
public Iterable<KmlGroundOverlay> getGroundOverlays() {
return super.getGroundOverlays();
}
}