Arcgis for android100.3 加载影像地图并且缓存地图

本文档详细介绍了如何在ArcGIS for Android 100.3中加载在线影像并进行缓存,以避免直接拷贝大数据量的遥感影像。通过重写ImageTiledLayer类,获取切片信息,并利用自定义的ArcGISLocalDataLayer实例化加载影像。在加载过程中,结合TileInfo参数,根据影像服务的切片结构进行缓存,确保地图浏览时将已查看的部分存储到本地。
摘要由CSDN通过智能技术生成

这里加载并且缓存影像的目的是为了防止遥感影像的拷贝,项目之前都是在拷贝影像(因为数据较大,下载太费事),在此进行更新,改为先是加载在线影像,然后再进行缓存。

一、先重写了Arcgis for android的一个ImageTiledLayer(因为别的大多数方法是不允许被重写的----),先看一下官方文档的介绍:

大致可以看出来,我们可以通过重写这个类的方法来获得给定切片键的切片的编码字节,即获得发布影像的切片信息。

下面我们看一下这里面的一个方法:

我们就是要重写这个方法!

在写之前我们先看一下发布的影像服务:

这些参数待会都是我们需要用到的。

下面给大家看一下重写的ImageTileLayer:代码如下:

public class ArcGISLocalDataLayer extends ImageTiledLayer {
    private String mUrl = null;
    private Context mContext;
    private SQLiteDatabase mDb;

    //  private SpatialReference mSpatialReference;
    public ArcGISLocalDataLayer(Context mContext, String url, TileInfo tileInfo, Envelope envelope) {
        super(tileInfo, envelope);
        this.mContext = mContext;
        this.mUrl = url;
        this.init();
    }

    private void init() {

        DBHelper gadbHelper = new DBHelper(mContext);
        mDb = gadbHelper.getWritableDatabase();
        //setDefaultSpatialReference(SpatialReference.create(4326));
        //设置mapservice
        //ArcGISLocalDataLayer.this.initLayer();
    }


    @Override
    protected byte[] getTile(TileKey tileKey) {
        int level = tileKey.getLevel();
        int col = tileKey.getColumn();
        int row = tileKey.getRow();
        byte[] result = null;
        String tileIndex = "tile_" + level + "_" + row + "_" + col;
        String sql = "select * from " + DBHelper.TABLE_MAP + " where TILEINDEX = '" + tileIndex + "'";
        Cursor mCursor = mDb.rawQuery(sql, null);
        boolean hasData = false;
        boolean isWifi = isWifi();
        while (mCursor.moveToNext()) {//判断是否存在数据
            hasData = true;
        }
        if (hasData && !isWifi) {//数据库中有数据
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值