Клуб API Карт

Свои кнопки и ивенты

alexmasz
19 апреля 2013, 14:44

Добрый день.

Подскажите пожалуйста - есть код:

 

>   var myButton1 = new ymaps.control.Button('myBtn1');
>        myButton1.events
>            .add('select', function () {
>                <?php
>                    $sql = "SELECT * FROM table";
>                    $result = mysql_query($sql);
>                    while ($record = mysql_fetch_object($result)) {
>                 ?>
>                    map.geoObjects
>                        .add(new ymaps.Placemark([<?php echo "$record->map_point"; ?>], {
>                            iconContent: '<?php echo "$record->remote_id"; ?>',
>                            balloonContentHeader: '<?php echo "$record->remote_name"; ?>',
>                        }, {
>                            preset: "twirl#blackStretchyIcon"
>                        }))
>                <?php }; ?>
>            })
>            .add('deselect', function () { alert('DESELECT'); });

 

Что надо сделать в .add('deselect') чтобы при отжатии кнопки эти точки с базы данных исчезали с карты?

 

Спасиб большое :)

5 комментариев
Подписаться на комментарии к посту
Лучше использовать коллекции.
В select добавляете геообъекты в коллекцию, а при deselect делаете myCollection.removeAll();

Дока по коллекции: http://api.yandex.ru/maps/doc/jsapi/2.x-stable/ref/reference/GeoObjectCollection.xml

просто превосходно, спасибо!

только 2й раз уже не возращает коллекцию (:

Вобщем вот так получается:

 

Создаем объект и кнопка у нас получается:

>myButton1.events
>            .add('select', function () { map.geoObjects.add(myCollection1); })
>            .add('deselect', function () { map.geoObjects.remove(myCollection1); });

 

с помощью removeAll() -SELECT 2й раз не возращает коллекцию

лоигчно, ваш вариант убирает из списка объектов вашу коллекцию ,а ремовАлл убирает все объекты из коллекции. после первого коллекция "жива", а после второго в ней пусто.