У меня есть веб-карта Leaflet, которая отображает языки, на которых говорят в опросе Американского сообщества.
Используется один Geo JSON, а затем я назначаю переменную для каждого языка на основе атрибутов этого Geo JSON.
Однако кажется, что он загружает Geo JSON (из JS) каждый раз, когда загружается переменная, и значительно замедляет страницу.
Есть ли способ загрузить Geo JSON только один раз, а затем назначить переменные на основе атрибутов?
Ниже вы можете увидеть образец моего скрипта и полный сайт. здесь: https://github.com/jaramana/Language_Explorer
var English;
function style_English(feature) {
return {
weight: 1,
opacity: .25,
color: getColor(feature.properties.B16001_Speak_only_English_P),
fillOpacity: .7,
fillColor: getColor(feature.properties.B16001_Speak_only_English_P),
};
}
English = L.geoJson(B16001, {
style: style_English,
interactive: false,
});
// Add popups to the layer
English.bindPopup(function (layer) {
// This function is called whenever a feature on the layer is clicked
console.log(layer.feature.properties);
// Render the template with all of the properties. Mustache ignores properties
// that aren't used in the template, so this is fine.
return Mustache.render(popupTemplate_English, layer.feature.properties);
});
var Spanish;
function style_Spanish(feature) {
return {
weight: 1,
opacity: .5,
color: getColor(feature.properties.B16001_Spanish_or_Spanish_Creole_P),
fillOpacity: .7,
fillColor: getColor(feature.properties.B16001_Spanish_or_Spanish_Creole_P),
};
}
Spanish = L.geoJson(B16001, {
style: style_Spanish,
interactive: false,
});
// Add popups to the layer
Spanish.bindPopup(function (layer) {
// This function is called whenever a feature on the layer is clicked
console.log(layer.feature.properties);
// Render the template with all of the properties. Mustache ignores properties
// that aren't used in the template, so this is fine.
return Mustache.render(popupTemplate_Spanish, layer.feature.properties);
});
var French;
function style_French(feature) {
return {
weight: 1,
opacity: .25,
color: getColor(feature.properties.B16001_French_incl_Patois_Cajun_P),
fillOpacity: .7,
fillColor: getColor(feature.properties.B16001_French_incl_Patois_Cajun_P),
};
}
French = L.geoJson(B16001, {
style: style_French,
interactive: false,
});
// Add popups to the layer
French.bindPopup(function (layer) {
// This function is called whenever a feature on the layer is clicked
console.log(layer.feature.properties);
// Render the template with all of the properties. Mustache ignores properties
// that aren't used in the template, so this is fine.
return Mustache.render(popupTemplate_French, layer.feature.properties);
});