任何人都可以帮我解决如何在FeatureGroup中更新传单的标记吗?我在组中有数百个标记,但是想要用户点击标记的图标进行更改。到目前为止我的代码:
var swpts=new L.FeatureGroup();
var data; //an array of information for the markers
for (i=0; i<data.length; i++){
ticon=L.icon({
...//some stuff that has different types of icons for the different markers
});
var tmarker=L.marker([data[i].lat,data[i].lon], {icon: ticon});
tmarker.on('click', function(i){
return function(){
tmarker.setIcon(icons[include(nidilist,nidi)]);
//function to pull a new kind of icon out of an array icons
//plus other things to happen when the listener is activated which require
//access to i
};
}(i),false);
swpts.addLayer(tmarker);
};
swpts.addTo(map);
听众可以正常使用其他操作,但我似乎无法操纵FeatureGroup
中的实际标记。通常我没有问题,标记能够在监听器中引用自己,所以我不确定为什么.setIcon
在这里不起作用。我还尝试添加一个只更改图标的简单监听器,但这也不起作用。感谢您提供任何帮助或建议。
答案 0 :(得分:0)
你有没有试过在浏览器开发工具中调试或只是在返回函数中控制sth而不是.setIcon()来查看它是否真的被调用了?
tmarker.on('click', function(i){
return function(){
console.info('test if called when click');
//tmarker.setIcon(icons[include(nidilist,nidi)]);
};
}(i),false);
实际上我猜你只是试图返回一个匿名函数(永远不会被执行)所以它可能无法正常工作。并且.on()[api] https://www.mapbox.com/mapbox.js/api/v2.0.1/l-events/ <中的参数可能有问题。 / p>
tmarker.on('click', function(){
console.info('this will be called when click');
//tmarker.setIcon(icons[include(nidilist,nidi)]);
});