Android Google Maps V2 - Sd Card As Plate Provider

I am developing an Android application using the Google Maps API V2, and I have to use standalone tiles, I have all the tiles (from open street maps in png format) of my entire city on my SD card. I already tried using the TileProvider interface, but did not work. How can i do this? Thanks in advance.

+6
source share
1 answer

I changed something and it worked. Here is the code:

CustomMapTileProvider.java

public class CustomMapTileProvider implements TileProvider { private static final int TILE_WIDTH = 256; private static final int TILE_HEIGHT = 256; private static final int BUFFER_SIZE = 16 * 1024; Override public Tile getTile(int x, int y, int zoom) { byte[] image = readTileImage(x, y, zoom); return image == null ? null : new Tile(TILE_WIDTH, TILE_HEIGHT, image); } private byte[] readTileImage(int x, int y, int zoom) { FileInputStream in = null; ByteArrayOutputStream buffer = null; try { in = new FileInputStream(getTileFile(x, y, zoom)); buffer = new ByteArrayOutputStream(); int nRead; byte[] data = new byte[BUFFER_SIZE]; while ((nRead = in .read(data, 0, BUFFER_SIZE)) != -1) { buffer.write(data, 0, nRead); } buffer.flush(); return buffer.toByteArray(); } catch (IOException e) { e.printStackTrace(); return null; } catch (OutOfMemoryError e) { e.printStackTrace(); return null; } finally { if ( in != null) try { in .close(); } catch (Exception ignored) {} if (buffer != null) try { buffer.close(); } catch (Exception ignored) {} } } private File getTileFile(int x, int y, int zoom) { File sdcard = Environment.getExternalStorageDirectory(); String tileFile = "/TILES_FOLDER/" + zoom + '/' + x + '/' + y + ".png"; File file = new File(sdcard, tileFile); return file; } } 

Add TileOverlay to your GoogleMap instance

 ... map.setMapType(GoogleMap.MAP_TYPE_NONE); TileOverlayOptions tileOverlay = new TileOverlayOptions(); tileOverlay.tileProvider(new CustomMapTileProvider()); map.addTileOverlay(tileOverlay).setZIndex(0); ... 
+10
source

Source: https://habr.com/ru/post/953514/


All Articles