目標Achievements
這個類別目的是要用來做動態新增圖層
程式碼Code
package lien.ching.maptracker.api;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import org.mapsforge.map.android.graphics.AndroidGraphicFactory;
import org.mapsforge.map.android.util.AndroidUtil;
import org.mapsforge.map.android.view.MapView;
import org.mapsforge.map.layer.cache.TileCache;
import org.mapsforge.map.layer.labels.LabelLayer;
import org.mapsforge.map.layer.renderer.TileRendererLayer;
import org.mapsforge.map.reader.MapFile;
import org.mapsforge.map.rendertheme.InternalRenderTheme;
import org.mapsforge.map.rendertheme.rule.RenderTheme;
import java.io.File;
import lien.ching.maptracker.Constant;
import lien.ching.maptracker.overlay.NowLocationLayout;
/**
* Created by lienching on 1/7/16.
*/
//http://developer.android.com/reference/android/content/BroadcastReceiver.html
public class LayerAdder extends BroadcastReceiver {
private MapView mapView;
private String target;
private NowLocationLayout locationLayout;
private Long enqueue;
public LayerAdder(MapView mapView,NowLocationLayout locationLayout,String target,Long enqueue){
super();
this.mapView = mapView;
this.target = target;
this.enqueue = enqueue;
this.locationLayout = locationLayout;
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
long downloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);
if(downloadId == enqueue){
MapFile targetFile = new MapFile(new File(Constant.PATH_MAPSFORGE+target));
TileCache tileCache = AndroidUtil.createTileCache(context, "mapcache", mapView.getModel().displayModel.getTileSize(), 1f, mapView.getModel().frameBufferModel.getOverdrawFactor());
TileRendererLayer tileRendererLayer = AndroidUtil.createTileRendererLayer(tileCache,mapView.getModel().mapViewPosition,targetFile, InternalRenderTheme.OSMARENDER,true,true);
tileRendererLayer.setXmlRenderTheme(InternalRenderTheme.OSMARENDER);
mapView.getLayerManager().getLayers().add(tileRendererLayer);
mapView.getLayerManager().getLayers().remove(locationLayout);//LocationLayout need be the top layout of the mapview, to keep user location visible
mapView.getLayerManager().getLayers().add(locationLayout);
Log.d("LayerAdder",target+" Download Completed"+", LayerAdd");
}
}
}
}
說明Explanation
BroadcastReceiver是我用來去偵測檔案是否下載完成的類別
沒有留言:
張貼留言