前言:本来觉得不值一提,结果解决了一次 又发生了一次,遂写此文章,有缘人可以少走一点弯路。
问题产生与闲言碎语
windyAPI生成的地图实例,底图中台湾部分,一为繁体,二缩放到某个级别时,中国本土属中国人民共和国,台湾那标注中华民国,说实话,我还是强烈鄙视搞地图政治的第三方。要说,包括OSM地图也是有问题的。leaflet甚至也是公然掺杂政治,相信如果你最近这段时间有上过leaflet官网应该能明白我在说什么。软件不该成为政治博弈的工具。
那这个主要还是接手上个人留下来的问题,废话不多说,直接上解决方案。
解决方法
由于时间久远(几个月?),我已经不太记得当时的追溯的思路,但可以确定的是,尝试了不少,本来想找出他那个有问题的底图图层删掉,结果还是不行。因为leaflet的设计就是啥√8东西都塞一堆,尝试了一会,看到里面200多个layer人都傻了。
遂思考,我需要解决的是他的问题底图,而他的效果我即使清除了,他也会继续刷新加载。往往大道至简,能解决问题的码农就是好码农,暴力的直接给他干掉 应该可以。于是=》
windyInit(options, windyAPI => {
const {
store, map } = windyAPI;
// that.imgLayer.addTo(map);
that.map = map;
...
// 核心代码在以下3行
map.eachLayer(function(layer){
map.removeLayer(layer)
});
that.imgLayer.addTo(map)
...
})
值得注意的一点
应该可以看到,这是一个异步函数为了保证确定能解决问题,请确保在暴力清除它所有图层之前的函数不会报错。以免没走到下面就报错了,地图自然还是会出错的。