Клуб API Карт

Отобразить коллекции

Александр
1 июля 2014, 12:35

Есть коллекция

 

           myCollection

                .add(ait1) 

                .add(ait2);

            myMap.geoObjects.add(myCollection);

 

 

По кнопке

Прячу одну коллекцию - 

hidden.add(ait1);

(добавляю в пустую коллекцию)

 

Подскажите пожалуйста - как теперь показать эту коллекцию? 

по нажатию другой нопки делаю -  

myCollection.add(ait1);

метки не появляются;



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

У вас есть ссылка на страницу?

Александр
1 июля 2014, 12:49

>:-)

ой спасибо. работает :))

 

а вы не можете подсказать как сделать спрятать\показать одной кнопкой?

я пробовал в зависимости от размера коллекции hidden, но не разобрался в синтаксисе

if (hidden.getLength>0) {}


 

 

Почитайте про синтаксис javascript, а то без него у вас дело не продвинется

Александр
1 июля 2014, 13:00

ок. спасибо

а еще можно вопрос - я добавил 2 кнопки на саму карту

map.controls.add(button1, {left: 10, top: 10});

сами кнопки отображаются. действия на них тоже.

но если я дальше пытаюсь создать там элементы или коллекцию элементов, то эти элементы не отображаются.

 

страницы у меня нет - может быть посмотрите с диска?

https://yadi.sk/d/AFj-1uKbVeHjT

Откройте отладчик javascript в браузере, он сразу вам покажет, на какой строке ошибка. Она опять же связана с синтаксисом js

Александр
1 июля 2014, 13:03

а как его открыть? (яндекс.браузер)

Вы только не обижайтесь на мой ответ) - http://lmgtfy.com/?q=как+открыть+консоль+в+яндекс.браузере

Александр
1 июля 2014, 13:10

:)

и вы не обижайтесь на мои вопросы - я несколько на другом языке программист.

 

а что делать если консоль только показывает ошибку, а про строку ничего не сказано?

Uncaught ReferenceError: mymap is not defined

Это значит, что переменная mymap не определена. Если вы посмотрите в код, то увидите, что вы создаете переменную myMap, а потом используете mymap. Javascript чувствителен к регистру.

Александр
1 июля 2014, 13:15

:))

спасибо большое 

пойду про js почитаю

Александр
1 июля 2014, 17:58

показывать\прятать элементы коллекций которые состоят из одиночных GeoObject у меня получается.

 

Подскажите пожалуйста как показать\спрятать всю коллекцию которая подгружается из файла (у меня 2 коллекции по 200 меток)?

 

Может быть тут нужно использовать ObjectManager? Но я не совсем понял как его фильтровать. 

В примере написано

objectManager.setFilter('properties.type == "кафе" || properties.type == "аптека"');

 

не понятно что такое 'properties.type == "кафе"

это какого объекта свойство "кафе"

 

если я создам коллекцию вот таким способом

var collection = { type: 'FeatureCollection', features: [{ type: 'Feature', id: currentId++, geometry: { type: 'Point', coordinates: [24.34, 65.24] } },

то где писать это свойство?

 

 

 

 

если я создам коллекцию вот таким способом

Это невалидный GeoJSON

Ваше св-во id согласно стандарту должно лежать в объекте properties

Александр
2 июля 2014, 09:03

что значит "невалидный"? - это же из песочницы

 

 


понятно. id это какая-то фича именно у ObjectManager

все что написано как "properties._что_то_"

должно лежать в объекте properties: { }

Александр
2 июля 2014, 10:22

ура

получилось сформировать правильный objectManager. даже фильтрует.

последний вопрос - как на одной кнопке сделать применить\отменить фильтр?

 

с геообъектами я делал так

 

if (hidden.getLength() == 0)

hidden.add(ait3)

            .add(ait4);

else

      myCollection.add(ait3)

             .add(ait4);

 

 

Александр
2 июля 2014, 12:07

когда делаю так

 

button1.events.add('click', function () {

        var ss = button1.data.get(button1.data.content);

    alert(ss.content)

 

 

в консоли появляется ошибка

Uncaught TypeError: Cannot read property 'length' of undefined


получить текст не могу, а присвоить могу

 

button2.events.add('click', function () {

   button1.data.set({content: 'показать Юг'});   

    });