Здравствуйте, есть карта, которая тянет метки через json, кластеризует и выводит их.
Хочу сделать внешние ссылки, которые бы удаляли метки и загружали бы новые, с другого файла.
Делаю вызов функции с загрузкой по клику (.ymapsswitcher). Но проблема, если кликнуть несколько раз, то загружает меток больше, чем надо. Например, если в файле 10 меток и кликнуть 3 раза, то загрузит 30 меток. Как сделать, чтобы загружало только один раз?
<script type="text/javascript">
ymaps.ready(initmap);
function initmap () {
var myMap = new ymaps.Map("ymapsmap", {
center: [59.950416,30.32929],
zoom: 12,
behaviors: ['default', 'scrollZoom']
},
// Создаем кластеризатор
cluster = new ymaps.Clusterer()
);
myMap.controls.add('zoomControl');
placemarks = [];
function addPlacemarks (url) {
$.getJSON(url, function(json){
if (json.status == 'OK') {
for (i = 0; i < json.markers.length; i++) {
placemark = new ymaps.Placemark([json.markers[i].lon, json.markers[i].lat], {
balloonContentHeader: json.markers[i].name,
balloonContentBody: 'Добавлено: '+json.markers[i].address
});
placemarks[i] = placemark;
}
// Добавляем массив меток в кластер
cluster.add(placemarks);
// Добавляем кластер на карту.
myMap.geoObjects.add(cluster);
}
else {
alert('Произошла ошибка!');
}
});
}
addPlacemarks('ЗДЕСЬ ССЫЛКА НА JSON');
$(".ymapsswitcher").bind('click', function() {
placemarks.length = 0;
alert(placemarks.length);
// Удаляем все метки из кластера
cluster.removeAll();
// Удаляем кластер с карты
myMap.geoObjects.remove(cluster);
addPlacemarks('ЗДЕСЬ ССЫЛКА НА JSON #2');
});
}
</script>