Клуб API Карт

geoQuery.Search по ymapsml файлу

douscare
17 октября 2013, 16:11

Добрый день, пытаюсь понять каким образом фильтровать метки на карте по каким либо признакам(цвет, name, anymetadata).

Пробовал "preset.options =twirlredicon" метки не подгужаются совсем.

 

Подгружаю так:

 

<script type="text/javascript">

ymaps.ready(init);

 

function init() {

    // Создаем карту.

    var myMap = new ymaps.Map("map", {

        center: [55.76, 37.64],

        zoom: 5,

        behaviors: ["default", "scrollZoom"]

    });

    myMap.controls

.add('zoomControl')

                    // Линейка масштаба

.add('typeSelector')

                    .add('mapTools');

var trafficControl = new ymaps.control.TrafficControl();

myMap.controls

.add(trafficControl);  

    var points=ymaps.geoQuery(ymaps.geoXml.load("http://douscare.narod.ru/xml/yml_n.xml")).searchIntersect(myMap)

    .search('???? "twirl#redIcon"')

    .clusterize({

    preset: 'twirl#invertedVioletClusterIcons',

    maxZoom: 20,

    minClusterSize:10});    

    myMap.geoObjects.add(points);

}

 

</script>

 

11 комментариев
Подписаться на комментарии к посту

Вы были близки)

.search('options.preset == "twirl#redIcon"')

так не работает всё равно. :)

Если это весь код, то метки не добавятся на карту - метод clusterize создает кластеризатор и в него добавляет метки выборки. Этот кластеризатор надо еще добавить на карту.

var clusterer = [......].clusterize();

map.geoObjects.add(clusterer);

так подгружаются:

var points=ymaps.geoQuery(ymaps.geoXml.load("http://douscare.narod.ru/xml/yml_n.xml")).searchIntersect(myMap)

    .clusterize({

    preset: 'twirl#invertedVioletClusterIcons',

    maxZoom: 20,

    minClusterSize:10});    

    myMap.geoObjects.add(points);

 

а так нет:

 

var points=ymaps.geoQuery(ymaps.geoXml.load("http://douscare.narod.ru/xml/yml_n.xml")).searchIntersect(myMap)

    .search('options.preset == "twirl#redIcon"')

    .clusterize({

    preset: 'twirl#invertedVioletClusterIcons',

    maxZoom: 20,

    minClusterSize:10});    

    myMap.geoObjects.add(points);

 

:-)

У вас в xml прописаны стили не redIcon, а redDotIcon. Попробуйте поменять параметр в условии поиска.

Все равно не помогает! :-(

Все, мои экстрасенсорные способности иссякли, нужна ссылка на страницу)

Пример тут:

http://douscare.narod.ru/xml/map2.html

Разобрался с фильтром, но теперь не могу прикрутить кластеризатор

 

Если вместо window.myObjects =

ymaps.geoQuery(ymaps.geoXml.load("http://douscare.narod.ru/xml/yml_n_l.xml")).addToMap(myMap); 

 

писать:

window.myObjects =

ymaps.geoQuery(ymaps.geoXml.load("http://douscare.narod.ru/xml/yml_n_l.xml"))

.searchIntersect(myMap)

.clusterize({

    preset: 'twirl#invertedVioletClusterIcons',

    maxZoom: 20,

    minClusterSize:10});

.addtomap(myMap);

 

Все перестает работать((  

Посмотрите в консоль браузера.

У Вас синтаксическая ошибка Javascript

 

   minClusterSize:10});

.addtomap(myMap);

 

 

Вопрос, пишу две функции

первая кластеризует все объекты на карте:

    function ClusterizeObj() {        

        myClusterer = ymaps.geoQuery(myMap.geoObjects).clusterize({

        preset: 'twirl#invertedVioletClusterIcons',

        maxZoom: 20,

        minClusterSize: 5});

        KillObj();        

        myMap.geoObjects.add(myClusterer);

        alert('Количество объектов на карте ' + ymaps.geoQuery(myMap.geoObjects).getLength());

    }

Вторая:

function KillObj() {

        alert('Количество объектов на карте ' + ymaps.geoQuery(myMap.geoObjects).getLength());

        ymaps.geoQuery(myMap.geoObjects).removeFromMap(myMap);

    }

Должна удалять все геоОбъекты с карты, но если на карте просто метки то они удаляются, если на карте кластер то не удаляется, хотя .getLength() пишет что на карте присутствует объект?

Я по примеру из песочницы сделал фильтрацию по чекбоксам по properties.name и properties.metaDataProperty.AnyMetaData.contype

получилось, все хорошо, но делал я это на маленьком файле, при подгрузке файла с 5000 тысячами точек все происходит долго

http://douscare.narod.ru/xml/map5.html

 

соответственно хотелось бы кластеризировать точки.

При замене windows.myObjects... на var=clusterer(...)...

Перестает работать фильтрация по чекбоксам т.к. пересечение shownObjects и кластерера не находится следовательно не удаляются ненужные точки.

 

собственно проблема в этом :)