Похоже, вы пропустили setIcon()
метод L.Marker
.Я также проверил бы, что L.Layer
на самом деле L.Marker
перед вызовом любой L.Marker
функциональности, просто для здравого смысла кода.Например:
var redIcon = L.icon({ /* ... */ });
var omnivoreLayer = omnivore.kml('icons.kml')
.on('ready', function() {
omnivoreLayer.eachLayer(function(layer) {
if (layer instanceof L.Marker) {
layer.setIcon(redIcon);
}
});
})
.addTo(map);
Однако в документации Leaflet-Omnivore говорится, что лучший способ применить пользовательский стиль к слою Omnivore - создать экземпляр L.GeoJSON
с требуемыми фильтрами истиль, а затем передать это фабричному методу Omnivore.Я предлагаю вам ознакомиться с учебником Leaflet по GeoJSON , чтобы ознакомиться с этим.
Поэтому вместо того, чтобы полагаться на обработчик событий on('ready')
(который изменит маркерыпосле того, как они будут созданы), это сэкономит немного времени, создав маркеры непосредственно с желаемым стилем:
var omnivoreStyleHelper = L.geoJSON(null, {
pointToLayer: function (feature, latlng) {
return L.marker(latlng, {icon: redIcon});
}
});
var omnivoreLayer = omnivore.kml('icons.kml', null, omnivoreStyleHelper);