leaflet geoman无法捕捉问题的解决
问题 解决 无法 捕捉 Leaflet
2023-06-13 09:15:16 时间
花了2天时间将mapus里的bug定位到。
每当画线或面域的时候,无法捕捉,并且出现错误提示,但无法定位。
原来的代码如下:
// Render a new object
async function renderShape(snapshot, key) {
// var user = await checkAuth();
// if (await checkAuth() != false) {
if (snapshot.type == "draw" || snapshot.type == "line" || snapshot.type == "area") {
if (objects.filter(function(result) {
return result.id === key && result.user === snapshot.user
}).length == 0) {
// If the shape doesn't exist locally, create it
var line = L.polyline([
[snapshot.initlat, snapshot.initlng]
], {
color: snapshot.color,
// pmIgnore: false
});
if (snapshot.completed && (snapshot.type == "line" || snapshot.type == "area")) {
// If the shape is already finished, give it all its coordinates
line = L.polyline(snapshot.path, {
color: snapshot.color,
// pmIgnore: false
}); // 这里是否允许激活线段编辑
}
line.addTo(map); // 这里导致无法捕捉!!
修改后的代码如下
// Render a new object
async function renderShape(snapshot, key) {
// var user = await checkAuth();
// if (await checkAuth() != false) {
if (snapshot.type == "draw" || snapshot.type == "line" || snapshot.type == "area") {
if (objects.filter(function(result) {
return result.id === key && result.user === snapshot.user
}).length == 0) {
// If the shape doesn't exist locally, create it
if (snapshot.completed && (snapshot.type == "line" || snapshot.type == "area")) {
// If the shape is already finished, give it all its coordinates
line = L.polyline(snapshot.path, {
color: snapshot.color,
pmIgnore: false
}); // 这里是否允许激活线段编辑
line.addTo(map);// 放到这里就可以了。
} else {
var line = L.polyline([
[snapshot.initlat, snapshot.initlng]
], {
color: snapshot.color,
pmIgnore: false
});
}
原因分析:因为从数据库里读取图元,用上面这个rendershape方法添加到页面上,但是有些多段线不具备completed时,也被添加到页面上,但看不见,我估计是一些错误的数据——比如画了一半的多段线,按了取消键,这个时候数据存到数据库里了,但是completed=false。按照上述修改后,只将满足completed=true的多段线加到页面上。
相关文章
- 记录一次jenkins 部署vue 项目的问题及解决方法
- 解决 pyyaml 修改 yaml 文件之后无法保留原文件格式和顺序的问题
- 解决WinHTTP Web Proxy Auto-Discovery Service无法启动问题
- MySQL数据库执行Update卡死问题解决
- 如何解决power automate批量合并pdf后的文件顺序出错的问题?
- Mysql增量同步数据到elasticsearch的一些问题解决
- 了解决MSSQL数据库过大问题(mssql数据库太大)
- 解决MySQL本地无法连接的问题(mysql本地无法连接)
- 数据解决MySQL无法写入数据的问题(mysql不能写入)
- 解决Linux无法进入根目录问题(linux进入不了根目录)
- Linux磁盘监控:解决硬盘问题至关重要(linux磁盘监控)
- 【解决Linux系统下防火墙关闭问题】(关闭linux的防火墙)
- 解决Linux系统鼠标无响应问题(linux鼠标不能用)
- 轻松解决Redis缓存清除问题——Redis清缓存教程(redis清缓存)
- 如何解决MySQL无法卸载问题?(mysql无法卸载)
- 如何解决Linux下无法kill进程的问题?(linux无法kill)
- 文件解决Linux无法删除文件问题(linux不能删除)
- Linux下域名解析指南:解决DNS问题(linux下域名解析)
- 无法启动解决Linux WLAN0启动问题(linuxwlan0)
- 如何解决MySQL外网无法访问的问题?(mysql外网不能访问)
- 解决oracle数据库卡顿问题的有效技巧(oracle数据库卡)
- 解决Oracle安装过程中内存不足问题(安装oracle内存不足)
- 解决Mysql主从同步不断的问题(Mysql不停做主从)
- 如何解决MySQL下载速度缓慢的问题(mysql下载速度缓慢)
- 解决MySQL下载后无法运行的问题(mysql下载运行不了)
- 如何解决MySQL无法保存查询的问题(mysql 不能保存查询)
- MySQL无法通过IP地址进行访问的问题解决方法(mysql 不能ip访问)
- Oracle Flume带来的变革轻松解决大数据问题(oracle flume)
- 碰到MySQL无法启动1067错误问题解决方法
- c语言跳台阶问题的解决方法
- AJAX中文乱码问题探讨及解决