我正在尝试根据某些要素属性设置单个标记或大小为1的簇的样式。
var markers = L.markerClusterGroup();
function onEachFeature(feature, layer) {
if (feature.properties.EncounterType && feature.properties.Year) {
layer.bindPopup(feature.properties.EncounterType + " in " +
feature.properties.Year);
}
}
function style(feature) {
switch (feature.properties.EncounterType) {
case 'Shooting':
return {
color: "ff0000"
};
case 'Sighting':
return {
color: "0000ff"
};
case 'Hunting':
return {
color: "ff0000"
};
}
}
var geoJsonLayer = L.geoJSON(storer, {
onEachFeature: onEachFeature
}, {
style: style
});
markers.addLayer(geoJsonLayer);
map.addLayer(markers);
onEachFeature
函数成功创建弹出窗口。但是,样式函数不会更改大小为1的簇的颜色。我在初始化markerclustergroup时尝试使用iconCreateFunction
,但是,这也没有用。
答案 0 :(得分:0)
您的style
选项在调用L.geoJSON
工厂的第三个参数中分开,而它应该放在第二个参数中,与onEachFeature
选项一起。
var geoJsonLayer = L.geoJSON(storer, {
onEachFeature: onEachFeature,
style: style
});
但这可能不是你问题的唯一原因。
style
选项将应用于矢量形状(折线,多边形等),即非点数据。它也可能适用于圆形标记,可用于Point
类型几何,但您必须明确创建它们(通常通过pointToLayer
选项)。
Leaflet.markercluster无法处理这些非点数据。
因此,如果您看到"大小为1"的群集(我猜您的意思是标记),它们来自Point
GeoJSON数据中的无样式 storer
类型几何。
这是一个正常的标记:
这是无法设置样式的PNG图像。
如果您想自定义Point
几何图形的外观,请使用custom icons,提供此类自定义图标的plugin或Circle Markers来修改颜色轻松(包括通过style
选项)。
例如,如果您要选择最后一个选项,则可以执行以下操作:
var geoJsonLayer = L.geoJSON(storer, {
pointToLayer: function (geoJsonPoint, latlng) {
return L.circleMarker(latlng);
},
onEachFeature: onEachFeature,
style: style
});