Клуб API Карт

Поиск начальной и конечной точки через форму.

Пост в архиве.

Сейчас у меня карта с фиксированной начальной точкой маршрута и конечной по клику(!). Никак не могу разобраться, как "отвязать" начальную точку от конкретного места и задавать координаты обеих точек через такую форму:


Начало:


Конец:

 

function init() {
    var myMap = window.map = new ymaps.Map('YMapsID', {
            center: [55.751574, 37.573856],
            zoom: 10,
            behaviors: ['drag', 'scrollZoom']
        }),
        search = new ymaps.control.SearchControl({
            useMapBounds: true,
            noCentering: true,
            noPlacemark: true
        }),
        tarifs = [{
            id: 'moscow',
            name: 'Москва',
            label: 'Маршрут по Москве',
            color: '#dc143c',
            cost: 0,
            url: 'moscow.json'
        }, {
            id: 'mo',
            name: 'Московская область',
            label: 'Маршрут за МКАД',
            cost: 40,
            color: '#fc0fc0',
            url: 'mo.json'
        }],
        calculator = new DeliveryCalculator(myMap, 'Тверская 17', tarifs);

    var trafficControl = new ymaps.control.TrafficControl({shown: false});  //пробки
    map.controls.add(trafficControl, {top: 10, left: 10});  //пробки

    map.controls.add('smallZoomControl', { top: 70, right: 5 }); //зум

    myMap.controls.add(search, { right: 5, top: 5 }); //поиск

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

            calculator.setDestination(point);
    });

    myMap.events.add('click', function (e) {
        calculator.setDestination(e.get('coordPosition'));
    });
}

ymaps.ready(init);

 

 <form id="search_route">
<b>Начало: </b>
<input id="start" type="text" value=" " style="width: 360px;"><br />
<b>Конец: </b>
<input id="end" type="text" value=" " style="width: 360px;">
<input type="submit" value="Найти"/>
</form>

 

Ещё хотелось бы добавить возможность вставки промежуточных точек маршрута.

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

11 комментариев
Вам нужно расчитывать стоимость доставки по разным тарифам для разных зон, или просто маршрут строить? Если просто маршрут, то этот пример несколько сложноват.

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

Строки (Откуда - Куда) и отображение их на карте отлично реализованы здесь. Только там нет возможности добавлять промежуточные точки.

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

А если нужно показать посетителю несколько вариантов маршрутов общественного транспорта из заданной им начальной точки в выбранную конечную? Кстати, показывать карту не обязательно, ведь людей интересует сколько пересадок и как быстро можно добраться.

Не получится:
1. Маршрутизация ОТ через АПИ не предоставляется
2. Использовать сервисы АПИ без размещения карты на сайте запрещено пользовательским соглашением

Спасибо за ответ.

1. Имеется в виду такое же, как и в первоначальном вопросе, поле ввода "Начало", а "Конец" заранее известен. Это уточнение не меняет вашего ответа?

не меняет.
поля полями, а карта должна быть.

Важнее даже не смена точки отправления (её и так можно передвигать после построения маршрута), а сам поиск этих точек через форму, потому что через стандартную форму поиска находится только конечная точка.  Где-то можно посмотреть исходники для стандартных Яндекс.Маршрутов, там отлично представлена эта функция?!

маршрутизатор может принимать начальную/конечную точку ввиде адреса
Если вы посмотрите исходники примера, там она как раз ввиде адреса и задается

а как определить что машрут вышел за мкад и насколько?

Можно посмотреть как это сделано в этом примере
http://ymapsapi.ya.ru/replies.xml?item_no=1165