如何更改传单标记聚类扩展的单个标记节点图标?
How can i change the single marker node icon of the leaflet marker clustering extension?
我想为传单标记聚类扩展的单值标记使用自定义图标。使用以下代码片段更改传单的默认图标不起作用:
var newIcon = L.Icon.Default.extend({
options: {
iconUrl: 'new_icon_location.png'
}
});
至于在 Leaflet 中创建图标,语法为:
var newIcon = L.icon({
iconUrl: 'new_icon_location.png'
});
如果您希望 all 标记使用该图标而不是默认图标(即您认为的 L.Icon.Default
),您应该覆盖 icon
L.Marker
class 的选项(当然是在开始实例化标记之前):
L.Marker.mergeOptions({
icon: newIcon
});
关于更改 Leaflet.markercluster 插件使用的默认图标,您应该使用选项 iconCreateFunction
:
var mcg = L.markerClusterGroup({
iconCreateFunction: function (cluster) {
// create an icon, possibly based on cluster properties.
return clusterIcon;
}
});
现在,当您说“为传单标记聚类的单值标记使用自定义图标”时,我不确定您打算做什么。我猜你使用选项 singleMarkerMode
并且你希望将特定图标应用到 "clusters of size 1" (实际上是普通标记,哪个图标被 Marker Cluster 插件覆盖)?
在那种情况下,一个简单的解决方案就是不使用 singleMarkerMode
选项,而是让所有的个人标记都使用该特定图标。可能确实通过替换标记的默认图标。
但是如果出于某种原因您仍想使用 singleMarkerMode
选项,那么它也没有那么复杂。例如,您可以这样做:
var mcg = L.markerClusterGroup({
singleMarkerMode: true,
iconCreateFunction: function (cluster) {
var childCount = cluster.getChildCount();
return childCount === 1 ? iconForSize1 : someOtherIcon;
}
});
我想为传单标记聚类扩展的单值标记使用自定义图标。使用以下代码片段更改传单的默认图标不起作用:
var newIcon = L.Icon.Default.extend({
options: {
iconUrl: 'new_icon_location.png'
}
});
至于在 Leaflet 中创建图标,语法为:
var newIcon = L.icon({
iconUrl: 'new_icon_location.png'
});
如果您希望 all 标记使用该图标而不是默认图标(即您认为的 L.Icon.Default
),您应该覆盖 icon
L.Marker
class 的选项(当然是在开始实例化标记之前):
L.Marker.mergeOptions({
icon: newIcon
});
关于更改 Leaflet.markercluster 插件使用的默认图标,您应该使用选项 iconCreateFunction
:
var mcg = L.markerClusterGroup({
iconCreateFunction: function (cluster) {
// create an icon, possibly based on cluster properties.
return clusterIcon;
}
});
现在,当您说“为传单标记聚类的单值标记使用自定义图标”时,我不确定您打算做什么。我猜你使用选项 singleMarkerMode
并且你希望将特定图标应用到 "clusters of size 1" (实际上是普通标记,哪个图标被 Marker Cluster 插件覆盖)?
在那种情况下,一个简单的解决方案就是不使用 singleMarkerMode
选项,而是让所有的个人标记都使用该特定图标。可能确实通过替换标记的默认图标。
但是如果出于某种原因您仍想使用 singleMarkerMode
选项,那么它也没有那么复杂。例如,您可以这样做:
var mcg = L.markerClusterGroup({
singleMarkerMode: true,
iconCreateFunction: function (cluster) {
var childCount = cluster.getChildCount();
return childCount === 1 ? iconForSize1 : someOtherIcon;
}
});