Leaflet 如何在标记定义中使用传单图标定义?

Leaflet 如何在标记定义中使用传单图标定义?,leaflet,Leaflet,我有一个传单标记,定义如下: var W0KCN3 = new L.marker(new L.LatLng(39.2859182,-94.667236),{ opacity: 0.5, contextmenu: true, contextmenuWidth: 140, contextmenuItems: [{ text: 'Click here to add mileage circles', callback: circleKoord

我有一个传单标记,定义如下:

    var W0KCN3 = new L.marker(new L.LatLng(39.2859182,-94.667236),{
     opacity: 0.5,
     contextmenu: true, 
     contextmenuWidth: 140,
     contextmenuItems: [{ text: 'Click here to add mileage circles',
     callback: circleKoords}], 
icon:  firstaidicon,
title:`marker_1 ` }).addTo(fg).bindPopup(`1<br>Northland ARES Platte Co. Resource Center<br>Kansas City, MO<br><br>39.2859182, -94.667236<br>EM29PG`).openPopup(); 
    // Define a PoiIcon class
var PoiIcon = L.Icon.extend({
    options: {
        iconSize: [32, 37]
    }
});

// Create five icons from the above PoiIcon class
var firstaidicon = new PoiIcon({iconUrl: 'images/markers/firstaid.png'}),
    eocicon = new PoiIcon({iconUrl: 'images/markers/eoc.png'}),
    policeicon = new PoiIcon({iconUrl: 'images/markers/police.png'}),
    skywarnicon = new PoiIcon({iconUrl: 'images/markers/skywarn.png'}),
    repeatericon = new PoiIcon({iconUrl: 'markers/repeater.png'});
我想在marker定义中使用Firstaid图标,但我正在努力使其生效。 我试过:

icon:  firstaidicon,
但现在我得到了

Uncaught TypeError: Cannot read property 'createIcon' of undefined 
来自传单中的各种位置。js:5 我做错了什么?

如中所示,只需将自定义图标变量传递给标记器的
图标
选项:

var firstaidicon=L.icon();
L.标记器(板条){
图标:firstaidicon//代替新的L.firstaidicon
});
注意:确保为每个标记创建不同的图标实例(即使选项相同)。通过扩展传单图标类,教程中还显示了一种简单的方法:

var firstaidiconClass=L.Icon.extend({
选项:{
iconUrl:'images/markers/firstaid.png',
iconSize:[32,37]
}
});
L.标记器(板条){
图标:新的firstaidiconClass
});

因为每个标记都是由Ajax从DB构建的,所以我认为事情发生的时间会导致错误。通过将图标定义放在标记定义中,一切都起了作用。因此,新的图标调用是

icon: L.icon({iconUrl: `images/markers/skywarn.png`, iconSize: [32, 34]}),

离完成还有一行

出于好奇,如果每个标记具有完全相同的属性,为什么需要为它们创建新的图标实例?他们不只是在地图上创建实际图像的“模板”吗?@nikoshr:不幸的是,这是传单图标的陷阱。对于简单的情况,这并不重要,但在边缘情况下,它确实会产生bug。通常在更改图标实例选项时,也可以通过Marker setIcon()进行更改。请参阅和传单,我已调整我的问题以反映新的准则。但仍然从传单中得到了未捕获的类型错误。很难说只有代码片段,没有复制示例。我能想到的最可能的原因是,在分配icon变量之前,您尝试使用它。