Клуб API Карт

Мультимаршрут - как отключить балун при нажатии на маршрут

rarescrap
24 августа 2017, 06:57
Этот балун нужно отключить


Здравствуйте. Существует ли способ отключить балун на карте выше при клике на мультимаршрут? Я пробовал переопределять клик по нему, дабы он ничего не делал, но это не сработало.

multiRoute.events.add("click", function(){
    // Ничего не делаем
});

Весь JS карты:

function init () {
	/**
	 * Тестовый массив с метками адресов
	 */
	var arr = new Array();
	for(var i=0; i<window.getDataJSInterface.getRoutePointsNumber(); i++){
	    arr[i] = new Array();
	    arr[i][0] = window.getDataJSInterface.getRoutePointCoord(i, 0);
	    arr[i][1] = window.getDataJSInterface.getRoutePointCoord(i, 1);
	  }
	
    /**
     * Создаем мультимаршрут.
     * Первым аргументом передаем модель либо объект описания модели.
     * Вторым аргументом передаем опции отображения мультимаршрута.
     * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRoute.xml
     * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRouteModel.xml
     */
    var multiRoute = new ymaps.multiRouter.MultiRoute({
        // Описание опорных точек мультимаршрута.
        referencePoints: arr
    }, {
        // Автоматически устанавливать границы карты так, чтобы маршрут был виден целиком.
        boundsAutoApply: true
    });

    // Создаем карту с добавленными на нее кнопками.
    var myMap = new ymaps.Map('map', {
        center: [55.750625, 37.626],
        zoom: 7,
        controls: ['zoomControl']
    }, {
        buttonMaxWidth: 300
    });
   
    // Ожидаем успешного построения маршрута
    multiRoute.model.events.add("requestsuccess", function(){
		window.updateDataJSInterface.updateRouteLength( multiRoute.getActiveRoute().properties.get('distance').value );
		
		// Возвращает пиздец, если расстояние огромно
		//window.console.log( multiRoute.getActiveRoute().properties.get('durationInTraffic').value );
		
		var s = multiRoute.getActiveRoute().properties.get('duration').value;
		var m = (s/60) % 60;
		window.console.log(m);
		var h = s / 3600;
		window.console.log(h);
		
		window.updateDataJSInterface.updateTripTime(h, m);
    });

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

ymaps.ready(init);

Можно ли как-нибудь отлючить этот балун?

3 комментария
такой возможности нет
dimik,
Похоже на то. Но я нашел решение, которое мне подходит. Не самое лучшее, но сгодиться - отключить обработку кликов в контейнере карты. Мне это подходит, т.к. карта отображается на WebView внутри андроида. Вот я и запретил WebView обрабатывать касания.
dimik,
А вот нет. Решение-то оказывается все таки есть.


Во-первых, определяем свой лэйаут для балуна используя фабрику макетов. Передаем туда обычный div и никак его не заполняем


var balloonLayout = ymaps.templateLayoutFactory.createClass(
"<div>", {
build: function () {
this.constructor.superclass.build.call(this);
}
}
);

Потом запихиваем balloonLayout в конструктор мультимаршрута



var multiRoute = new ymaps.multiRouter.MultiRoute({
// Описание опорных точек мультимаршрута.
referencePoints: arr
}, {
// Автоматически устанавливать границы карты так, чтобы маршрут был виден целиком.
boundsAutoApply: true,

balloonLayout: balloonLayout
});
И все! Клин по маршруту теперь не выводит балун