Yandex Map: отображение меток в зависимости от масштаба карты

Работал давече с плагином HeatMap для яндекс карт. Всё хорошо, но один нюанс — невозможно навесить эвент на клик по точке карты. Ну или не нашел как. Пришлось задействовать «финт ушами» — при достижении определенного приближения, принудительно отрисовывать поверх точек heatmap свои «кликабельные» точки. В результете родилось нечто подобное:

obj = data.result; 
                heatmap = new ymaps.Heatmap(obj, {
                    // Радиус влияния.
                    radius: 15,
                    // Нужно ли уменьшать пиксельный размер точек при уменьшении зума. False - не нужно.
                    dissipating: false,
                    // Прозрачность тепловой карты.
                    opacity: 0.8,
                    // Прозрачность у медианной по весу точки.
                    intensityOfMidpoint: 0.05,
                    // JSON описание градиента.
                    gradient: {
                           0.1: 'rgba(128, 255, 0, 0.7)',
                           0.2: 'rgba(255, 255, 0, 0.8)',
                           0.7: 'rgba(234, 72, 58, 0.9)',
                           0.9: 'rgba(162, 36, 25, 1)',
                           1.0: 'rgba(0, 0, 0, 1)'
                       }
                });
                heatmap.options.events.add('click', function (e) {   
                    console.log(e);
                    var objectId = e.get('objectId');    
                    //objectManager.objects.balloon.open(objectId);
                });                    
                heatmap.setMap(myMap); 

        
       
        
                myMap.events.add('boundschange', function () {
                    size = myMap.getZoom();
                    console.log(size);
                    if (size>15){
                        console.log("-- пора бы и нарисовать метки");
                        if (all_deleted==true){
                            console.log("--- рисуем метки");
                            // настройки кластеризакции
                            objectManager = new ymaps.ObjectManager({
                                clusterDisableClickZoom: true,
                                geoObjectOpenBalloonOnClick: true,
                                clusterize: false
                            }); //кластеризуем
                            objectManager=SetClusterProp(objectManager);     
                            myMap.geoObjects.add(objectManager);   
                            objectManager.add(obj);  
                            objectManager.objects.events.add('click', function (e) {   
                                console.log(e);
                                var objectId = e.get('objectId');    
                                objectManager.objects.balloon.open(objectId);
                            });                                        
                          all_deleted=false;  
                        };
                    } else {
                        if (all_deleted==false){
                            myMap.geoObjects.remove(myMap.geoObjects.get(myMap.geoObjects.getLength()-1));                          
                            all_deleted=true;  
                        };
                    };
                });
                

Microtik: включение API и вывод уровня сигнала wifi соеднинений

Вывести уровни сигнала соединений:

/interface wireless registration-table> print

Включить сервис API:

/ip service> enable 5

Список выбора с checkbox на карте yandex

Чтобы получилось примерно такое:

 

Нужно выполнить довольно много телодвижений:




Яндекс карты: отображение очень большого количества обьектов на карте

Задача: отобразить на карте  ОЧЕНЬ большого количества обьектов на карте:

Решение: для отображения используем ObjectManager с включенной кластеризаций, кроме того, обекты загружаем через JSON с типом «Feature» — т.е. метки загружаются ни как обьекты, а как «теневой массив», который не умеет отображать контент,хинты и имеет еще ряд ограничений. Этот момент мы обходим следующим образом: при наведении курсора мышки на  метку, мы переносим её в «обьекты».

javascript:

PHP:




Добавляем данные в таблицу Google Sheeet при помощи PHP

Руководство от Гугла для ознакомления. Делано собственно по нему.

1) Включаем в своем аккаунте доступ к Google Sheets API. Сделать это можно прямо на странице «Руководство от Гугла«:

Получаем ID, секрет и файл credentials.json который сохраняем туда, где будет лежать основной скрипт

2) При помощи composer добавляем необходимые библиотеки

3) Создаем таблицу в гуглодокументах и узнаем её ID — можно взять прямо из URL. Так-же даем доступ «всем вподряд по ссылке»

4) Создаем следующего вида файл:

,где в переменной $spreadsheetId указываем id таблицы.

5) Запустим скрипт из командной строки. Он предложит открыть ссылку которую выведет на экран. По переходу по ссылке будет показан стандарный диалог «Бал-бла- Разрешить?». Разрешаем. На экран выведется токен. Его нужно будет скопировать в консоль.

После чего снова запускаем скрипт, и в таблице в конец последних заполненных ячеек добавятся данные.




1 2 3