Мне нужно добавить несколько (например, 20) маркеров на карту открытого слоя.
Сейчас я могу это сделать, но я уверен, что это не самый эффективный способ сделать это.
Это код, который я нашел в Интернете:
var addressOSM = new ol.Map({
controls: null,
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
center: ol.proj.fromLonLat([lng, lat]),
zoom: 15
})
});
Чтобы добавить маркеры, я использую этот код:
for (let i = 0; i < data.length; i++) {
addressOSM.addLayer(createMarker(data[i].longitude, data[i].latitude, data[i].id)));
}
Функция createMarker
:
function createMarker(lng, lat, id) {
var vectorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [new ol.Feature({
geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(lng), parseFloat(lat)])),
id: id
})]
}),
style: new ol.style.Style({
image: new ol.style.Icon({
anchor: [0.5, 1],
anchorXUnits: "fraction",
anchorYUnits: "fraction",
src: "url_to_png.png"
})
})
});
return vectorLayer;
}
Этот код работает, но он довольно медленный.
Как мне улучшить его, чтобы он был более эффективным?