记录一次leaflet的问题,leaflet版本导致editable异常,修改过程中又遇到Tile错乱

博客讲述了在使用Leaflet编辑功能时遇到的polygon透明问题和Tile加载错乱的解决过程。问题起因于多引用导致的editable异常及通过loadmould特殊方式引入的leaflet和插件。解决方法包括移除旧的引用方式,采用npm安装leaflet并import,以及引入缺失的leaflet.css来修复Tile错乱问题。
摘要由CSDN通过智能技术生成

记录一次leaflet的问题,leaflet多引用导致editable异常,修改过程中又遇到Tile错乱

问题起因

要做一个框选要素的功能,框选用了leafleat.editable插件。然后实现了demo,运用到项目上后,插件框选居然没有
正常情况

异常情况
如图画出来的polygon是透明的。

求索过程

1.首先想到是某个全局样式影响到了绘制的样式,注释所有全局样式无果。
2.既然没有样式影响,那么我在绘制过程中更改样式是否可以呢?写代码,终无果。
3.那么既然上面两种都无果,那么肯定是哪里发送错误了。下面是排查的过程:
在这里插入图片描述

在这里插入图片描述
首先发现消失的部分是svg的path。那么为什么会消失呢,请看图中红圈部分,消失的为M0 0,即没有绘制路径,那么问题肯定就在这了。

解决过程

1.由于项目是接手的,发现之前引用leaflet和插件的方式有点特别。没有使用npm安装,而是引入了源码,再通过loadmould的方式引入。这导致了后续引入插件都需要在loadmould加源码配置。。。这次还导致了这个问题,所以这次下定决心把它干掉换成npm安装。
2.经过测试,用leaflet加载geojson是可以正常显示的,那么原因肯定是在editable了,后续我发现了这个错,印证了我的猜想。
在这里插入图片描述
即editable是由我npm安装后import进来的,而这个时候leaflet还没引入呢。所以解决方法就是把leaflet也import进来。
3.那么引入leaflet后我又遇到了一个大坑。
在这里插入图片描述
首先天地图变成这副鬼样了(chinatmsprodive直接没了,这里是通过原生leaflet加载的)

解决Tile错乱

1.首先想到的是坐标系的问题,同意坐标系4326,无效,继续乱。
2.又是全局样式的锅?又注释了一遍全局样式,无果
3.那就得看源码了吧。好了,研究了一边leaflet创建tile、加载tile的源码,没有看出所以然,和正常加载的demo数据也差不多。真头大
4.突然发现tile的加载范围超出了视窗
在这里插入图片描述
那会不会是map的div的长宽不对(因为项目的map经过了嵌套,有可能改动的时候改变了长宽),无果
5.点开F12点击tile,发现tile居然没有leaflet.css的样式。。这也。。为啥我demo明明是正常获得了leaflet.css(难道是webpack打包的问题?没搞明白,等大佬解答)
6.那么找到问题所在就好解决了,引入css即可

import 'leaflet/dist/leaflet.css'

解决!!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值