Добрый день.
Сразу скажу, в java не силен..... и поиском по клубу API пользовался, решения не нашел.
Есть код, он получает от php метки и выводит их, все работает.
Но при каждом нажатии в форме поиска найти, метки добавляются к старым и дублируются, вопрос как избавится от дублей
пробовал так и в разных местах, непомогает
cluster.removeAll();
myMap.geoObjects.remove(cluster);
Версия API 2.1
function init () {
// координаты
myMap = new ymaps.Map('map', {
center: [54.891586, 38.071433],
zoom: 12,
controls: ["zoomControl", "fullscreenControl","traf
type: 'yandex#map'
});
// Создаем кластеризатор
var clusterIcons = [{
href: '/images/map/m1.png',
size: [60, 60],
// Отступ, чтобы центр картинки совпадал с центром кластера.
offset: [-20, -20]
}, {
href: '/images/map/m2.png',
size: [80, 80],
offset: [-30, -30]
}, {
href: '/images/map/m3.png',
size: [80, 80],
offset: [-30, -30]
}],
clusterNumbers = [10,40],
cluster = new ymaps.Clusterer({
// Если опции для кластеров задаются через кластеризатор,
// необходимо указывать их с префиксами "cluster".
clusterIcons: clusterIcons,
clusterNumbers: clusterNumbers
});
markers = [];
$(function(){
$('#SearchMap').submit(function(e){
//отменяем стандартное действие при отправке формы
e.preventDefault();
//берем из формы метод передачи данных
var m_method=$(this).attr('method');
//получаем адрес скрипта на сервере, куда нужно отправить форму
var m_action=$(this).attr('action');
//получаем данные, введенные пользователем в формате input1=value1&input2=value2...,
//то есть в стандартном формате передачи данных формы
var m_data=$(this).serialize();
console.log(m_data);
$.ajax({
type: m_method,
url: m_action,
data: m_data,
success: function(json){
if (json.status == 'OK') {
cluster.removeAll(); // не удаляются точки и кластеры после повторного поиска дубли лезут
myMap.geoObjects.remove(cluster); // не удаляются точки и кластеры после повторного поиска
for (i = 0; i < json.markers.length; i++) {
var placemark = new ymaps.Placemark(
// Координаты
[ json.markers[i].lon, json.markers[i].lat ],{
// html для отображения в балуне
balloonContentHeader: ''+ json.markers[i].cname+'',
balloonContentBody: '<div padding: 5px"><table cellspacing="0" cellpadding="0" width="100%"><tbody><tr><td width="80"><img src="/images/realty/small/' + json.markers[i].image + '" width="58"/></td><td>' + json.markers[i].min_price + ' ' + json.markers[i].max_price + ' руб/м <sup>2</sup><br>' + json.markers[i].to_date + ' <a href=/base/' + json.markers[i].url + '>просмотр</a><br>Адрес: ' + json.markers[i].address + '</td></tr></tbody></table></div>',
balloonContentFooter: '',
//preset: 'islands#greenCircleIcon'
}, {
iconLayout: 'default#image',
iconImageHref: '/images/map/icon8.png', // картинка иконки
iconImageSize: [35, 49] // размеры картинки
});
//placemark.options.set("preset", "twirl#redIcon");
markers.push(placemark);
}
// Добавлеяем массив меток в кластер
cluster.add(markers);
// Добавляем кластер на карту
myMap.geoObjects.add(cluster);
//выставим центр и масштаб по точкам
myMap.setBounds(myMap.geoObjects.getBounds());
}else{
alert('Нам очень жаль. Произошла ошибка при загрузке данных!');
}
}
});
});
});
}