Android Open Source - android-open-street-map Remote Tile Loader






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;
/*ww w.  j ava2  s.  co  m*/

import com.android.lib.map.osm.models.MapTile;

import android.os.Handler;
import android.os.Message;

public class RemoteTileLoader extends Thread {
    
  private RequestsQueue mRequestsQueue;
  private Handler mHandler;
  private RequestTile mRequestTile;
  

  public RemoteTileLoader(Handler handler, int tileStackSizeLimit) {
    mHandler = handler;
    mRequestsQueue = new RequestsQueue(1, tileStackSizeLimit);
    mRequestTile = new RequestTile();
    start();
  }

  public void queueTileRequest(Tile tile) {
    //Log.i("AddedToQueue", "x= " +tile.mapX+ " y=" +tile.mapY+ " zoom=" + tile.zoom + " mapTypeId=" + tile.mapTypeId + " ADDED TO QUEUE!");
    mRequestsQueue.queue(tile);
    //Log.i("AddedToQueue", "ADDED TOQUEUE size= " + mRequestsQueue.size() + " time=" + (Calendar.getInstance().getTimeInMillis() - time) + "ms");
    synchronized (this) {
      this.notify();
    }
  }

  private boolean loadTile(Tile tile) {
    if (tile == null || tile.key == null) {
      return false;
    }
    try {      
      byte[] bitmapData = mRequestTile.loadBitmap(tile);
      if (bitmapData == null || bitmapData.length == 0)
        return false;
      
      addTile(tile, bitmapData);
      return true;
    } catch (Exception e) {

    }
    return false;
  }
  
  
  public void addTile(Tile tile, final byte[] bitmapData) {
    if (tile == null || bitmapData == null || bitmapData.length == 0) {
      return;
    }
    MapTile.insertTile(tile, bitmapData);
  }
  
  @Override
  public void run() {
    Tile tile;

    while (true) {
      tile = null;
      if (mRequestsQueue.hasRequest()) {
        tile = mRequestsQueue.dequeue();
      }
      if (tile != null) {
        boolean loadTileSuccess = loadTile(tile);
        
        Message message = mHandler.obtainMessage();
        message.arg1 = mRequestsQueue.size();
        message.arg2 = mRequestsQueue.id;
        
        if (loadTileSuccess)
          message.what = TileHandler.TILE_LOADED;
        else
          message.what = TileHandler.TILE_NOT_LOADED;
        mHandler.sendMessage(message);
      }
      try {
        synchronized (this) {
          if (mRequestsQueue.size() == 0) {
            this.wait();
          }
        }
        Thread.sleep(150);
      } catch (InterruptedException e) {
        break;
      }
    }
  }
}




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