package com.google.maps.android.data.kml; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.util.Log; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.model.BitmapDescriptor; import com.google.android.gms.maps.model.GroundOverlay; import com.google.android.gms.maps.model.Marker; 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.Feature; import com.google.maps.android.data.Geometry; import com.google.maps.android.data.MultiGeometry; import com.google.maps.android.data.Renderer; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; /* JADX INFO: loaded from: classes2.dex */ public class KmlRenderer extends Renderer { private static final String LOG_TAG = "KmlRenderer"; private ArrayList mContainers; private boolean mGroundOverlayImagesDownloaded; private final Set mGroundOverlayUrls; private boolean mMarkerIconsDownloaded; KmlRenderer(GoogleMap googleMap, Context context, MarkerManager markerManager, PolygonManager polygonManager, PolylineManager polylineManager, GroundOverlayManager groundOverlayManager, Renderer.ImagesCache imagesCache) { super(googleMap, context, markerManager, polygonManager, polylineManager, groundOverlayManager, imagesCache); this.mGroundOverlayUrls = new HashSet(); this.mMarkerIconsDownloaded = false; this.mGroundOverlayImagesDownloaded = false; } private void removePlacemarks(HashMap map) { removeFeatures(map); } static boolean getContainerVisibility(KmlContainer kmlContainer, boolean z) { return z && (!kmlContainer.hasProperty("visibility") || Integer.parseInt(kmlContainer.getProperty("visibility")) != 0); } private void removeContainers(Iterable iterable) { for (KmlContainer kmlContainer : iterable) { removePlacemarks(kmlContainer.getPlacemarksHashMap()); removeGroundOverlays(kmlContainer.getGroundOverlayHashMap()); removeContainers(kmlContainer.getContainers()); } } public void addLayerToMap() { setLayerVisibility(true); this.mContainers = getContainerList(); putStyles(); assignStyleMap(getStyleMaps(), getStylesRenderer()); addGroundOverlays(getGroundOverlayMap(), this.mContainers); addContainerGroupToMap(this.mContainers, true); addPlacemarksToMap(getAllFeatures()); if (!this.mGroundOverlayImagesDownloaded) { downloadGroundOverlays(); } if (!this.mMarkerIconsDownloaded) { downloadMarkerIcons(); } checkClearBitmapCache(); } void storeKmlData(HashMap map, HashMap map2, HashMap map3, ArrayList arrayList, HashMap map4) { storeData(map, map2, map3, arrayList, map4); } void storeKmzData(HashMap map, HashMap map2, HashMap map3, ArrayList arrayList, HashMap map4, HashMap map5) { storeData(map, map2, map3, arrayList, map4); for (Map.Entry entry : map5.entrySet()) { cacheBitmap(entry.getKey(), entry.getValue()); } } @Override // com.google.maps.android.data.Renderer public void setMap(GoogleMap googleMap) { removeLayerFromMap(); super.setMap(googleMap); addLayerToMap(); } boolean hasKmlPlacemarks() { return hasFeatures(); } Iterable getKmlPlacemarks() { return getFeatures(); } public boolean hasNestedContainers() { return this.mContainers.size() > 0; } public Iterable getNestedContainers() { return this.mContainers; } public Iterable getGroundOverlays() { return getGroundOverlayMap().keySet(); } public void removeLayerFromMap() { removePlacemarks(getAllFeatures()); removeGroundOverlays(getGroundOverlayMap()); if (hasNestedContainers()) { removeContainers(getNestedContainers()); } setLayerVisibility(false); clearStylesRenderer(); } private void addPlacemarksToMap(HashMap map) { Iterator it = map.keySet().iterator(); while (it.hasNext()) { addFeature(it.next()); } } private void addContainerGroupToMap(Iterable iterable, boolean z) { for (KmlContainer kmlContainer : iterable) { boolean containerVisibility = getContainerVisibility(kmlContainer, z); if (kmlContainer.getStyles() != null) { putStyles(kmlContainer.getStyles()); } if (kmlContainer.getStyleMap() != null) { super.assignStyleMap(kmlContainer.getStyleMap(), getStylesRenderer()); } addContainerObjectToMap(kmlContainer, containerVisibility); if (kmlContainer.hasContainers()) { addContainerGroupToMap(kmlContainer.getContainers(), containerVisibility); } } } private void addContainerObjectToMap(KmlContainer kmlContainer, boolean z) { for (KmlPlacemark kmlPlacemark : kmlContainer.getPlacemarks()) { boolean z2 = z && getPlacemarkVisibility(kmlPlacemark); if (kmlPlacemark.getGeometry() != null) { String id = kmlPlacemark.getId(); Geometry geometry = kmlPlacemark.getGeometry(); KmlStyle placemarkStyle = getPlacemarkStyle(id); KmlPlacemark kmlPlacemark2 = kmlPlacemark; Object objAddKmlPlacemarkToMap = addKmlPlacemarkToMap(kmlPlacemark2, geometry, placemarkStyle, kmlPlacemark2.getInlineStyle(), z2); kmlContainer.setPlacemark(kmlPlacemark2, objAddKmlPlacemarkToMap); putContainerFeature(objAddKmlPlacemarkToMap, kmlPlacemark); } } } private void downloadMarkerIcons() { this.mMarkerIconsDownloaded = true; Iterator it = getMarkerIconUrls().iterator(); while (it.hasNext()) { new MarkerIconImageDownload(it.next()).execute(new String[0]); it.remove(); } } /* JADX INFO: Access modifiers changed from: private */ public void addIconToMarkers(String str, HashMap map) { for (KmlPlacemark kmlPlacemark : map.keySet()) { addIconToGeometry(str, getStylesRenderer().get(kmlPlacemark.getId()), kmlPlacemark.getInlineStyle(), kmlPlacemark.getGeometry(), map.get(kmlPlacemark)); } } private void addIconToGeometry(String str, KmlStyle kmlStyle, KmlStyle kmlStyle2, Geometry geometry, Object obj) { if (geometry == null) { return; } if ("Point".equals(geometry.getGeometryType())) { addIconToMarker(str, kmlStyle, kmlStyle2, (Marker) obj); } else if ("MultiGeometry".equals(geometry.getGeometryType())) { addIconToMultiGeometry(str, kmlStyle, kmlStyle2, (MultiGeometry) geometry, (List) obj); } } private void addIconToMultiGeometry(String str, KmlStyle kmlStyle, KmlStyle kmlStyle2, MultiGeometry multiGeometry, List list) { Iterator it = multiGeometry.getGeometryObject().iterator(); Iterator it2 = list.iterator(); while (it.hasNext() && it2.hasNext()) { addIconToGeometry(str, kmlStyle, kmlStyle2, it.next(), it2.next()); } } private void addIconToMarker(String str, KmlStyle kmlStyle, KmlStyle kmlStyle2, Marker marker) { boolean z = kmlStyle2 != null && str.equals(kmlStyle2.getIconUrl()); boolean z2 = kmlStyle != null && str.equals(kmlStyle.getIconUrl()); if (z) { scaleBitmap(kmlStyle2, marker); } else if (z2) { scaleBitmap(kmlStyle, marker); } } private void scaleBitmap(KmlStyle kmlStyle, Marker marker) { marker.setIcon(getCachedMarkerImage(kmlStyle.getIconUrl(), kmlStyle.getIconScale())); } /* JADX INFO: Access modifiers changed from: private */ public void addContainerGroupIconsToMarkers(String str, Iterable iterable) { for (KmlContainer kmlContainer : iterable) { addIconToMarkers(str, kmlContainer.getPlacemarksHashMap()); if (kmlContainer.hasContainers()) { addContainerGroupIconsToMarkers(str, kmlContainer.getContainers()); } } } private void addGroundOverlays(HashMap map, Iterable iterable) { addGroundOverlays(map); for (KmlContainer kmlContainer : iterable) { addGroundOverlays(kmlContainer.getGroundOverlayHashMap(), kmlContainer.getContainers()); } } private void addGroundOverlays(HashMap map) { for (KmlGroundOverlay kmlGroundOverlay : map.keySet()) { String imageUrl = kmlGroundOverlay.getImageUrl(); if (imageUrl != null && kmlGroundOverlay.getLatLngBox() != null) { if (getCachedGroundOverlayImage(imageUrl) != null) { addGroundOverlayToMap(imageUrl, map, true); } else { this.mGroundOverlayUrls.add(imageUrl); } } } } private void downloadGroundOverlays() { this.mGroundOverlayImagesDownloaded = true; Iterator it = this.mGroundOverlayUrls.iterator(); while (it.hasNext()) { new GroundOverlayImageDownload(it.next()).execute(new String[0]); it.remove(); } } /* JADX INFO: Access modifiers changed from: private */ public void addGroundOverlayToMap(String str, HashMap map, boolean z) { BitmapDescriptor cachedGroundOverlayImage = getCachedGroundOverlayImage(str); for (KmlGroundOverlay kmlGroundOverlay : map.keySet()) { if (kmlGroundOverlay.getImageUrl().equals(str)) { GroundOverlay groundOverlayAttachGroundOverlay = attachGroundOverlay(kmlGroundOverlay.getGroundOverlayOptions().image(cachedGroundOverlayImage)); if (!z) { groundOverlayAttachGroundOverlay.setVisible(false); } map.put(kmlGroundOverlay, groundOverlayAttachGroundOverlay); } } } /* JADX INFO: Access modifiers changed from: private */ public void addGroundOverlayInContainerGroups(String str, Iterable iterable, boolean z) { for (KmlContainer kmlContainer : iterable) { boolean containerVisibility = getContainerVisibility(kmlContainer, z); addGroundOverlayToMap(str, kmlContainer.getGroundOverlayHashMap(), containerVisibility); if (kmlContainer.hasContainers()) { addGroundOverlayInContainerGroups(str, kmlContainer.getContainers(), containerVisibility); } } } private class MarkerIconImageDownload extends AsyncTask { private final String mIconUrl; public MarkerIconImageDownload(String str) { this.mIconUrl = str; KmlRenderer.this.downloadStarted(); } /* JADX INFO: Access modifiers changed from: protected */ @Override // android.os.AsyncTask public Bitmap doInBackground(String... strArr) { try { return KmlRenderer.this.getBitmapFromUrl(this.mIconUrl); } catch (MalformedURLException unused) { return BitmapFactory.decodeFile(this.mIconUrl); } catch (IOException e) { e.printStackTrace(); return null; } } /* JADX INFO: Access modifiers changed from: protected */ @Override // android.os.AsyncTask public void onPostExecute(Bitmap bitmap) { if (bitmap != null) { KmlRenderer.this.cacheBitmap(this.mIconUrl, bitmap); if (KmlRenderer.this.isLayerOnMap()) { KmlRenderer kmlRenderer = KmlRenderer.this; kmlRenderer.addIconToMarkers(this.mIconUrl, kmlRenderer.getAllFeatures()); KmlRenderer kmlRenderer2 = KmlRenderer.this; kmlRenderer2.addContainerGroupIconsToMarkers(this.mIconUrl, kmlRenderer2.mContainers); } } else { Log.e(KmlRenderer.LOG_TAG, "Image at this URL could not be found " + this.mIconUrl); } KmlRenderer.this.downloadFinished(); } } private class GroundOverlayImageDownload extends AsyncTask { private final String mGroundOverlayUrl; public GroundOverlayImageDownload(String str) { this.mGroundOverlayUrl = str; KmlRenderer.this.downloadStarted(); } /* JADX INFO: Access modifiers changed from: protected */ @Override // android.os.AsyncTask public Bitmap doInBackground(String... strArr) { try { return KmlRenderer.this.getBitmapFromUrl(this.mGroundOverlayUrl); } catch (MalformedURLException unused) { return BitmapFactory.decodeFile(this.mGroundOverlayUrl); } catch (IOException e) { Log.e(KmlRenderer.LOG_TAG, "Image [" + this.mGroundOverlayUrl + "] download issue", e); return null; } } /* JADX INFO: Access modifiers changed from: protected */ @Override // android.os.AsyncTask public void onPostExecute(Bitmap bitmap) { if (bitmap != null) { KmlRenderer.this.cacheBitmap(this.mGroundOverlayUrl, bitmap); if (KmlRenderer.this.isLayerOnMap()) { KmlRenderer kmlRenderer = KmlRenderer.this; kmlRenderer.addGroundOverlayToMap(this.mGroundOverlayUrl, kmlRenderer.getGroundOverlayMap(), true); KmlRenderer kmlRenderer2 = KmlRenderer.this; kmlRenderer2.addGroundOverlayInContainerGroups(this.mGroundOverlayUrl, kmlRenderer2.mContainers, true); } } else { Log.e(KmlRenderer.LOG_TAG, "Image at this URL could not be found " + this.mGroundOverlayUrl); } KmlRenderer.this.downloadFinished(); } } /* JADX INFO: Access modifiers changed from: private */ public Bitmap getBitmapFromUrl(String str) throws IOException { return BitmapFactory.decodeStream(openConnectionCheckRedirects(new URL(str).openConnection())); } private InputStream openConnectionCheckRedirects(URLConnection uRLConnection) throws IOException { InputStream inputStream; boolean z; HttpURLConnection httpURLConnection; int responseCode; int i = 0; do { boolean z2 = uRLConnection instanceof HttpURLConnection; if (z2) { ((HttpURLConnection) uRLConnection).setInstanceFollowRedirects(false); } inputStream = uRLConnection.getInputStream(); if (!z2 || (responseCode = (httpURLConnection = (HttpURLConnection) uRLConnection).getResponseCode()) < 300 || responseCode > 307 || responseCode == 306 || responseCode == 304) { z = false; } else { URL url = httpURLConnection.getURL(); String headerField = httpURLConnection.getHeaderField("Location"); URL url2 = headerField != null ? new URL(url, headerField) : null; httpURLConnection.disconnect(); if (url2 == null || ((!url2.getProtocol().equals("http") && !url2.getProtocol().equals("https")) || i >= 5)) { throw new SecurityException("illegal URL redirect"); } uRLConnection = url2.openConnection(); i++; z = true; } } while (z); return inputStream; } }