Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改传单上的图标_Javascript_Leaflet - Fatal编程技术网

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();