Передача переменной из 1 функции в другую
Доброго времени суток всем. Я как человек далекий от программирования, хотел бы узнать как мне решить данный ребус.
Весь код, MAP.API яндекс карт.
В конце JS кода, менял только условия вычисления, и проделывал попытки вынести заветную переменную length из другой функции, в <span> в другой контейнер. Как можно это реализовать, для того чтобы уже проводить махинации с этой переменной.
Мне нужно вывести дистанцию в отдельную функцию, переменную чтобы уже оттуда выполнять действия над переменной.
Я так понял, API карт, не дает в одном и том же коде добавлять другие элементы(я пытался вывести в <span> но он просто не отображается, либо уходит под карту(это неизвестно).
ymaps.ready(init);
function init() {
// Стоимость за километр.
var DELIVERY_TARIFF = 18;
var DOP_PRICE_10 = 400;
var DOP_PRICE_20 = 200,
// Минимальная стоимость.
MINIMUM_COST = 500,
myMap = new ymaps.Map('map', {
center: [56.088408, 54.248236],
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: 2
}, 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) {
if (routeLength < 10) {
return Math.max((routeLength * 2) * DELIVERY_TARIFF + DOP_PRICE_10);
} else
if (routeLength > 10 && routeLength < 30) {
return Math.max((routeLength * 2) * DELIVERY_TARIFF + DOP_PRICE_20);
} else
if (routeLength > 30) {
return Math.max((routeLength * 2) * DELIVERY_TARIFF);
}
}
function InIn(length) {
var line = length
document.getElementById('FuncIn').innerHTML = line;
}
}
<!--
Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
-->
<script type="text/javascript" src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey="></script>
<div id="map"></div>
<div id="InOn">
<span id="FuncIn"></span>
</div>