/* * Набор функций для работы с маршрутами. */ /** * Строит маршрут по выбранным точкам. * @returns {undefined} */ function buildRoute() { wayPoints = Array(); if (route) myMap.removeLayer(route); $('#wayPoints div').each(function(i, el) { wayPoints.push({latLng: points[$(el).attr('pointId')]._latlng}); }); if (wayPoints.length > 1) { L.Routing.osrm().route(wayPoints, function(err, routes) { if (err) { console.error(err); alert('Произошла ошибка. Вероятно построить маршрут по выбранным точкам невозможно.'); } else { route = L.Routing.line(routes[0]); distance = Math.round(routes[0].summary.totalDistance / 1000); $('#routeDistance').html('Протяженность ' + distance + ' км.'); route.addTo(myMap); } }); 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], false); } return true; } /** * Подгружает маршрут с заданныи ID с сервера. * @param {Integer} id * @returns {undefined} */ function loadRoute(id) { openBox('Route') $.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, build) { $('#wayPoints').append('