传单1.2 bug featureGroup初始化问题

  

,,最新项目在使用传单做地图,需要增加标注,意外发现,传单竟然没有良好标签的功能,还好,传单的插件中有不少扩展。

,,最后选择”的传单。LabelTextCollision”,演示采用的是传单版本“1.0.1 + ffcfcc1"。当我把传单换成1.2.0以后,

var  p =, L.polyline (   (,(139.749213,35.695786,,),   (139.748213,35.696786,,),   (139.747213,35.695786,,),,,{   weight : 12,   时间:color  & # 39; # fe57a1& # 39;   text : & # 39; Leaflet.LabelTextCollision ! ! ! ! ! ! ! ! & # 39;   }).addTo(地图);   var  layers =, L.featureGroup () .addTo(地图);   for  (, var  index 拷贝数据),{   var  d =,数据(指标);   var  latlng =, L.latLng d (d [0], [1]);   var  c =, L.circleMarker (latlng, {   radius : 0,   时间:text  latlng.toString ()   });   layers.addLayer (c);   if  (index ==, 3000), {   打破;   }   }


其中"}).addTo(地图);”和“layers.addLayer (c);“都会报错,其中一个报错截图如下

按?.2

定位问题到指定位置

按?.2


后来,我从传单的各个版本源码页找到了1.01和1.2.0的源码,经比较,发现1.0.1画布中。js的写法

L.Canvas =, L.Renderer.extend ({   ,,,onAdd:, function  (), {   ,,,,,,,L.Renderer.prototype.onAdd.call(这个);   ,,,,,,,this._layers =, this._layers  | |, {};   ,,,,,,,//,Redraw  vectors  since  canvas  is  cleared  upon 去除,   ,,,,,,,//,拷贝case  of  removing 从而renderer  itself 得到,地图。   ,,,,,,,this._draw ();   ,,,},


在1.2.0中的,canvas.js 改为

export  var  Canvas =, Renderer.extend ({   ,,,getEvents:, function  (), {   ,,,,,,,var  events =, Renderer.prototype.getEvents.call(这个);   ,,,,,,,events.viewprereset =, this._onViewPreReset;   ,,,,,,,return 活动;   ,,,},   ,,,_onViewPreReset:, function  (), {   ,,,,,,,//,Set  a  flag  so  that  a  viewprereset + moveend + viewreset  only  updates& redraws 一旦   ,,,,,,,this._postponeUpdatePaths =,真的;   ,,,},   ,,,onAdd:, function  (), {   ,,,,,,,Renderer.prototype.onAdd.call(这个);   ,,,,,,,//,Redraw  vectors  since  canvas  is  cleared  upon 去除,   ,,,,,,,//,拷贝case  of  removing 从而renderer  itself 得到,地图。   ,,,,,,,this._draw ();   ,,,},

以及渲染器。js的

export  var  Renderer =, Layer.extend ({   ,,,//@section   ,,,//,@aka  Renderer 选项   ,,,选择:,{   ,,,,,,,//,@option 填充:Number  0.1=,   ,,,,,,,//,请,much 用extend 从而clip  area  around 从而map  view  (relative 用its 大小)   ,,,,,,,//,如只0.1,would  be  10%, of  map  view 拷贝each 方向   ,,,,,,,填充:0.1   ,,,},   ,,,初始化:,function (选项),{   ,,,,,,,Util.setOptions(,,选项);   ,,,,,,,Util.stamp(这个);   ,,,,,,,this._layers =, this._layers  | |, {};   ,,,},

所以问题就显而易见,是在代码重构的时候,将这个。_layers初始化提升到了父类初始化中,然而,Javascript的编码并不能保证初始化函数一定被调用,就比如我这次遇到的,

var  layers =, L.featureGroup () .addTo(地图);

<强>

在1.2.0的leaflet-src。null

传单1.2 bug featureGroup初始化问题