Страница продолжает работать при виртуальном создании слоев листовок на основе массивов - PullRequest
0 голосов
/ 17 января 2019

Проблема -> Моя страница, кажется, находится в бесконечном цикле или что-то в этом роде.Он продолжает загружаться, но я не получаю сообщение об ошибке

Цель -> На основе идентификатора из поля JSON я создаю массив типов.Я также создаю 2 отдельных массива (1 для слоя и 1 для цвета).

Я хочу создать 1 слой для каждого типа и дать их маркерам уникальный цвет.

Процесс: я объявляю свои 3 массива следующим образом:

var typeArray = [];
var colorArray = [];
var layerArray = [];'

После чего я просматриваю вывод JSON-файла для классификатора и заполняю массив типов, который работает нормально.Я зарегистрировал значения для проверки

for( var i=0; i < jData.length; i++){
        if(typeArray.includes(jData[i].classificationid)){
            console.log(jData[i].classificationid + " is in array");
        }
        else{
            typeArray.push(jData[i].classificationid);
        }
    }

После чего я перебираю тип, создаю массив цветов и слоев.Цветовой массив и функция работают отлично.Я подтвердил это.

for(var i = 0; i<typeArray.length; i++){
        colorArray[i] = getRandomRgb();
        layerArray[i] = L.layerGroup();
    }

Итак, исходя из этого, я предполагаю, что если бы у меня было 2 типа классификатора, у меня был бы layerArray с двумя группами слоев.(Массив объектов)

В приведенном ниже коде я перебираю весь мой JSON, в котором я вкладываю итерацию через typeArray.Если массив типов соответствует классификации, я добавляю значок div к соответствующему слою. console.log (jData [i] .classificationid + «совпадения» + typeArray [j]);дает правильный ввод в консоль, после чего я не вижу ничего в консоли

for(var i=0; i < jData.length; i++){
        console.log("I = " + i);

        for(var j=0; i<typeArray.length; j++){
            if(jData[i].classificationid == typeArray[j]){
                console.log(jData[i].classificationid + "   matches    " + typeArray[j]);

                L.marker([jData[i].latitudey, jData[i].longitudex],{
                icon: L.divIcon({
                    html: '<i id ="icon1" class="fas fa-map-marker" style="font-size:48px;color:rgb(225, 80, 71)"></i>',
                    iconSize: [20, 20],
                    className: 'myDivIcon'
                })
            }).bindPopup(jData[i].addresscode).addTo(layerArray[j]);


            }
        }

Где-то в этом коде, где я считаю, моя проблема лежит.

Проблема 1 - Маркеры не добавляются в layerArray Проблема 2 - Я не знаю, как изменить стиль HTML RGB на основе colorArray.

ПОЖАЛУЙСТА, ПОМОГИТЕ: (

1 Ответ

0 голосов
/ 17 января 2019

Я думаю, что ваш цикл застрял здесь:

for(var j=0; i<typeArray.length; j++){

должно быть

for(var j=0; j<typeArray.length; j++){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...