@vacompanyad

Как добавить зону в Яндекс Maps api?

Здравствуйте! Подскажите, пожалуйста, как добавить зону в яндекс карту, чтобы если пользователь выбирает адрес в городе, то тариф 5, а если за пределами КАДа (Санкт-Петербурга), тогда к базовому тарифу (5 000 руб) добавляется 60 руб за км.?

Код js

ymaps.ready(init);

function init() {
	
    // Стоимость за километр.
    var DELIVERY_TARIFF = 60,
    // Минимальная стоимость.
        MINIMUM_COST = 5000,
        myMap = new ymaps.Map('map', {
            center: [59.939095, 30.315868],
            zoom: 9,
            controls: []
        }),
		
		
		
    // Создадим панель маршрутизации.
        routePanelControl = new ymaps.control.RoutePanel({
            options: {
                // Добавим заголовок панели.
                showHeader: true,
                title: 'Расчёт доставки'
            }
        }),
        zoomControl = new ymaps.control.ZoomControl({
            options: {
                size: 'small',
                float: 'none',
                position: {
                    bottom: 145,
                    right: 5310
                }
            }
        });
 
    // Пользователь сможет построить только автомобильный маршрут.
    routePanelControl.routePanel.options.set({
        types: {auto: true}
    });

     routePanelControl.routePanel.state.set({
        fromEnabled: false,
        from: 'Санкт-Петербург, Рабочая улица, 14к1'
     });

    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();
            }
        });
 
    });

    // Функция, вычисляющая стоимость доставки.
    function calculate(routeLength) {
        return Math.max(routeLength * DELIVERY_TARIFF + MINIMUM_COST);
    }
}
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы