leaflet.draw 踩坑

539 阅读1分钟

1、官网api中修改toolbar的文字为

var modifiedDraw = L.drawLocal.extend({
          draw: {
            toolbar: {
              buttons: {
                polygon: '添加一个多边形'
              }
            }
          }
        });

浏览器报错:"TypeError: L.drawLocal.extend is not a function" 查询github的issue得到解决方案: L.drawLocal.draw.toolbar.buttons.polygon="绘制面"

真的好奇怪,2017年有人提出的问题,官方到现在都没有修改api文档,乌鸡鲅鱼。。。。

2、浏览器报错 Cannot read property 'hasOwnProperty' of undefined

TypeError: Cannot read property 'hasOwnProperty' of undefined
    at NewClass.setStyle (leaflet-src.js?9eb7:7853)
    at NewClass.removeHooks (leaflet.draw-src.js?2c0f:1967)
    at eval (leaflet.draw-src.js?2c0f:1833)
    at NewClass._eachVertexHandler (leaflet.draw-src.js?2c0f:1816)
    at NewClass.removeHooks (leaflet.draw-src.js?2c0f:1832)
    at NewClass.eval (leaflet.draw-src.js?2c0f:2302)
    at NewClass.fire (leaflet-src.js?9eb7:593)
    at NewClass.removeLayer (leaflet-src.js?9eb7:6681)
    at NewClass.removeLayer (leaflet-src.js?9eb7:6823)
    at NewClass.removeLayer (leaflet-src.js?9eb7:6969)

翻了好久的github,终于找到原因 Prevents calling setStyle with undefined argument by same31 · Pull Request #952 · Leaflet/Leaflet.draw · GitHub image.png

leaflet.draw.js中找到 poly.setStyle(poly.options.editing) 改成

if (poly.options.editing) {
    poly.setStyle(poly.options.editing)
}