无法获取featureLayer.setStyle以删除mouseout上的突出显示(mapbox / leaflet)

时间:2015-05-14 16:54:29

标签: javascript leaflet mapbox

所以,我在多伦多建立一张取水许可地图。正在进行的工作:http://pennybeames.net/maps/PermitsTO.html

我使用L.mapbox.featureLayer添加我的标记:

var permitsLayer = L.mapbox.featureLayer(permits,  {
      pointToLayer: function (feature, latlng) {
      return L.circleMarker(latlng, permitsStyle(feature));}
     }).addTo(map);

我从Leaflet等值线示例工作(http://leafletjs.com/examples/choropleth.html)获得了自定义信息控件。

我更改样式并更新自定义控件中的信息,如下所示:

featureLayer.eachLayer(function (layer) {
        layer.on('mousemove', function (e) {
            // highlight feature
                layer.setStyle({
                    weight: 2,
                    opacity: 1,
                    fillOpacity: 0.9
                });

                //update properties in DomUtil
                info.update(layer.feature.properties);
        });
   });   

所有工作都顺利进行,直到我们进行鼠标移除。信息控件更新正常(切换到新目标的属性或恢复到其空状态),但样式不会更改。重点仍然存在。

featureLayer.eachLayer(function (layer) {
        layer.on('mouseout', function (e) {
                  //reset style
                  featureLayer.setStyle(permitsStyle);

                  //empty properties in DomUtil
                  info.update();
         });
   });  

我没有收到任何错误,但我也没有看到任何变化。我试过了

featureLayer.resetStyle(e.target)

但是我得到的只是Uncaught TypeError:featureLayer.resetStyle不是函数。

可能有一个非常简单的问题,但它让我不知所措。洞察力,hivemind?

1 个答案:

答案 0 :(得分:0)

不要绑定eachLayer循环内的事件,只需执行featureLayer.on('myevent',function(e) {e.layer.setStyle(MY_NEW_STYLE)})