Клуб API Карт

Найдено на тему «events»:
Триггер события.
Тарасов Александр
2 июля 2017, 17:41

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

Вот так вешал событие:

ObjectManager.objects.events.add('click'...

Вот так получил объект:

ObjectManager.objects.getById($(this).data('id'));
2 комментария
ObjectManager,event,events,fire
Как удалить обработчик событий для конкретного объекта в ObjectManager
Дракон
21 июня 2017, 01:43

Доброго времени суток.

Подскажите пожалуйста с ещё одной проблемой, которой не получается решить.
Задача простая: После события 'dblclick' на ломанную линию, которая находится в 'ObjectManager' удалить все обработчики событий, но только для указанной линии.

myObjectManager = new ymaps.ObjectManager();

myObjectManager.objects.events.add(['dblclick', 'mouseenter', 'mouseleave'], function(e)
{
	var objectId = e.get('objectId');
	
	switch( e.get('type') )
	{
		case 'dblclick':
		{
			AddID("#routes_road_id", objectId);
			
			myObjectManager.objects.setObjectOptions(objectId,
			{
				strokeColor: "00000088",
				strokeWidth: 7
			});

            // Удалить обработчик всех событий для objectId.
			
			break;
		}
		case 'mouseenter':
		{
			myObjectManager.objects.setObjectOptions(objectId,
			{
				strokeColor: "00FF0088",
				strokeWidth: 7
			});
			
			break;
		}
		case 'mouseleave':
		{
			myObjectManager.objects.setObjectOptions(objectId,
			{
				strokeColor: "FF000088",
				strokeWidth: 7
			});
			
			break;
		}
	}
});

myMap.geoObjects.add(myObjectManager);

И в догонку ещё уточняющий вопрос: Можно-ли хранить в свойствах гео объекта, который находит в 'ObjectManager' свои поля, например name, и как его получить в обработчике события?

12 комментариев
ObjectManager,events
Событие удаления вершины ломанной
Удалённый пользователь
26 мая 2017, 03:59

Всем доброго времени суток.
Подскажите пожалуйста с моей проблемой: Повесил следующий обработчик на ломанную линию, и все события обрабатываются, кроме удаления вершины. Очень долго лазил по докам, но так и не нашёл совершенно очевидного события :(

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

myPolyline.editor.events.add(["edgedragend", "vertexdragend", "vertexadd"], function(event){ ... })
2 комментария
Polyline,events
Отключение событий на объектах
Александр
12 декабря 2016, 10:55

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

как отключить события на геообъектах, чтобы они не мешали объектам под ними? Что-то вроде pointer-events: none в css.

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

1 комментарий
события,events,event disable
Изменить центр карты при изменении размера карты
randomsuffer
30 сентября 2016, 14:18

Всем добрый день.

Пытаюсь сделать так, чтобы центр карты менялся при изменении ширины браузера, ширина карты - 100%.

 $(window).resize(function () {
      if ($(window).width() < 960) {
             var point = new YMaps.GeoPoint(37.609218, 55.753559);
             map.setCenter(point);
      }
});

Такая вот штука не работает.

Нашел ивент sizechange, но не понимаю, как им воспользоваться.

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

5 комментариев
events,Resize,sizechange
Конференция транспортных сервисов «Пути сообщения 2016»
Maps API
19 мая 2016, 11:11

Совсем скоро, 26 мая, в московском офисе Яндекса пройдет конференция "Пути сообщения", на которой вы сможете узнать, какие задачи стоят сегодня перед транспортными сервисами и как они решаются с помощью современных технологий. 

В конференции примут участие представители государственных организаций, специалисты Яндекса и других компаний. Участники поговорят о том, как решать транспортные задачи города или региона с помощью IT, поделятся опытом организации электронной продажи билетов и обсудят тенденции развития общественного транспорта в России. 

Менеджер продукта API Яндекс.Карт Татьяна Попова расскажет, как в решении прикладных задач может помочь Конструктор Яндекс.Карт.

"Пути сообщения 2016" будут интересны представителям перевозчиков, агрегаторов билетов, специалистам транспортных систем и всем, кто ищет новые возможности для развития транспортных интернет-проектов. Для тех, кто не сможет присутствовать лично, будет организована онлайн-трансляция.

Подробности и регистрация: https://events.yandex.ru/events/meetings/26-may-2016/ 

анонсы,конструктор,мероприятия,events,новости
myMap.geoObjects как получить index объекта сгенерившего событие?
Mackiavelly67
26 февраля 2016, 18:14
ymaps.ready(init);

function init() {
    var myMap = new ymaps.Map("map", {
            center: [55.73, 37.75],
            zoom: 10
        }, {
            searchControlProvider: 'yandex#search'
        });

    // Создаем многоугольник, используя класс GeoObject.
    var myGeoObject = new ymaps.GeoObject({
        // Описываем геометрию геообъекта.
        geometry: {
            // Тип геометрии - "Многоугольник".
            type: "Polygon",
            // Указываем координаты вершин многоугольника.
            coordinates: [
                // Координаты вершин внешнего контура.
                [
                    [55.75, 37.80],
                    [55.80, 37.90],
                    [55.75, 38.00],
                    [55.70, 38.00],
                    [55.70, 37.80]
                ],
                // Координаты вершин внутреннего контура.
                [
                    [55.75, 37.82],
                    [55.75, 37.98],
                    [55.65, 37.90]
                ]
            ],
            // Задаем правило заливки внутренних контуров по алгоритму "nonZero".
            fillRule: "nonZero"
        },
        // Описываем свойства геообъекта.
        properties:{
            // Содержимое балуна.
            balloonContent: "Многоугольник"
        }
    }, {
        // Описываем опции геообъекта.
        // Цвет заливки.
        fillColor: '#00FF00',
        // Цвет обводки.
        strokeColor: '#0000FF',
        // Общая прозрачность (как для заливки, так и для обводки).
        opacity: 0.5,
        // Ширина обводки.
        strokeWidth: 5,
        // Стиль обводки.
        strokeStyle: 'shortdash'
    });

    // Добавляем многоугольник на карту.
    myMap.geoObjects.add(myGeoObject);

    // Создаем многоугольник, используя вспомогательный класс Polygon.
    var myPolygon = new ymaps.Polygon([
        // Указываем координаты вершин многоугольника.
        // Координаты вершин внешнего контура.
        [
            [55.75, 37.50],
            [55.80, 37.60],
            [55.75, 37.70],
            [55.70, 37.70],
            [55.70, 37.50]
        ],
        // Координаты вершин внутреннего контура.
        [
            [55.75, 37.52],
            [55.75, 37.68],
            [55.65, 37.60]
        ]
    ], {
        // Описываем свойства геообъекта.
        // Содержимое балуна.
        hintContent: "Многоугольник"
    }, {
        // Задаем опции геообъекта.
        // Цвет заливки.
        fillColor: '#00FF0088',
        // Ширина обводки.
        strokeWidth: 5
    });

    // Добавляем многоугольник на карту.
    myMap.geoObjects.add(myPolygon);
    
    myMap.geoObjects.events.add(['mouseenter', 'mouseleave'], onObjectEvent);
    
}

function onObjectEvent (e) {
    var objectIndex = ??? // Как получить хотябы индекс объекста в myMap.geoObjects
    console.log(objectIndex);
}

Пример из песочницы повесил ивенты на myMap.geoObjects только потом встал вопрос, а как получить индекс объекта который сгенерировал ивент?

2 комментария
Map,geoObjects,events
Вопрос к разработчикам: boundschange и sizechange
Иван
10 февраля 2016, 10:22

Обнаружил интересную особенность работы boundschange. Это событие отслеживает изменение области просмотра карты. В документации написано «в результате изменения центра или уровня масштабирования». Но в случае изменения размера окна карты тоже срабатывает событие boundschange, так как при изменении размера окна карты область просмотра карты тоже меняется (проверено).

Есть также событие sizechange, которое отслеживает только изменения размера окна карты. Там доступны поля oldSize и newSize.

Но если мне нужно отследить только изменение масштаба и перетаскивание карты? Я бы мог слушать boundschange и проверять, меняется ли размер окна, но в boundschange не доступны поля oldSize и newSize.

На мой взгляд, с этим нужно что-то делать.

6 комментариев
boundschange,sizechange,область видимости,events
Корректный способ вернуть Edge на место
Константин Кузнецов
20 октября 2015, 17:41

Пытаюсь запретить некоторые перетаскивания вершин полигона.

И если с вершинами (Vertex) все просто:

                        polygon.editor.events.add('beforevertexdragstart', function(e) {

                           var vertexModel = e.get('vertexModel');

                           vertexModel.saveCoords = vertexModel.geometry.getCoordinates();

                        });

                        polygon.editor.events.add('vertexdragend', function(e) {

                           var vertexModel = e.get('vertexModel');
                           var ok = testVertex(vertexModel);
                           if(!ok) {
                              vertexModel.geometry.setCoordinates(vertexModel.saveCoords);
                           }
                        });
То с промежуточной вершиной (Edge) не пойму. Если использовать edgedragend, то координаты в случае необходимости отката ей не присвоить. Завязываться на beforeedgedrag? Но это слишком частая проверка, да и preventDefault почему-то не откатывает перетаскивание.
Поскольку в результате перетаскивания Edge появляется новый Vertex, попробовал завязаться на beforevertexadd, все бы хорошо. Помешать появлению vertex удается, но тогда в воздухе подвисает ни к чему не привязанный Edge, в том месте где закончили Drag. Придумал только вызывать stopEditing() и тут же startEditing(), но тогда полигон мелькает, а это не красиво.
5 комментариев
EdgeMove,API 2.1,Polygon,events