/* * Набор функций для работы с маршрктами. */ /** * Строит маршрут по выбранным точкам. * @returns {undefined} */ function buildRoute() { wayPoints = Array(); if (route) myMap.geoObjects.remove(route); $('#wayPoints div').each(function(i, el) { wayPoints.push(points[$(el).attr('pointId')].geometry.getCoordinates()); }); ymaps.route(wayPoints, { mapStateAutoApply: true }).then(function(newRoute) { route = newRoute; route.options.set({ // в балуне выводим только информацию о времени движения с учетом пробок balloonContenBodyLayout: ymaps.templateLayoutFactory.createClass('$[properties.humanJamsTime]'), strokeColor: '9000ffff', opacity: 0.9 }); myMap.geoObjects.add(route); distance = Math.round(route.getLength() / 1000); $('#routeDistance').text(distance + ' км.'); routeToURL(); }); } /** * Сохраняет маршрут на сервере. * @returns {undefined} */ function saveRoute() { wayPoints = Array(); name = prompt('Как назвать маршрут?', 'Мой маршрут'); $('#wayPoints div').each(function(i, el) { wayPoints.push($(el).attr('pointId')); }); if (name && name != '') $.ajax({ type: "POST", url: "/json/saveroute/", data: { name: name, points: wayPoints }, success: function(data) { console.log(data); }, error: function(data) { console.log(data); } }); } /** * Формирует список точек маршрута из JSON.ы * @param {JSON} data * @returns {Boolean} */ function loadRouteJSON(data) { $('#wayPoints').text(''); response = JSON.parse(data); for (var k in response) { addToRoute(response[k]); } return true; } /** * Подгружает маршрут с заданныи ID с сервера. * @param {Integer} id * @returns {undefined} */ function loadRoute(id) { $('#myRoutesWindow').hide(200); $.ajax({ url: "/json/route/id/" + id, success: function(data) { loadRouteJSON(data) buildRoute(); } }); } /** * Удаляет маршрут с заданным ID с сервера. * @param {Integer} id * @returns {undefined} */ function deleteRoute(id) { $.ajax({ url: "/json/deleteroute/id/" + id, success: function(data) { console.log('Route '+id+' was removed.'); } }); } /** * Добавляет точку с маршрут (в список выбранных точек) * @param {Integer} id * @returns {Boolean} */ function addToRoute(id) { console.log(points[id]); $('#wayPoints').append('