Расчёт расстояния при помощи API Карт Яндекс

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

  • Расчёт расчет расстояния
  • Расчёт стоимости доставки
  • Расчёт стоимости грузоперевозок
  • Расчёт стоимости пассажирских перевозок
  • и т.д. и т.п.
Сервера, Web и не только

Исходники

deliveryCalculator.html

Тестовый ключ НЕ БУДЕТ работать на других сайтах. Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/

				
					<!DOCTYPE html>
<html>
<head>
    <title>Расчет стоимости доставки</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!--
        Укажите свой API-ключ.
    -->
    <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&amp;apikey=<ваш API-ключ>" type="text/javascript"></script>
    <script src="deliveryCalculator.js" type="text/javascript"></script>
    <style>
        html, body, #map {
            width: 100%;
            height: 100%;
            padding: 0;
            margin: 0;
        }
    </style>
</head>
<body>
    <div id="map"></div>
</body>
</html>
				
			

deliveryCalculator.js

				
					ymaps.ready(init);

function init() {
    // Стоимость за километр.
    var DELIVERY_TARIFF = 20,
    // Минимальная стоимость.
        MINIMUM_COST = 500,
        myMap = new ymaps.Map('map', {
            center: [60.906882, 30.067233],
            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: 10
                }
            }
        });
    // Пользователь сможет построить только автомобильный маршрут.
    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();
            }
        });

    });
    // Функция, вычисляющая стоимость доставки.
    function calculate(routeLength) {
        return Math.max(routeLength * DELIVERY_TARIFF, MINIMUM_COST);
    }
}
				
			
Свежие записи
Команда RD

Команда RD и RMDIR позволяют удалять как каталоги, так и

Команда RENAME

RENAME что это? Команда RENAME позволяет переименовать файл или каталог.

Команда MD

Команда md позволяет создавать каталог или промежуточные каталоги в указанном

Серверы и администрирование
help2site
Перезапуск сервера Apache

Бывает что возникают ситуации при которых нужно перезагрузить Apache, при этом не обязательно перезагружать весь сервер целиком. Для того, чтобы перезагрузить сервера Apache нужно: Подключиться

SEO и диагностика сайтов
help2site
Оптимизация сайта

Оглавление SEO оптимизация. Что такое seo оптимизация. SEO оптимизация сайта – это тема сегодняшней статьи на блоге. Приветствую всех читателей и желаю всем успехов в изучении

SEO и диагностика сайтов
help2site
Файл robots.txt., who you are?

Оглавление Файл robots.txt и его написание. Файл robots.txt необходим для любого вэб-ресурса, так как с его помощью осуществляется управление над всеми поисковыми системами (роботами), в чем,

Windows и Windows Server
help2site
Как отключить стандартный брандмауэр Windows XP

У windows xp существует свой собственный фаервол. Кого-то он вполне устраивает, но из-за своей назойливости и навсегда стабильной работы, он не устраивает большинство пользователей. Чтобы

CMS и сайты
help2site
Drupal theming: темы, регионы, меню и комментарии

Как добавить новую позицию (регион) блока в тему (шаблон) Друпал 7. Добавление новой позиции в тему Друпал 7 для большей функциональности. Создание нового региона в

Разработка сайтов
help2site
Что такое IDE и зачем она нужна программисту

Когда начинаешь программировать, код можно писать практически в любом текстовом редакторе. Даже обычный Блокнот способен сохранить файл .php, .html или .js. Но довольно быстро становится

Серверы и администрирование
help2site
Добавить нового клиента в Bill manager

Входим в Bill manager, переходим в пункт меню Клиент—> Клиенты —> иконка Создать Откроется форма Регистрации клиента, вносим данные Клиента Добавим нового клиента в соответствующую