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变量之前,您尝试使用它。