Я работаю с Ionic 3 для создания простого приложения карты, чтобы представить карту, которую я использую leaflet (печатная версия) с OpenStreet плитки карты
Я хочу предоставить пользователю возможность загружать и кэшировать карту, поэтому я нашел leaflet-offline здесь и хотел использовать его, поскольку он позволяет мне использовать мой localstorage для хранения изображений.
Теперь моя проблема возникает из-за того, что я пытаюсь смешать машинопись с javascript и не могу понять, как заставить ее работать правильно.
Что я сделал и в чем проблема:
Я установил версию с напечатанным буклетом, а затем версию javascript для автономного буклета.
Теперь я импортировал их на своей странице следующим образом:
import * as leaflet from 'leaflet';
import 'leaflet-offline';
Теперь, если я пытаюсь использовать библиотеку, как описано в примере, я получаю ошибку машинописного текста, которая указывает на то, что свойство offline отсутствует в объекте TileLayer.
leaflet.tileLayer.offline('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', tilesDb, {
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
subdomains: 'abc',
minZoom: 13,
maxZoom: 19,
crossOrigin: true
}).addTo(this.map);
Чтобы избежать этого, я добавил
export namespace tileLayer {
function wms(baseUrl: string, options?: WMSOptions, offline?: any): TileLayer.WMS;
function offline(url?: any, tilesDb?: any, options?: any): any;
}
функция offline
находится в пространстве имен самого tileLayer.
Текущая проблема
В тот момент, когда я пытаюсь запустить приложение, все работает нормально, за исключением самой карты, я не вижу ее, и при ее просмотре возникает ошибка:
ОШИБКА TypeError: Невозможно прочитать свойство 'then' из null в
NewClass.getTileUrl (vendor.js: 163411) в NewClass.createTile
(vendor.js: 163389) в NewClass._addTile (vendor.js: 79419) в
NewClass._update (vendor.js: 79310) в NewClass._setView
(vendor.js: 79171) в NewClass._resetView (vendor.js: 79129) в
NewClass.fire (vendor.js: 68787) в NewClass._move (vendor.js: 72343) в
NewClass._onZoomTransitionEnd (vendor.js: 72800) в
NewClass._catchTransitionEnd (vendor.js: 72732)
Я уверен, что делаю какую-то глупую ошибку, но я потерял много времени на эту проблему.
Кто-нибудь знает, как решить эту проблему?