Javascript 更改传单上的图标
基于这个问题,我做了这样一件事:Javascript 更改传单上的图标,javascript,leaflet,Javascript,Leaflet,基于这个问题,我做了这样一件事: // onEachFeature function onEachFeature(feature, layer) { layer.on('click', function (e) { // change icon console.log(layer.options.icon); e.target.setIcon(myIconReplc); }); } var myIconReplc = L.Ic
// onEachFeature
function onEachFeature(feature, layer) {
layer.on('click', function (e) {
// change icon
console.log(layer.options.icon);
e.target.setIcon(myIconReplc);
});
}
var myIconReplc = L.Icon.extend({
options: {
iconUrl: "../resources/img/map/icons/orange/ambulance.png",
iconSize: [30,35],
shadowUrl: "../resources/img/map/icons/shadow.png",
shadowAnchor: [8, 20],
shadowSize: [25, 18],
iconSize: [20, 25],
iconAnchor: [8, 30] // horizontal puis vertical
}
});
我有一个错误:uncaughttypeerror:undefined不是一个函数
怎么了
---live:您应该创建实例(在
myiconrelc
之前添加new
),如下所示
var myIconReplc = L.Icon.extend({
options: {
iconUrl: "../resources/img/map/icons/orange/ambulance.png",
iconSize: [30,35],
shadowUrl: "../resources/img/map/icons/shadow.png",
shadowAnchor: [8, 20],
shadowSize: [25, 18],
iconSize: [20, 25],
iconAnchor: [8, 30] // horizontal puis vertical
}
});
layer.on('click', function (e) {
e.target.setIcon(new myIconReplc);
});
您忘记了声明您的
myiconrelc
的new
实例
更改:
e.target.setIcon(myIconReplc);
致:
如果您希望能够像手册中的大多数类一样,在不使用新的的情况下声明图标,您可以执行以下操作:
// Normal extending
var MyIconReplc = L.Icon.extend({
options: {
iconUrl: "../resources/img/map/icons/orange/ambulance.png",
iconSize: [30,35],
shadowUrl: "../resources/img/map/icons/shadow.png",
shadowAnchor: [8, 20],
shadowSize: [25, 18],
iconSize: [20, 25],
iconAnchor: [8, 30] // horizontal puis vertical
}
});
// Shorthand
var myIconReplc = function (options) {
return new MyIconRepl(options);
}
现在您可以执行以下操作:
var icon = new MyIconReplc();
以及:
您可能已经注意到,创建传单对象时没有使用新关键字。这是通过用小写工厂方法补充每个类来实现的
请参阅:(类工厂下)thks以获取帮助:)thks以获取帮助和其他说明
var icon = new MyIconReplc();
var icon = myIconReplc();