与ngRepeat + map.invalidateSize()的ng传单指令问题

时间:2015-08-13 15:55:54

标签: javascript angularjs angularjs-ng-repeat leaflet angular-leaflet-directive

我有一个页面可以根据异步调用生成一系列地图。首次加载地图时,它们会丢失图块,如下图所示。

enter image description here

我可以通过调用map.invalidateSize()重新绘制每个中的切片来解决此问题。目前我在加载时创建8,其余的通过Angular指令分页。切换到任何其他8或来回切换将"修复"第8个。

由于前8个是ngRepeat的乘积,因此它们都具有相同的ID。理论上,我可以将索引或其他字符串修改添加到8个映射中的每个映射的id中,并创建下面代码的循环以在每个映射上运行map.invalidateSize(),但这似乎是一个环形交叉路口,整体上很差解决问题的方法。有人有更好的建议吗?

leafletData.getMap('leafletMap-trips').then(function(map) {
    setTimeout(function () { map.invalidateSize() });
});

1 个答案:

答案 0 :(得分:2)

事实上,不,不。传单API仅允许每个映射的大小失效,因此您几乎需要按照解释的那样进行操作。