Задать вопрос
@rasul266

Для расчета стоимости доставки использую готовое api яндекс карты. Как отменить построение маршрута если адрес доставки дальше 50 км?

Нужно чтоб вообше маршрут на карте не строился если адрес дальше 50 км.

ymaps.ready(init);

        function init() {
            // Стоимость за километр.
            var DELIVERY_TARIFF = 400,
                // Минимальная стоимость.
                MINIMUM_COST = 2400,

                SUMM = 0,
                myMap = new ymaps.Map('map1',{
                    center: [55.189660, 36.650437],
                    zoom: 11,
                    controls: []
                }),
                // Создадим панель маршрутизации.
                routePanelControl = new ymaps.control.RoutePanel({
                    options: {
                        // Добавим заголовок панели.
                        showHeader: true,
                        title: 'Расчет стоимости доставки',
                        maxWidth: '300px',
                        autofocus:true,
                        radius:50
                    }

                }),
                zoomControl = new ymaps.control.ZoomControl({
                    options: {
                        size: 'small',
                        float: 'none',
                        position: {
                            bottom: 145,
                            right: 5
                        }
                    }
                });
            // Пользователь сможет построить только автомобильный маршрут.
            routePanelControl.routePanel.options.set({
                types: {auto: true},

            });

            // Если вы хотите задать неизменяемую точку "откуда", раскомментируйте код ниже.
            routePanelControl.routePanel.state.set({
                fromEnabled: false,
                from: ' Лермонтова 16А'

            });

            myMap.controls.add(routePanelControl).add(zoomControl);
            // Получим ссылку на маршрут.
            routePanelControl.routePanel.getRouteAsync().then(function (route) {

                // Зададим максимально допустимое число маршрутов, возвращаемых мультимаршрутизатором.
                route.model.setParams({results: 1}, true);

                // Повесим обработчик на событие построения маршрута.
                route.model.events.add('requestsuccess', function (event) {

                    var activeRoute = route.getActiveRoute();

                    if (activeRoute) {
                 
                        // Получим протяженность маршрута.
                        var length = route.getActiveRoute().properties.get("distance"),
                            // Вычислим стоимость доставки.
                            price = calculate(Math.round(length.value / 1000)),

                            // Создадим макет содержимого балуна маршрута.

                            balloonContentLayout = ymaps.templateLayoutFactory.createClass(
                                '<span>Расстояние от завода: ' + length.text + '.</span><br/>' +
                                '<span style="font-weight: bold; font-style: italic">'+price+'</span>');

                        // Зададим этот макет для содержимого балуна.
                        route.options.set('routeBalloonContentLayout', balloonContentLayout);
                        // Откроем балун.
                        activeRoute.balloon.open();

                        var adr = routePanelControl.routePanel.state.get("to");
                        var myCoordsfrom = [adr];
                        var myGeocoder = ymaps.geocode(myCoordsfrom);
                        myGeocoder.then(
                            function (res) {
                                var nearest = res.geoObjects.get(0);
                                var name = nearest.properties.get('text');
                                document.querySelector('#address').value = name;
                            },
                            function (err) {
                                alert('Ошибка');
                            }
                        );
                    }
                });

            });
        }
  • Вопрос задан
  • 175 просмотров
Подписаться 2 Простой 3 комментария
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы