Я следую этому руководству: https://kuamoto.wordpress.com/2016/02/26/myth-1-cant-make-offline-apps/, чтобы получать офлайн-карты в приложении ionic 2 на базе базы данных sqlite (.mbtiles). Я использую плагин Cordova Sqlite для запроса базы данных, как показано в этом репо: https://github.com/wilblack/offline-map-exampleНевозможно преобразовать BLOB в String с плагином Cordova sqlite для офлайн-карт
База данных содержит Blob, соответствующую комбинациям x, y и z, которые подходят для местоположения карты, которую я хочу отобразить.
мне удалось открыть базу данных и запросить его, но я застрял со следующей ошибкой:
unknown error (Sqlite code 0): Unable to convert BLOB to string, (OS error - 2:No such file or directory)"
Это, кажется, общая проблема, но я нашел только решения для Android напрямую. Вот мой код машинописного текста:
getTileUrl: function(tilePoint, zoom, tile) {
var z = this._getZoomForUrl();
z = Math.round(z);
var x = tilePoint.x;
var y = tilePoint.y;
y = Math.pow(2, z) - y - 1;
var base64Prefix = 'data:image/gif;base64,';
this.mbTilesDB.transaction((tx) => {
tx.executeSql("SELECT tile_data FROM tiles WHERE zoom_level = ? AND tile_column = ? AND tile_row = ?;", [z, x, y], (tx, res) => {
//Never get here
tile.src = base64Prefix + res.rows.item(0).tile_data;
}, (err, msg) => {
console.log('[MapPage.getTileUrl] error with executeSql', err);
});
}, (err, msg) => {
console.log("[MapPage.getTileUrl] Transaction err:", err);
});
},
_loadTile: function(tile, tilePoint, zoom) {
tile._layer = this;
tile.onload = this._tileOnLoad;
tile.onerror = this._tileOnError;
this.getTileUrl(tilePoint, zoom, tile);
}
Код разрывается сразу после запуска запроса. Если я запустил запрос в браузере базы данных, я получаю результат как Blob.
Вопрос закрыт к этому: How to set tile_data from .mbtiles file as tiles for leaflet? за исключением того, что я даже не получить результат из запроса
Спасибо за вашу помощь