【发布时间】:2021-01-30 19:20:59
【问题描述】:
我正在扩展 Leaflet getTileUrl 以获得某种缓存图块。我使用 Vue,但它不应该影响任何东西。目前看起来是这样的:
//step 1
L.TileLayer.MyLayer = L.TileLayer.extend({
getTileUrl: function(coords) {
var url = this.getLayerUrl(coords.z, coords.x, coords.y);
return url;
}.bind(this)
});
//step 2
L.tileLayer.myLayer = function() {
return new L.TileLayer.MyLayer();
}
//step 3
L.tileLayer.myLayer().addTo(this.getParent('main-map').map);
问题在于 getLayerUrl 函数返回一个承诺。即使我尝试为 this.getLayerUrl 制作 getTileUrl async 而不是 await (并且还制作异步等待步骤 2 和 3)或放置 .then(function(result) {return result;} this.getLayerUrl 之后,Leaflet 在浏览器控制台中显示错误,它试图从 url 获取图块:GET http://localhost/project/public/ [object%20Promise]
另外我应该提到 this.getLayerUrl 为每个图块返回不同的 url,它实际上是一个 blob url,如:blob:http://localhost/f7c4298f-9e9d-423f-9d0b-3f7a301e433f 但如果正确返回了 url传单没有问题,并且正确显示了瓷砖。
【问题讨论】:
-
看起来传单需要同步计算磁贴 url。为什么会是异步的?只有从该 url 加载图像应该是异步的。
-
听起来更像是 Leaflet Grid Layer 的用例
标签: javascript caching promise leaflet