Answer the question
In order to leave comments, you need to log in
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
}]);
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question