package com.nutiteq.advancedmap3.datasource; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import com.nutiteq.core.MapTile; import com.nutiteq.core.TileData; import com.nutiteq.datasources.HTTPTileDataSource; import com.nutiteq.utils.BitmapUtils; import com.nutiteq.utils.Log; import com.nutiteq.wrappedcommons.UnsignedCharVector; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; /** * A minimal custom vector tile data source which uses app-level HTTP requests * It supports e.g. HTTPS */ public class MyVectorHttpTileDataSource extends HTTPTileDataSource { public MyVectorHttpTileDataSource(int minZoom, int maxZoom, String baseURL) { super(minZoom, maxZoom, baseURL); } public TileData loadTile(MapTile tile) { String urlString = super.buildTileUrl(tile); Log.debug("requesting tile: "+urlString); try { URL url = new URL(urlString); UnsignedCharVector tileBinary = new UnsignedCharVector(); InputStream is = url.openConnection().getInputStream(); byte[] buffer = new byte[4096]; int n; int len = 0; while ((n = is.read(buffer)) != -1) { for(int i=0;i<n;i++){ tileBinary.add(buffer[i]); } len+=n; } Log.debug("loaded bytes " + len); return new TileData(tileBinary); } catch (IOException e) { e.printStackTrace(); return null; } } }