I
I
Ivan Damaskin2015-07-16 11:59:51
JavaScript
Ivan Damaskin, 2015-07-16 11:59:51

How to write the correct condition for adding and removing markers on the map?

Hello. Ran into a few problems. Please help correct the code.
Everything works for me, only the markers are displayed incorrectly when clicked.
here is the code:

app.controller('HomeCtrl', ['$scope', '$http', '$location', function($scope, $http, $location){

    $http.get('objects/category.json').success(function(data, id) { //открываем объект соддержащий категории
        $scope.categories = data; //записываем данные объектв эту переменную

        $scope.tuk = function (id) {  //функция которая вызывается при нажатии на категорию, причем эта ссылка отправляет нашей функции свой ID категории

            $scope.catId = id; //тут я присваиваю переменной значение ID категории на которую мы нажали

            //затем мне надо открыть объект который сождержит маркеры которые относятся именно к той категории на которую мы нажали,
            // в данном случае файл с объектом имеет имя содержаещее id категории на которую мы нажали,
            //так мы получим нужный объект

            $http.get('objects/markers/markers_id_' + $scope.catId + '.json').success(function(data){ //вот и сам гет запрос к объекту кторый содержит данные именно той категори на которую мы нажали
                $scope.markers = data; //присваиваем эти данные переменной markers

                    $scope.markers_item = new L.GeoJSON($scope.markers, { //тут как я понял мы создаем переменную и в нее вставляем данные с объекта маркеров в том формате который нужен для того что бы отобразить данные маркеров на карте
                        onEachFeature: function(feature, layer) {

                            //здесь я поставил условие если маркеры есть на карте то мы их удаляем
                            if(map.hasLayer($scope.markers_item)) {
                                map.removeLayer($scope.markers_item);
                            }

                            //тут елаем структуру для балуна
                            if (feature.properties) {
                                layer.bindPopup('<div class="baloon">' +
                                    '<h1>' + feature.properties.popupTitle + '</h1>' +
                                    '<div class="adress">' + feature.properties.popupAdress + '</div>' +
                                    '<div class="category">' + feature.category + '</div>' +
                                    '<hr />' +
                                    '<div class="phone">' + feature.properties.popupTime + '</div>' +
                                    '<div class="phone">+373 ' + feature.properties.popupPhone + '</div>' +
                                    '<div class="site">' +
                                    '<a href="' + feature.properties.popupSite + '" target="_blank">' + feature.properties.popupSite + '</a>' +
                                    '</div>' +
                                    '</div>' );
                                $scope.idclick = feature.properties.id;
                            }
                        }
                    });

                //тут заначивается функция в которой мы преобразовывали даныне для отображения на карте
                // и далее мы отображаем маркеры на карте которые обработали в нужный формат выше

                    map.addLayer($scope.markers_item);

            }); //end hhtp get markers

        }; // end tuk function

    }); // end hhtp get category

}]);

here is a link to the site 999pmr.md/maps/#/
PS click only on the first category, the first 2 links - 372 - IT services and 172 - Saunas, baths, massage The
question is that I click on a category, I open markers of this category , now I want to click on this category again and the markers should disappear, and the markers (if they are on the screen) should also disappear if I click on another category.
Logically, I roughly understand how it should work, for example, the markers that we added are assigned to a variable, then the condition is there are previous markers and we delete them when we click again, but I can’t write it correctly.
Correct the code please. Thanks to everyone who will respond.

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question