Клуб API Карт

Найдено на тему «события»:
Отключение событий на объектах
Александр
12 декабря 2016, 10:55

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

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

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

1 комментарий
события,events,event disable
Изменить значок кластера при закрытии балуна
Krem-Ilia
10 октября 2016, 12:32

Всем привет.

Имеется карта с множеством объектов, часть из которых идут по одному адресу. Из-за чего возникает необходимость вот такого способа выбора меток: https://yandex.ru/blog/mapsapi/vybrat-obekt-pri-klike-vnutri-ballooncontent

Возник вопрос, есть ли возможность менять значок кластера при закрытии балуна (равно как и при смене объекта). Нашёл, что есть вот такое событие:

objectManager.events.add('balloonclose', event => {});

Однако event.get('target').getData().options там - пустой объект.

В 

objectManager.clusters.state.events.add('change', event => {});

я тоже не могу получить доступ к кластеру и его опциям.

Есть ли такая возможность?

7 комментариев
кластеризация,балун,события
Выбрать объект при клике внутри balloonContent
Krem-Ilia
23 августа 2016, 19:19

Имеется следующее: множество меток на карте, кластеризация включена.

В случае, когда две и более метки приходятся по одному адресу, при клике случается следующее:

Это я сделал путём добавления нужного balloonContent и balloonCaption в properties меток.

В объектах objectManager-а у меня повешен клик:

objectManager.objects.events.add('click', event => { ... }) // - вот так

Вопрос такой - как этот же клик применить к кликам по элементам меню слева на скриншоте? То есть чтобы можно было не только просматривать информацию, но и выбрать элемент. Есть ли какой-то простой способ это сделать с помощью какой-нибудь опции-колбека, куда сразу приходит метка, например?

И ещё у меня попутно возник вопрос, есть такие свойства у кластера, как clusterIcons и clusterIconContentLayout, например. Если смотреть документацию, в том числе тут: https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer-docpage/, то они есть в примерах, но как будто не задокументированы. Есть где-то место, где можно увидеть на них документацию?

6 комментариев
кластеризатор,события,метка
Двухуровневое меню для карты и Bootstrap
shopgo51
11 июня 2016, 10:42

В Песочнице есть пример "Вывод списка объектов карты". Скачал, запустил локально. Всё работает. Подставил свои данные. Опять всё работает. Но захотелось в Bootstrap'е повторить. Делаю так:

<body>
<div class="container">
  <div class="row">
<div class="dropdown" style="position:relative">
	<a href="#" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">Группы объектов<span class="caret"></span></a>

</div>

  </div>
</div>
<div id="map"></div>
</body>

Далее вместо используемого в примере menu.appendTo($('body')); делаю menu.appendTo($('.dropdown'));

Карта с объектами отрисовывается. Навигация по меню работает. Но по кликам на втором уровне не показываются балуны, как в примере, а при клике на первом уровне одновременно с показом/скрытием второго уровня не показываются/скрываются метки объектов.

Для реализации навигации по меню используются два обработчика:

	$(".dropdown-menu > li > a.trigger").on("click",function(e){
		var current=$(this).next();
		var grandparent=$(this).parent().parent();
		if($(this).hasClass('left-caret')||$(this).hasClass('right-caret'))
			$(this).toggleClass('right-caret left-caret');
		grandparent.find('.left-caret').not(this).toggleClass('right-caret left-caret');
		grandparent.find(".sub-menu:visible").not(current).hide();
		current.toggle();  // показ/скрытие submenu
//		alert('1 !');
		e.stopPropagation();
	});
	$(".dropdown-menu > li > a:not(.trigger)").on("click",function(e){
		var root=$(this).closest('.dropdown');
		root.find('.left-caret').toggleClass('right-caret left-caret');
//		alert('2 !');
        
        event.preventDefault();
		event.stopPropagation();
	});

Как мне кажется, где-то разорвалась цепочка обработчиков событий для элементов меню и геообъектов, про которую говорится в аннотации к примеру. Используемые для навигации по меню добавленные обработчики не влияют на ситуацию. Без них меню высвечивается сразу развернутым, но клик по любому из пунктов просто закрывает все уровни без изменений на карте.

В какую сторону смотреть ? Где и что нужно подправить ?

1 комментарий
Bootstrap,меню,события
Яндекс панорама
Mylandbroker
9 июня 2016, 11:16

Доброго времени суток, уважаемые!

Подскажите, возможно ли отловить событие закрытия плеера панорамы, созданной через апи. У меня карта на весь экран и когда я создаю панораму, выставляю у блока, в котором создаётся панорама высокий z-index. Всё отлично работает, однако, когда закрываю панораму, этот блок перекрывает карту и с ней невозможно работать. Хочу отловить событие закрытия плеера панорамы и выставлять маленький z-index, чтобы блок обратно под карту уходил.

6 комментариев
панорамы,события
Object Manager и клик по координатам
Artem Izmest'ev
18 января 2016, 13:03

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

Подскажите, у меня есть полигоны, получаю списком через JSON с сервера в асинхронном режиме.
У полигона есть событие, навешано через стандартый диспетчер событий для ObjectManager'a.
Также есть координаты объекта (возвращаются из SearchControl'a).

Собственно, вопрос: как правильно возбудить событие клика по координатам?
Что-то типа:

objectManager.objects.events.fire('click', {
target: objectManager.objects,
coordPosition: result.geometry.getCoordinates()
});

Заранее спасибо за ответ.

 

2 комментария
fire,API 2.1,координаты,события,ObjectManager
Выделение активной метки
fotoles13
11 января 2016, 11:43

Добрый день!

Не подскажите, как сделать метку, на которой находится пользователь отличной от пройденых и не пройденых?

Использую стандартные стили.

Сечас сделал вот так: посмотреть ссылку в новом окне

Данные берутся из json.

 



клик по метке
        myPlacemark.events.add('click', function (e) {
замена стиля по клику
       e.get('target').options.set('preset', 'islands#greenIcon');
6 комментариев
метка,API 2.1,события
Не обновляется размер balloon'а у метки
FlinnRaider
25 ноября 2015, 10:39

В качестве основы использую вот этот пример - https://tech.yandex.ru/maps/jsbox/2.1/balloon_autopan

 

При изменении контента балуна через placemark.properties.set('balloonContent', '...'), балун меняет свой размер в соответствии с кол-вом контента, руководствуясь инструкцями из макета балуна (примечание 1).

 

В моем случае нужно загрузить содержимое балуна через ajax вместе с некоторыми inline-скриптами (само-собой через простую вставку это не работает (примечание 2)).

Я загружаю контент при помощи jquery-pjax, который автоматически обновляет контент тега с указанным id (примечание 3).

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

 

Вопрос: какой метод или событие вызвать для того, чтобы инициировать обновление размеров балуна?

 

P.S. Общий пример кода в примечании 4.

 

$[[options.contentLayout observeSize minWidth=235 maxWidth=235 maxHeight=350]]
// Строка 17 из этого примера https://tech.yandex.ru/maps/jsbox/2.1/balloon_autopan

 

 var $balloonContentContainer = $('#my-balloon');
$.get('/get-my-balloon-content').done(function(renderedHtml){
    $balloonContentContainer.html(renderedHtml); // Это не отработает как необходимо, так как в возвращенном html есть inline-скрипты, которые нужно выполнить
})

  

$.pjax({
    timeout  : false,
    push      : false,
    replace   : false,
    url          : '/get-my-balloon-content',
    container: '#my-balloon'
});

 

 var placemark = new ymaps.Placemark(
    feature.geometry.coordinates,
    feature.properties,
    feature.options
);
placemark.events.add('balloonopen', () => {
    var selector = `#${placemark.properties.get('containerId')}`;
    var promise     = $.pjax({
        timeout  : false,
        push     : false,
        replace  : false,
        url      : placemark.properties.get('contentUrl'),
        container: selector
    });
  promise.done(() => {
      // Здесь нужно вызвать событие изменения размеров балуна. 
      // placemark.events.fire('change') // Что-то вроде этого.
  })
});

 

6 комментариев
API 2.1,события,placemark,balloon,балун,метка,Resize
Возврат карты после закрытия балун-панели
Александр Белый
23 ноября 2015, 11:13

Добрый день.

 

В примере по ссылке если кликнуть по маркеру, вылезет балун-панель, при этом карта отъедет вверх. А как можно вернуть карту при закрытии бален-панели? Спасибо.

1 комментарий
метка,API 2.1,события,балун
Проблемы с Map.panTo() при использовании внешних событий не относящихся к карте
nikita.pimoshenko
23 октября 2015, 11:56

Есть карта, на которой висят слушатели событий карты, например 'click', при клике метка на карте прягает в место клика и центр карты сдвигается на метку с помощью panTo и все работает отлично, с учетом даже того что расстояние перемещения метки по карте маленькое. Далее есть поля ввода ккординат и зума, на 'change' этих полей повещены обработчики, которые перемещают метку по карте, при использовании метода setCenter с измененными координатами, центр карты успешно перемещается(но естественно мгновенно, не помогает даже свойство options[duration]), при использовании panTo центр карты не перемещается, даже если расстояние будет в несколько областей видимости.

  

function inputEventsUpdate()
{
   var coords = map_object.get_coords();
myPlacemark.geometry.setCoordinates([coords.lat, coords.long]);
var panto = myMap.panTo([coords.lat, coords.long]);
var onRejected = function(data){
      console.log(data, 'rejected');
};
var onFulfilled = function(data) {
      console.log(data, 'fulfiled');
};
panto.then(onFulfilled, onRejected);
myMap.setZoom(coords.zoom);
}

 

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

2 комментария
API 2.1,события,Map,panTo,Map.panTo
Как получить содержимое балуна в виде DOM/jQuery-объекта?
watches-arwm
22 октября 2015, 06:29

Хочется в балуне показывать HTML-форму, submit которой будет контролироваться обработчиком.

Сделать балун с формой получилось, а вот научиться ловить её события и вообще как-то получить доступ к её DOM-узлу — нет.

 

new ymaps.Placemark(
    ...
    { balloonContent: "<form>...</form>" }
);


Вот как обратиться к balloonContent так, чтобы сделать из него jQuery-объект и назначить обычные DOM event-обработчики (или хотя бы второе)?

3 комментария
события,балун
Ссылка в balloonContentHeader при кластеризации
flusovs
19 октября 2015, 12:26

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

 

Исходные данные (используется)

1. api-maps версии 2.1

2. loadingObjectManager = new ymaps.LoadingObjectManager(

            '/Map/GetOrganizations4LOM?coord=%b', {

                // Включаем кластеризацию.

                clusterize: true

            });

3. На серверной стороне написан класс PropertiesFeature, который вытаскивает данные из инстанса организации и подставляет их в данный класс в виде html.  

 public class PropertiesFeature

 {

      public PropertiesFeature(Organizations org)

      {

         balloonContentHeader = string.Format("<a href='{0}'>{1}</a>", url, org.Name);

         ....

         balloonContentBody = html;

         ....

         balloonContentFooter = html;

      } 


        public string balloonContentHeader;

        public string balloonContentBody;

        public string balloonContentFooter;

 }

 

Отсюда возникает 2 вопроса:

  1. Правильно ли формировать html разметку для balloonContentHeader.
  2. В случае если объект кластеризован, то при нажатии на кластер открывается окно с со спиком объектов для данного адреса. При этом нажатие на название организации в списке приводит к открытию новой вкладки вместо открытие таба на карте. Как подавить подобное поведедение если объект кластеризован. 

 

 

P.S.: текущее решение можно посмтортеть на сайте http://ved-services.com/Map

5 комментариев
кластеризатор,события,балун
Баллун кластера при наведении.
leon-nim
9 октября 2015, 00:53

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

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

Содержимое балуна формируется динамически.

Для отключения отображения при клике я отключирл отображение балуна кластера: hasBalloon: false. И хочу использовать балун карты.

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

Как узнать координаты кластера, что бы вывести над ним балун карты?

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

Правильной ли я дорогой иду или можно отключить отображение балуна кластера при клике и отображать при наведении?

Если можно, дайте ссылки на примеры.

 

1 комментарий
кластеризатор,события,балун
Маршрут - балун на WayPoint
psytechno604
6 октября 2015, 10:15

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

Маршрут строю как в примере https://tech.yandex.ru/maps/jsbox/2.1/multiroute_view_options. Там есть примеры про балун на маршрут - но мне надо на конечные точки. Там же в примерах нашёл, как повесить событие (например, click: multiRoute.events.add('click', function(e) {...})) на маршрут. В принципе, тоже решение - брать координаты клика (если их конечно можно получить), если близко к waypoint, то отображать baloon. Но тут основная проблема - что значит "близко"? Будет зависеть от масштаба карты, да и маркер может быть произвольной формы. Поэтому хотелось бы как-то более изящно это сделать, повесив событие на сам маркер. Вопрос - как? 

4 комментария
маршрутизация,события,multiRoute,балун,метка
Странное поведение в Safari
Удалённый пользователь
5 октября 2015, 16:26

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

 

Работаю с API Карт и поймал такой неприятный момент:

- создаю точку с картинкой

- при наведении на точку меняю изображение на другое (как на этом примере).

В Firefox, Chrome всё работает без проблем, а в Safari (8) "мигает" каждый раз при смене картинки (наведении и отведении). На видео (собственно и сам пример из него) сначала Firefox (0:00 - 0:08), потом Safari (0:08 - 0:19).

Это косяк Safari cо сменой background-image или какой-то затык в API Яндекс.Карт?

 

Заранее спасибо.

2 комментария
метка,API 2.1,события
Как правильно удалить событие?
Удалённый пользователь
18 сентября 2015, 16:14

 https://jsfiddle.net/murr2015/0tyggjqa/1/

Выставляю маркер.

Задаю событие click.

 myPlacemark.events.add('click', function (e){
            e.preventDefault();
            console.log('Отработали с e.preventDefault()');
        });

Тут же удаляю событие

myPlacemark.events.remove('click');

Снова навешиваю событие click.

myPlacemark.events.add('click', function(){
            console.log('Отработали БЕЗ e.preventDefault()');
        });

Теперь при клике у меня событие задваивается.


Отработали с e.preventDefault()
Отработали БЕЗ e.preventDefault()

И preventDefault продолжает так же действовать.

В принципе та же фигня с другими объектами.

3 комментария
события,API 2.0
Грамотное использование функции route() в цикле
andrew.dorohoff
15 сентября 2015, 05:14

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

Есть координаты нескольких точек, и нужно узнать расстояние до каждой из них.

 var point = {
  name: "Some place",
  coordinates: [55.75399400, 37.62209300],
  distance: -1
};

 

И есть массив таких точек (points).

for (var pointIndex in points) {
  ymaps.route([myCoordinates, points[pointIndex].coordinates]).then(function(route) {
    var distance = route.getLength()   
    /* points[pointIndex].distance = distance; */
  });
}

 

Но воспользоваться конструкцией "points[pointIndex].distance = distance;" из-за асинхронности мы не можем.

Как же тогда занести информацию о расстоянии в каждый из объектов точки?

4 комментария
маршрутизация,расстояние,события,API 2.1,route
Частота обновления Я.карт по МО, Рязани, Туле
Николай
3 сентября 2015, 14:31

Кто нибудь может подсказать когда обновление планируется по регионам. У нас стройка и т.п. хотим метки сделать. Возможно ли подгадать чтобы успели притворить в жизнь все задуманное??? 

6 комментариев
события
Управляемое изменение масштаба карты при клике на кластер
Игорь
31 августа 2015, 14:21

Добрый день. 

Есть ли в стандартном функционале возможность настроить масштаб при клике на кластер? Иначе приближение получается слишком большим.

Спасибо.

1 комментарий
кластеризатор,события
Как из шаблона балуна достучаться до геообъекта, его породившего?
Удалённый пользователь
17 августа 2015, 15:46

API 2.0

К примеру:

Изменяю через фабрику шаблон балуна, добавляю в шаблон кнопку "удалить".

Хочу, чтобы при нажатии этой кнопки геообъект открытого балуна удалялся с карты.

Добавили плейсмарк на карту - кликнули - открылся балун - нажали внутри балуна кнопку "удалить" - плейсмарк удалился.

При клике e.target возвращает саму html-кнопку.

Подскажите новичку, плс, не соображу. ((

 

 

3 комментария
метка,события,API 2.0,балун