@rasul266

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

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

<script>
        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
                    }
                }),
                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 () {

                    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('Ошибка');
                            }
                        );
                    }
                });

            });

           
        }

    </script>
  • Вопрос задан
  • 311 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Asokr
У вас же есть расстояние, не знаю, в чем оно меряется, но что-то типа простого условия:
var length = route.getActiveRoute().properties.get("distance");

if (length.value > 50000) {
balloonContentLayout = ymaps.templateLayoutFactory.createClass(
                                '<span>Вы находитесь слишком далеко от завода- Вам придется приехать</span><br/>');
} else {
balloonContentLayout = ymaps.templateLayoutFactory.createClass(
                                '<span>Расстояние от завода: ' + length.text + '.</span><br/>' +
                                '<span style="font-weight: bold; font-style: italic">'+price+'</span>');
}

Ну и дальше где ни будь выйти из функции, чтобы маршрут не строился...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 06:06
1500 руб./в час
22 нояб. 2024, в 06:04
1 руб./за проект
22 нояб. 2024, в 03:54
1500 руб./за проект