所以,我在多伦多建立一张取水许可地图。正在进行的工作: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?
答案 0 :(得分:0)
不要绑定eachLayer
循环内的事件,只需执行featureLayer.on('myevent',function(e) {e.layer.setStyle(MY_NEW_STYLE)})