Клуб API Карт

Два поиска на двух картах

Vadim-kond
28 декабря 2016, 14:35

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

ymaps.ready(['DeliveryCalculator']).then(function init () {
    myMap = new ymaps.Map('tab-2', {
            center: [55.149402, 36.623880],
            zoom: 12,
            type: 'yandex#map',
            controls: []
        }),
        searchFinishPoint = new ymaps.control.SearchControl({
            options: {
              useMapBounds: true,
              noCentering: true,
              noPopup: true,
              noPlacemark: true,
              placeholderContent: 'Адрес конечной точки',
              size: 'large',
              float: 'none',
              position: { left: 10, top: 14 }
            }
        }),
        calculator = new ymaps.DeliveryCalculator(myMap);
        calculator.setStartPoint([55.149402, 36.623880]);

    myMap.controls.add(searchFinishPoint);

    searchFinishPoint.events
    .add('resultselect', function (e) {
            var results = searchFinishPoint.getResultsArray(),
                selected = e.get('index'),
                point = results[selected].geometry.getCoordinates();

            // Задаем конец маршрута.
            calculator.setFinishPoint(point);
        })
        .add('load', function (event) {
            // По полю skip определяем, что это не дозагрузка данных.
            // По getResultsCount определяем, что есть хотя бы 1 результат.
            if (!event.get('skip') && searchFinishPoint.getResultsCount()) {
                searchFinishPoint.showResult(0);
            }
        });
});

второй код
 

ymaps.ready(['DeliveryCalculator_2']).then(function init () {
    mapMsc = new ymaps.Map('tab-1', {
            center: [55.814842, 37.777817],
            zoom: 12,
            type: 'yandex#map',
            controls: []
        }),
        searchFinishPoint1 = new ymaps.control.SearchControl({
            options: {
              useMapBounds: true,
              noCentering: true,
              noPopup: true,
              noPlacemark: true,
              placeholderContent: 'Адрес конечной точки',
              size: 'large',
              float: 'none',
              position: { left: 10, top: 14 }
            }
        }),
        calculator = new ymaps.DeliveryCalculator_2(mapMsc);
        calculator.setStartPoint([55.814842, 37.777817]);

    mapMsc.controls.add(searchFinishPoint1);

    searchFinishPoint1.events
    .add('resultselect', function (e) {
            var results1 = searchFinishPoint1.getResultsArray(),
                selected1 = e.get('index'),
                point1 = results1[selected1].geometry.getCoordinates();

            // Задаем конец маршрута.
            calculator.setFinishPoint(point1);
        })
        .add('load', function (event1) {
            // По полю skip определяем, что это не дозагрузка данных.
            // По getResultsCount определяем, что есть хотя бы 1 результат.
            if (!event1.get('skip') && searchFinishPoint1.getResultsCount()) {
                searchFinishPoint1.showResult(0);
            }
        });
});

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

2 комментария
Подписаться на комментарии к посту
Соберите пример на jsfiddle, чтобы Вам смогли подсказать.