前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leaflet geoman无法捕捉问题的解决

leaflet geoman无法捕捉问题的解决

作者头像
hotqin888
发布2023-02-26 21:10:12
5100
发布2023-02-26 21:10:12
举报
文章被收录于专栏:hotqin888的专栏hotqin888的专栏

花了2天时间将mapus里的bug定位到。

每当画线或面域的时候,无法捕捉,并且出现错误提示,但无法定位。

原来的代码如下:

代码语言:javascript
复制
  // 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); // 这里导致无法捕捉!!

修改后的代码如下

代码语言:javascript
复制
  // 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的多段线加到页面上。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档