Клуб API Карт

февраль 2017
Отправить метку пуш-уведомления на смартфон:
Surkhay
1 февраля 2017, 13:48

Доброго времени суток, подскажите можно ли выслать пуш уведомление на смартфон не заходя под своим логином?...

Нет комментариев
Открытый балун позиционируется по центру страницы, а не карты
Виталий
2 февраля 2017, 00:06

Позиция раз: находясь сверху страницы, на которой расположена карта (карта внизу видимой области страницы), при открытии балун появляется в верхней части карты

Позиция 2: прокрутив страницу до конца вниз и сменив балун,  снова нажав на первый балун (в нашем случае "Выборг"), он открывается за пределами карты. При этом карта сдвигается, но не достаточно. 

Такое ощущение, что балун центруется по высоте страницы

Использую функцию поиска по ближайшим точкам:

	searchControl.events.add('resultshow', function () {

    	var index = searchControl.getSelectedIndex();
    	var geoObjectsArray = searchControl.getResult(index).then(function (result) {
    		allObj.getClosestTo(result.geometry.getCoordinates()).balloon.open();
      });
    }, this); 

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

1 комментарий
Открыть кластер по клику на ссылку
tarverdyan.n
2 февраля 2017, 08:55

Здравствуйте. 

Нужно открыть соответствующий кластер по клику на ссылки. Вот что должно получится в итоге. http://take.ms/mFz0I

Создаю карту

ymaps.ready(init);
function init () {
    var myMap = new ymaps.Map("map", {
      center: [55.6938,37.6001],
      zoom: 5,
      controls: [],
    });
    var myGeoObjects = [];
    myGeoObjects[0] = new ymaps.Placemark([55.6740,37.7333],{
      clusterCaption: 'Moscow',
      },{
      iconLayout: 'default#image',
      iconImageHref: 'map.png',
      iconImageSize: [28, 42],
    });
    myGeoObjects[1] = new ymaps.Placemark([56.6990,37.7333],{
      clusterCaption: 'Moscow',
      },{
      iconLayout: 'default#image',
      iconImageHref: 'map.png',
      iconImageSize: [28, 42],
    });
    myGeoObjects[2] = new ymaps.Placemark([56.299278725518555,43.99715184918819],{
          clusterCaption: 'Nnov', 
          },{
          iconLayout: 'default#image',
          iconImageHref: 'map.png',
          iconImageSize: [28, 42],
        });
    myGeoObjects[3] = new ymaps.Placemark([56.30080581135179,43.99715184918819],{
          clusterCaption: 'Nnov', 
          },{
          iconLayout: 'default#image',
          iconImageHref: 'map.png',
          iconImageSize: [28, 42],
        });

    var clusterer = new ymaps.Clusterer({
          clusterDisableClickZoom: false,
          clusterOpenBalloonOnClick: false,
          clusterBalloonContentLayout: 'cluster#balloonCarousel',
     });
    clusterer.add(myGeoObjects);
    myMap.geoObjects.add(clusterer);
}

Как связать ссылки с кластерами, чтобы по клику их открывать? Покажите пожалуйста маленький пример если не сложно. jsfiddle

1 комментарий
кластеризация,Кластер,События меток кластеризатора
Ориентиры на карте
haramambra2012
2 февраля 2017, 12:45

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

2 комментария
Как работать с данными карты? LoadingObjectManager + setUrlTemplate + reloadData
Valentin
2 февраля 2017, 17:08

Добрый вечер. Подскажите пожалуйста, как работать с объектами карты, после обновления их через objectManager.setUrlTemplate (получение новых значений) и objectManager.reloadData() , перезаписывания меток?

На пример:

objectManager.objects.getLength();

Могу использовать только до перезаписывания меток, но он отдает "старый" результат, а не новый.

Пробую не что такое: 

myMap.panTo(myMap.geoObjects.getBounds(), {checkZoomRange:true});

, но иногда приближает точку очень близко и приходится уменьшать зум карты. Или на пример:

myMap.setBounds(myMap.geoObjects.getBounds());

Так же не возможно использовать после objectManager.reloadData(). Не понимаю как центровать карту с исп LOM'a?

objectManager — это и есть LOM

objectManager = new ymaps.LoadingObjectManager
1 комментарий
reloadData,ObjectManager,LoadingObjectManager
Как перекрасить Яндекс карту в серые тона?
MAVLDR
2 февраля 2017, 17:30

Как перекрасить яндекс карту в серые тона? Что бы было, как на примере ниже.

3 комментария
Как узнать положение метки на экране (x, y)/
nikulinv2
2 февраля 2017, 22:02

Здравствуйте!

      Столкнулся с проблемой. Загружаю метки на карту из географических координат (lat, lon), но для дальнейшей обработки мне требуется узнать положение меток на экране (x, y).  

      Возможно ли реализовать преобразование геокоординат в координаты экрана?

1 комментарий
Метки,координаты
API ключ
Центральная библиотека «Светоч»
3 февраля 2017, 13:50

Где взять APIключ на созданной карте для вставки его в виджет сайта?

1 комментарий
Переход к метке и её открытие
Valentin
3 февраля 2017, 18:19

Подскажите опжалуйста. Версия 2,1.

Имеется карта, с использованием LoadingObjectManager. 

На карте есть список ссылок, (копий меток которые могут быть на карте, с их координаты и ид).

При клике на ссылку:

Перемещаемся к её положению, увеличиваем карту.

myMap.panTo(newLoca).then(function () {
   console.log(idCurrent) // id метки
   myMap.setZoom(17);
   console.log(objectManager.objects)
   console.log(objectManager.objects.get(idCurrent));
},this);

Подскажите, как можно использовать метод fire что бы сэмитировать клик по балуну. Иногда это может быть кластер.

Так же имеется ивента на просмотр клика и нажатия на кластер:

var activeObjectMonitor = new ymaps.Monitor(objectManager.clusters.state);
// При клике на некластеризованные объекты получаем содержимое балуна
	objectManager.objects.events.add('click', function(e) {
	var objectId = e.get('objectId');
	setBalloonData(objectId);
});
activeObjectMonitor.add('activeObject', function (e) {
	var objectId = activeObjectMonitor.get('activeObject').id;
	setBalloonData(objectId);
});

Или как еще можно реализовать? 

Спасибо.

Нет комментариев
LoadingObjectManager,panTo,fire
Генерация карты высот для 3D моделирования района
cho
4 февраля 2017, 04:07

Хотел бы узнать есть ли такая возможность?

Подойдет даже обычное простроение примитивов зданий на примерную высоту.

Нет комментариев
Выпадающий список городов
webfishka.i
5 февраля 2017, 17:07

Здравствуйте!
Делаю калькулятор для построения маршрута и рассчета стоимости доставки.

Подскажите пожалуйста пару вопросов:

1. Список точек вне Карты http://joxi.ru/5mdNEb4FkJKwMA
Т.е. эти два поля сделать отдельно от карты, при этом если вводить предлагал подходящие результаты от яндекса.
2. Как добавить дополнительные(промежуточные) точки при построении маршрута?
Пример похожего калькулятора amg-trans.ru

3 комментария
Фильтрация myPlacemark
kickapoomax
5 февраля 2017, 21:26

Всем привет!

Прошу сильно не кричать, но очень прошу помочь))) Карту для сайта начал собирать неделю назад и знакомиться с документацией и примерами тоже. Собрал рабочий пример, но теперь не могу разобраться, как создать фильтрацию в нем - необходимо добавить один параметр (например, день недели) с несколькими чекбоксами (события в понедельник, во вторник и т.д.), по которым бы и производилась фильтрация и показывались/скрывались метки.

Собственно сам пример кода

<script type="text/javascript">
ymaps.ready(init);

function init () {
    var myMap = new ymaps.Map("map", {
            center: [55.167102, 61.397612],
            zoom: 11,
            controls: []
        }, {
            searchControlProvider: 'yandex#search',
            suppressMapOpenBlock: true
        });


myPlacemark1 = new ymaps.Placemark([55.167418, 61.379358], {
balloonContent: '1'
}, {
            iconLayout: 'default#image',
            iconImageHref: 'URL',
            iconImageSize: [26, 42],
            iconImageOffset: [-13, -42],
            balloonPanelMaxMapArea: 0
        }), 

myPlacemark2 = new ymaps.Placemark([55.162772, 61.292724], {
balloonContent: '2'
}, {
            iconLayout: 'default#image',
            iconImageHref: 'URL',
            iconImageSize: [26, 42],
            iconImageOffset: [-13, -42],
            balloonPanelMaxMapArea: 0
        }), 

myPlacemark3 = new ymaps.Placemark([55.194160, 61.362174], {
balloonContent: '3'
}, {
            iconLayout: 'default#image',
            iconImageHref: 'URL',
            iconImageSize: [26, 42],
            iconImageOffset: [-13, -42],
            balloonPanelMaxMapArea: 0
        }), 

myPlacemark4 = new ymaps.Placemark([55.142332, 61.375979], {
balloonContent: '4'
}, {
            iconLayout: 'default#image',
            iconImageHref: 'URL',
            iconImageSize: [26, 42],
            iconImageOffset: [-13, -42],
            balloonPanelMaxMapArea: 0
        }), 
clusterer = new ymaps.Clusterer({
        clusterBalloonContentLayoutWidth: 330,
        clusterBalloonContentLayoutHeight: 300,
        clusterBalloonAccordionShowIcons: false,
        clusterBalloonContentLayout: 'cluster#balloonAccordion',
        clusterDisableClickZoom: true,
        clusterOpenBalloonOnClick: true,
            clusterIcons: [{
                href: 'URL',
                size: [45, 55],
                offset: [-22, -55]
            }]});

clusterer.add(myPlacemark1).add(myPlacemark2).add(myPlacemark3).add(myPlacemark4);
var myBalloonLayout = ymaps.templateLayoutFactory.createClass();
ymaps.layout.storage.add();

myMap.geoObjects.add(clusterer);
}


</script>

Выводить метки через myPlacemark№ очень удобно в моем случае. Как устроить фильтрацию на данном примере?

1 комментарий
фильтрация
Баллун кластера. Как отследить переключение между табами?
s.sivokozov
6 февраля 2017, 04:43

Здравствуйте.

У меня следующая задача.

На карте множество точек.

Добавляю их на карту через objectManager с включенной клатеризацией.

Для самих точек содержание баллуна изначально не указано.

Задача: в баллуне кластера подтягивать информацию по точке в момент выбора этой точки в списке точек .

Решил идти таким путём. Отлавливать переключение между табами балуна и в этот момент выполнять действия для запроса информации по выбранной точке.

Нашёл такую статью https://yandex.ru/blog/mapsapi/55496.

Воспользовавшись советами, данными там, пытаюсь сделать следующее :

 pointsObjectManager.clusters.events.add('balloonopen', function (e) {
            var clusterId = e.get('objectId');
            var cl = pointsObjectManager.clusters.getById(objectId);
            var optionMonitor = new ymaps.Monitor(cl.options);
            optionMonitor.add("activeObject", function (newValue) {
//todo:: код по запросу информации по точке.
                alert("activeObject: " + newValue);
            });

        });

Но судя по тому, что alert не отрабатывает,  монитор я как-то не так навешиваю.

Подскажите, пожалуйста, что делаю то не так.

4 комментария
Как прикрепить балуны
ozirist
6 февраля 2017, 17:47

Вопрос в следующем, как прикрепить к этим меткам балуны, метки идут через FeatureCollection и я не понимаю как сделать к ним балун, пробовал от myPlacemark, но так не работает.

<script type="text/javascript">
 ymaps.ready(init);
        var myMap, 
            myPlacemark;

function init() {
    var myMap = new ymaps.Map('map', {
            center: [55.755826, 37.6173],
            zoom: 10
        
        });
red = new ymaps.Placemark([55.709658441942416, 37.632903415777605], {
            // Чтобы балун и хинт открывались на метке, необходимо задать ей определенные свойства.
            balloonContentHeader: "AFI Residence Paveletskaya",
            balloonContentBody: "Cкачать презентацию",
            balloonContentFooter: "Москва, Павелецкая наб., д.8 - 6 ",
            hintContent: "Подробнее"
        });

    myMap.geoObjects.add(red);

    // Функция, которая по состоянию чекбоксов в меню
    // показывает или скрывает геообъекты из выборки.
    function checkState () {
        var shownObjects,
            byColor = new ymaps.GeoQueryResult(),
            byShape = new ymaps.GeoQueryResult();
        
        // Отберем объекты по цвету. 
        if ($('#red').prop('checked')) {
            // Будем искать по двум параметрам:
            // - для точечных объектов по полю preset;
            // - для контурных объектов по цвету заливки.
            byColor = myObjects.search('options.fillColor = "#ff1000"')
                .add(myObjects.search('options.preset = "twirl#redIcon"'));
        }
        if ($('#green').prop('checked')) {
            byColor = myObjects.search('options.fillColor = "#00ff00"')
                .add(myObjects.search('options.preset = "twirl#greenIcon"'))
                // После того, как мы нашли все зеленые объекты, добавим к ним
                // объекты, найденные на предыдущей итерации.
                .add(byColor);
        }
        if ($('#yellow').prop('checked')) {
            byColor = myObjects.search('options.fillColor = "#ffcc00"')
                .add(myObjects.search('options.preset = "twirl#yellowIcon"'))
                .add(byColor);
        }
        // Отберем объекты по форме.
        if ($('#point').prop('checked')) {
            byShape = myObjects.search('geometry.type = "Point"');
        }
        if ($('#polygon').prop('checked')) {
            byShape = myObjects.search('geometry.type = "Polygon"').add(byShape);
        }
        if ($('#circle').prop('checked')) {
            byShape = myObjects.search('geometry.type = "Circle"').add(byShape);
        }
        
        // Мы отобрали объекты по цвету и по форме. Покажем на карте объекты,
        // которые совмещают нужные признаки.
        shownObjects = byColor.intersect(byShape).addToMap(myMap);
        // Объекты, которые не попали в выборку, нужно убрать с карты.
        myObjects.remove(shownObjects).removeFromMap(myMap);
    }
    
    $('#red').click(checkState);
    $('#green').click(checkState);
    $('#yellow').click(checkState);
    $('#point').click(checkState);
    $('#polygon').click(checkState);
    $('#circle').click(checkState);
    
    // Создадим объекты из их JSON-описания и добавим их на карту.
    window.myObjects = ymaps.geoQuery({
        type: "FeatureCollection",
        features: [
            {
                type: 'Feature',
                geometry: {
                    type: 'Point',
                    coordinates: [55.895636, 37.462314900000024]
                },
                options: {
                    preset: 'twirl#yellowIcon'
                }
           
            },
            {
                type: 'Feature',
                geometry: {
                    type: 'Point',
                    coordinates: [55.8104533, 37.64509599999997]
                },
                options: {
                    preset: 'twirl#greenIcon'
                }
             },
            {
                type: 'Feature',
                geometry: {
                    type: 'Point',
                    coordinates: [55.70864899999999, 37.64558490000002]
                },
                options: {
                    preset: 'twirl#greenIcon'
                }
            },
            {
                type: 'Feature',
                geometry: {
                    type: 'Point',
                    coordinates: [55.84060729999999, 37.49379109999995],
                    radius: 10000
                },
                options: {
                    preset: 'twirl#redIcon'
                }
            }
        ]
    }).addToMap(myMap);
}
var expanded = false;

function showCheckboxes() {
  var checkboxes = document.getElementById("checkboxes");
  if (!expanded) {
    checkboxes.style.display = "block";
    expanded = true;
  } else {
    checkboxes.style.display = "none";
    expanded = false;
  }
}
</script>

   <form>
 
              
              <div class="multiselect">
    <div class="selectBox" onclick="showCheckboxes()">
      <select>
        <option>Выбрать фильтр</option>
      </select>
      <div class="overSelect"></div>
    </div>
    <div id="checkboxes">
      <label for="red" >
        <input type="checkbox" id="red" checked=true/>Красные</label>
      <label for="green">
        <input type="checkbox" id="green"checked=true />Зеленые</label>
      <label for="yellow">
        <input type="checkbox" id="yellow"checked=true />Желтые</label>
        <label for="point">
        <input type="checkbox" id="point"checked=true />Все объекты</label>
    </div>
  </div>
</form>

2 комментария
балун-панель,не показывает балун
Нестандартный размер тайлов
hhrhhr
7 февраля 2017, 03:06

Обязательно ли использовать тайлы размером 256x256 точек? Можно ли работать с 1024x1024, например?

Сходу указав tileSize: [1024, 1024] получил работающим только нулевой уровень.

12 комментариев
тайлы
Изменился формат ответа от suggest'а, хотя версия api осталась той же.
andrey.yankovsky@csssr.com
8 февраля 2017, 14:44

Раньше формат ответа от suggest'а был таким "проспект Ленина, Екатеринбург, Свердловская область, Россия".

Скриншот сделан 19.01.2017. В конце ещё к каждому тексту добавлялось ", Россия" — этого нет на скриншоте, обрабатывали ответ.

Сегодня заметили такую проблему:

 

Появилась она из-за того, что у suggest'а поменялся формат ответа и теперь он такой "Россия, Свердловская область, Екатеринбург, проспект Ленина"

Было так — "проспект Ленина, Екатеринбург, Свердловская область, Россия".
Стало так — "Россия, Свердловская область, Екатеринбург, проспект Ленина".

Никакой информации об этом изменении в интернете я не нашёл, версию js апи яндекс карт мы не поднимали. Дайте информацию, баг ли это, когда будет исправлено и почему нигде нет информации об этом изменении?

6 комментариев
багрепорт,баг,suggest
Яндекс карты не работают в PhoneGap
Артем Гатаулин
9 февраля 2017, 19:48

Не работает Яндекс карты API в PhoneGap, на мобильных телефонах карта не отображается, на десктопе все отлично.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
        <title>Blank App</title>
        
        <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
        <script type="text/javascript">
            ymaps.ready(init);
            var myMap;

            function init(){     
                myMap = new ymaps.Map("map", {
                    center: [55.76, 37.64],
                    zoom: 7,
                });
            }
        </script>
        <style> html, body { margin: 0;}</style>
    </head>
    <body>
        <div id="map" style="width: 400px; height: 400px"></div>
    </body>
</html>

2 комментария
PhoneGap
Как отобразить контент балуна в html?
ozirist
10 февраля 2017, 04:39
 {
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [55.8104533, 37.64509599999997]
},
options: {
preset: 'twirl#greenIcon'
},
properties: {
  balloonContent: "Мой контент балуна"
}
},

Все точки идут через FeatureCollection
Как сделать так чтобы можно было в BallonContent отображать любой html-код?

2 комментария
балун
Переезд с конструктора карт
pavel-klimenko
10 февраля 2017, 11:39

Начинает не хватать конструктора карт.

Хотелось бы вывести список всех балунов и из текстом и использовать кластеризатор.

Сейчас в конструкторе на карту нанесены только балуны. Их порядка 42, но вручную не хотелось бы переносит. Или без вариантов?

Ещё в тексте всех балунов нужно поменять ссылку с "http://site" на протоколонезависимое написание "//site"

4 комментария
Определить зону в переделах выбранного расстояния от статичной точки на карте
andrey.zhulin@instamart.ru
11 февраля 2017, 17:17

Добрый день!

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

Образно, есть точка, определить какая зона карты с точностью до дома входит в зону до 5 км (по дорогам) от данной точки.

Спасибо!

3 комментария