С прототипом ниже я добавляю множество функций в шагах в osm. Я загружаю около 8500 функций multipolygon. У некоторых из них есть много координат, поэтому всего около 150 МБ текстовых данных. Загрузка их по одному приводит к краху браузера. Загрузка его в куски работает, но это тоже не быстро. Особенно, если вы хотите прокручивать или увеличивать масштаб после завершения загрузки. Я немного стесняюсь загружать все это за один раз, так как это 150 МБ данных.Как повысить производительность при вставке большого количества функций в карту с помощью leaflet.js
Какие варианты я должен улучшить? Чтобы быть ясным: я не говорю о загрузке. Я говорю об рендеринге карты с функциями.
Вот код заглушки:
addToMap = function (id, totalCount) {
var idTo = id+99;
jQuery.get('getData.php', {id: id, idTo: idTo}, function (result) {
var geojson;
function onEachFeature(feature, layer) {
layer.on({
mouseover: highlightFeature,
mouseout: resetHighlight,
click: zoomToFeature
});
}
function resetHighlight(e) {
geojson.resetStyle(e.target);
info.update();
}
geojson = L.geoJson(result, {
style: getStyle,
onEachFeature: onEachFeature
}).addTo(map);
if (id < totalCount) {
jQuery('#count').html(idTo+' of '+totalCount);
addToMap(idTo+1, totalCount);
} else {
jQuery('#loader').remove();
}
}, 'json');
}
Если эти функции являются статическими, вы можете пойти на рендеринг на стороне сервера. Если они динамические, уменьшите количество одновременных функций, чтобы показать или уменьшить их сложность или попытаться сгруппировать их. – scai