Joannes
@Joannes
html, css, js, angular, bootstrap

Как написать правильное условие добавления и удаления маркеров на карте?

Всем привет. Столкнулся с небольшими трудностями. Помогите правильно поправить код.
У меня все работает, неправильно только показываются маркеры при клике.
вот код:

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

}]);


вот ссылка на сайт 999pmr.md/maps/#/

P.S. тыкайте только на первую категорию первые 2 ссылки - 372 - IT услуги и 172 - Сауны, бани, массаж

Вопрос в том, что я нажимаю на категорию, у меня открываются маркеры этой категории, теперь я хочу еще раз нажать на эту категорию и маркеры должны исчезнуть, так же должны исчезнуть маркеры (если они есть на крате) если я нажимаю на другую категорию.
Логически я примерно понимаю как это должно работать, например маркеры котоыре добавили присваиваем к переменной потом условие есть ли предыдущие маркеры и удаляем их при повторном клике, но прописать верно это не могу.

Поправьте код пожалуйста. Спасибо всем кто откликнится.
  • Вопрос задан
  • 681 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы