Загрузка Geo JSON один раз и назначение их на основе атрибутов - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть веб-карта 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);
}); 
...