Android Open Source - android-open-street-map Request Tile






From Project

Back to project page android-open-street-map.

License

The source code is released under:

Apache License

If you think the Android project android-open-street-map listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.android.lib.map.osm;
/*w  w w. j  a  v  a  2 s.  c o m*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.Vector;

import android.util.Log;

public class RequestTile {

  /* Switching the urls to OpenStreetMaps from cloudmade
   * private static final String URL_OSM_A = "http://andy.sandbox.cloudmade.com/tiles/cycle/";
  private static final String URL_OSM_B = "http://andy.sandbox.cloudmade.com/tiles/cycle/";
  private static final String URL_OSM_C = "http://andy.sandbox.cloudmade.com/tiles/cycle/";
  */
  
  private static final String URL_OSM_A = "http://tile.openstreetmap.org/";
  private static final String URL_OSM_B = "http://tile.openstreetmap.org/";
  private static final String URL_OSM_C = "http://tile.openstreetmap.org/";
  
  
  private static final int IO_BUFFER_SIZE = 8192;
  
  private OsmBasePool mOsmBasePool = new OsmBasePool();
  private byte[] mBuffer;
  
  
  public RequestTile() {
    mBuffer = new byte[IO_BUFFER_SIZE];
  }
  
  public byte[] loadBitmap(Tile tile) throws InterruptedException {
    
    String tileUrl = mOsmBasePool.getNextBase() + tile.key;
    
    InputStream in = null;
    OutputStream out = null;
    ByteArrayOutputStream dataStream = null;

    try {
      URL urL = new URL(tileUrl);
      InputStream inStream = urL.openStream();
      in = new BufferedInputStream(inStream, IO_BUFFER_SIZE);

      dataStream = new ByteArrayOutputStream();
      out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE);
      copy(in, out);

      out.flush();
      out.close();
      return dataStream.toByteArray();
    } catch (IOException e) {
      Log.e("class RequestTile", "IOException: Error getting the tile from url");
      Thread.sleep(3000);
    } catch (Exception e) {
      Log.e("class RequestTile", "Exception: Error getting the tile from url");
      Thread.sleep(3000);
    }
    
    return null;
  }

  private void copy(InputStream in, OutputStream out) {
    int read;
    try {
      while ((read = in.read(mBuffer)) != -1) {
        out.write(mBuffer, 0, read);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  
  class OsmBasePool {
    private Vector<String> bases = new Vector<String>();
    private int iterator = 0;

    OsmBasePool() {
      bases.add(URL_OSM_A);
      bases.add(URL_OSM_B);
      bases.add(URL_OSM_C);
    }

    public String getNextBase() {
      ++iterator;
      if (iterator == bases.size()) {
        iterator = 0;
      }

      return bases.elementAt(iterator);
    }

  }
  
}




Java Source Code List

com.android.lib.map.osm.BitmapScaler.java
com.android.lib.map.osm.Configuration.java
com.android.lib.map.osm.GeoPoint.java
com.android.lib.map.osm.InDbTileLoader.java
com.android.lib.map.osm.InMemoryTilesCache.java
com.android.lib.map.osm.LRUMap.java
com.android.lib.map.osm.ManageTilesCached.java
com.android.lib.map.osm.OsmMapViewBase.java
com.android.lib.map.osm.OsmMapView.java
com.android.lib.map.osm.OsmOverlayListener.java
com.android.lib.map.osm.Projection.java
com.android.lib.map.osm.RemoteAsyncTileLoader.java
com.android.lib.map.osm.RemoteTileLoader.java
com.android.lib.map.osm.RequestTile.java
com.android.lib.map.osm.RequestsQueue.java
com.android.lib.map.osm.ResizedTilesCache.java
com.android.lib.map.osm.TileHandler.java
com.android.lib.map.osm.Tile.java
com.android.lib.map.osm.TilesDownloader.java
com.android.lib.map.osm.TilesProvider.java
com.android.lib.map.osm.controller.IMapInteractionListener.java
com.android.lib.map.osm.helpers.CustomDatabaseHelper.java
com.android.lib.map.osm.helpers.OsmDatabaseHelper.java
com.android.lib.map.osm.helpers.ScaleGestureHelper.java
com.android.lib.map.osm.helpers.ScaleGesturePreFroyoHelper.java
com.android.lib.map.osm.models.MapEntity.java
com.android.lib.map.osm.models.MapTileEntity.java
com.android.lib.map.osm.models.MapTile.java
com.android.lib.map.osm.models.OsmModel.java
com.android.lib.map.osm.overlay.MapMarker.java
com.android.lib.map.osm.overlay.MapPolygon.java
com.android.lib.map.osm.overlay.MapTrack.java
com.android.lib.map.osm.overlay.OsmLocationOverlay.java
com.android.lib.map.osm.overlay.OsmMarkerOverlay.java
com.android.lib.map.osm.overlay.OsmOverlay.java
com.android.lib.map.osm.overlay.OsmPolygonOverlay.java
com.android.lib.map.osm.overlay.OsmTrackOverlay.java
com.android.lib.map.osm.utils.CountDownTimer.java
com.android.lib.map.osm.utils.DateUtil.java
com.android.lib.map.osm.utils.PolygonUtils.java
com.android.lib.map.osm.utils.PolylineUtil.java