Брошюра автономного поиска плитки? - PullRequest
0 голосов
/ 19 апреля 2019

Несколько дней бился в мою голову, пытаясь заставить работать листовку офлайн-карт .Я изменил функцию getTileUrl в leaflet-offline.js, чтобы она только возвращала плитки из базы данных, и исключил _getStorageKey().JavaScriptInterface и getImage() работают правильно и возвращают тип Bitmap, но автономные листы не обрабатываются.Одна вещь, которая мне не ясна, это Promises, и getImage() должен возвращать байт [] вместо Bitmap.У кого-нибудь есть рабочий пример листовки в автономном режиме, который я мог бы изучить?

//*** From leaflet-offline.js ***\\
getTileUrl: function (coords) {
        var url = L.TileLayer.prototype.getTileUrl.call(this, coords);
        var resultPromise = this._tilesDb.getItem(url).then(function (data) {
            if (data && typeof data === 'object') {
                return URL.createObjectURL(data);
            }
        }).catch(function (err) {
            throw err;
        });
        return resultPromise;
    },

//*** From leaflet.html ***\\\
var tilesDb = {
    getItem: function (key) {
        return new Promise(
            function(resolve, reject) {
                var bitmap = Android.getImage(key);
                resolve(bitmap);
            }
        );
    },
    saveTiles: function (tileUrls) {
        // return Promise.
    },
    clear: function () {
        // return Promise.
    }
};

//*** From WebAppInterface.java ***\\
@JavascriptInterface
public Bitmap getImage(String key) { return parentActivity.getImage(key); }

//*** From MainActivity.java ***\\
public Bitmap getImage(String key) {
    String z, x, y;
    String[] strArray = key.split("/");
    if (settings.getString("OverlaymapSourceTitle", "") == "OpenStreetMap") {
        z = strArray[3];
        x = strArray[4];
        y = strArray[5].split("\\.")[0];
    } else {
        z = strArray[9];
        x = strArray[11];
        y = strArray[10];
    }
    Cursor cursor;
    cursor = db.rawQuery("SELECT _tile FROM Items WHERE _z=? AND _x=? AND _y=?", new String[]{z, x, y});
    if (cursor.getCount() > 0) {
        cursor.moveToFirst();
        byte[] byteArray = cursor.getBlob(cursor.getColumnIndex("_tile"));
        Bitmap bm = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
        cursor.close();
        return bm;
    }
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...