Клуб API Карт

Появление точек

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

Здравствуйте. Можно ли сделать так, чтобы точки на карте, при ее загрузки непоказывались. А потом по клику на ссылку (или кнопку) вне карты, все точки на карте появились ?
НЕ пойму как реализовать.

+++

<?php

$i=0; // итерация 

  

foreach($v as $value) {

?>

// Создаем геообъект с типом геометрии "Точка".

myPlacemark<?php echo $i;?> = new ymaps.Placemark([<?php echo $value->lat; ?>, <?php echo $value->lon; ?>], {

balloonContent: '<?php echo $value->crew_id; ?>'}, {

            iconLayout: 'default#image',

            iconImageHref: 'images/logo_map2.png',

            iconImageSize: [20, 20],

           iconImageOffset: [-10, -17]

        });

 

<?php 

$i++;

                  }?>

 

myMap.geoObjects

<?php for($y=0;$y<$i;$y++)

{ ?>

.add(myPlacemark<?php echo $y; ?>)

<?php } ?>

+++ 

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

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

Лучше сделать AJAX- запрос за данными (когда они понадобятся)

получить JSON и отобразить его на карте.

А вот так распечатывать Javascript из PHP – плохой подход

Aлексей Дементьев
27 января 2016, 22:28

Нигде не могу найти хоть один пример.

https://tech.yandex.ru/maps/jsbox/2.1/data_load_jquery

 

Только getJSON за данными надо делать в тот момент когда вы захотите их показать, а не сразу при загрузке

Aлексей Дементьев
27 января 2016, 22:28

OK это понятно. 
Понял как показал иконки, а как их удалить?

Так не работет

+++

 

        jQuery(".go").click(function(){

 

jQuery.getJSON('data.json', function (json) {

            /** Сохраним ссылку на геообъекты на случай, если понадобится какая-либо постобработка.

             * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoQueryResult.xml

             */

            var geoObjects = ym.geoQuery(json)

                    .addToMap(myMap)

                    .applyBoundsToMap(myMap, {

                        checkZoomRange: true

                    });

        });

 

}); // go

 

jQuery(".go2").click(function(){

geoObjects.clear();

}); // go2

+++ 

 

  var geoObjects 

Ну ты же создаешь локальную переменную, он ее в .go2.click уже не видит.

Рекомендую прочитать про замыкания и область видимости в Javascript

 

И метода clear нет

есть removeFromMap

Aлексей Дементьев
27 января 2016, 22:28

Я понимаю, что это для меня сложновато.
Скажите а это правильно, для удаление точек geoObjects.clear(); ? 

Aлексей Дементьев
27 января 2016, 22:28

Все получилось. Я не знал про  geoObjects.removeFromMap(myMap);

и начал мудрить. НЕ знаю на сколько это правильно, но я просто вывел переменную из функции (определил ее выше)
 var geoObjects; 

и так стало работать.