Клуб API Карт

поиск по карте объектов,загруженных с помощью ymapsML

Пост в архиве.

возник вопрос. есть карта,объекты на которую добавляются через data.php файл,в котором сгенерирован xml объекты из базы данных. необходимо без перезагрузки страницы осуществлять фильтрацию-поиск объектов на этой карте (т е удалить старые и нарисовать найденные).  карта загружается следующим образом

 ymaps.ready(init);

        function init () {
            myMap = new ymaps.Map("Map", {
                    center: [53.904098,27.547099],
                    zoom: 12
                });

res=ymaps.geoXml.load(url)
                .then(function (res) {

//код добавления и кластеризации

});

подскажите,в каком направлении думать?

возможно ли каким-то образом осуществить с помощью аякса типа

 function doupdate(){

// myMap.geoObjects.remove(placemarks);
 var res = $.ajax({
    'type': 'POST',
    'url': '/data.php',
    'data': '',
    'success': function (res) {
   }

    })
} где в дату помещать параметры поиска. как потом полученный ответ опять разместить на карте?

13 комментариев

а что мешает передавать параметры в урле?

 

ymaps.geoXml.load(url)

да ничего не мешает вроде)а как старые объекты удалить тогда?

а как вы их добавляете?

var url="/data.php?sql="+sql;
            res=ymaps.geoXml.load(url)
                .then(function (res) { // функция обрабатывает успешный результат получения YMapsML
           
            //    res.geoObjects.each(function (object) {placemarks.push(object)});
                    res.geoObjects.each(function (object) {
                //    alert(object.properties.get('metaDataProperty.AnyMetaData.adres'));
                    object.properties.set('clusterCaption', object.properties.get('metaDataProperty.AnyMetaData.name'));

                    }
                    placemarks.push(object);
               
                });
           
                    cluster.add(placemarks);
               
                }, function (error) { // Вызывается в случае неудачной загрузки YMapsML
                    alert('Ошибка: ' + error);
            });
           
             myMap.geoObjects.add(cluster);
       
        }

делаю так

cluster.removeAll();
                    cluster.add(placemarks);
               
                }, function (error) { // Вызывается в случае неудачной загрузки YMapsML
                    alert('Ошибка: ' + error);
            });
             myMap.geoObjects.remove(cluster);
             myMap.geoObjects.add(cluster);

но все на месте остается(

ну видимо placemarks надо сделать локальным для этого обработчика

var placemarks = [];

Иначе вы просто в него всё добавляете и добавляете и добавляете ))))

честно говоря мне кажется, что оно на месте все и остается)не добавлет-не удаляет))

потому что в placemarks вы храните все метки

и все их заного удаляетет и добавляете в кластеризатор

placemarks должен создаваться при каждом запросе заного

извините,наверное я что-то совсем туплю)но можно вас попросить поконкретнее рассказать что куда вставить надо))

код такой

var url="/data.php?sql="+sql;
            res=ymaps.geoXml.load(url)
                .then(function (res) { // функция обрабатывает успешный результат получения YMapsML
            var placemarks = [];
            //    res.geoObjects.each(function (object) {placemarks.push(object)});
                    res.geoObjects.each(function (object) {
                //    alert(object.properties.get('metaDataProperty.AnyMetaData.adres'));
                    object.properties.set('clusterCaption', object.properties.get('metaDataProperty.AnyMetaData.name'));
                  
                    placemarks.push(object);
               
                });
                    cluster.removeAll();
                    cluster.add(placemarks);
               
                }, function (error) { // Вызывается в случае неудачной загрузки YMapsML
                    alert('Ошибка: ' + error);
            });
             myMap.geoObjects.remove(cluster);
             myMap.geoObjects.add(cluster);
       
        }

 

.then(function (res) { // функция обрабатывает успешный результат получения YMapsML
    var placemarks = [];
    ...

ну вот выше привела вроде так же)но объекты все те же)

дайте ссылку я посмотрю