Дополнение к прошлому коммиту
This commit is contained in:
parent
43b5eccbb4
commit
d9134fae03
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* Приложение
|
||||
*/
|
||||
|
||||
// ------------ Система статусов приложения ------------------------------------
|
||||
var statusReady = 0; // Обычный режим. Просмотр точек, навигация по карте и прочее.
|
||||
var statusHunting = 1; // Курсор-прицел. Поиск места для добавления точки.
|
||||
var statusReHunting = 2; // КУрсор прицел. Переопределение координат точки.
|
||||
var statusAdd = 3; // Открыто окно добавления точки - форма.
|
||||
var statusEdit = 4; // Открыто окно редактирования точки. В нём информация о существующей точке, включая ID.
|
||||
var statusSendingToServer = 5; // Отправлен запрос на сервер - ждём, не даём жать кнопку повторно, отвлекаем пользователя.
|
||||
|
||||
var status = statusReady;
|
||||
var statusPrev = statusReady;
|
||||
|
||||
/**
|
||||
* Устанавливает новое значение статуса.
|
||||
* @returns {undefined}
|
||||
*/
|
||||
function setStatus(value)
|
||||
{
|
||||
statusPrev = status;
|
||||
status = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Меняет значение статуса на предыдущее.
|
||||
* @returns {undefined}
|
||||
*/
|
||||
function resetStatus()
|
||||
{
|
||||
tmp = status;
|
||||
status = statusPrev;
|
||||
statusPrev = tmp;
|
||||
}
|
||||
|
||||
// -------------------------------- Libs ---------------------------------------
|
||||
|
||||
/**
|
||||
* Возвращает GET параметр
|
||||
* @param string name
|
||||
* @returns string
|
||||
*/
|
||||
function getURLParameter(name) {
|
||||
return decodeURI((RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || [, null])[1]);
|
||||
}
|
||||
|
||||
// ----------------- Работа с правым блоком (BOX) ------------------------------
|
||||
|
||||
function openBox(type, keepOpen)
|
||||
{
|
||||
newTab = $('#box'+type).css('display') == 'none';
|
||||
keepOpen = keepOpen == true;
|
||||
|
||||
if (!newTab && !keepOpen)
|
||||
{
|
||||
return closeBox();
|
||||
}
|
||||
|
||||
$('div','#control').removeClass('active');
|
||||
$('#box').children('div').css('display', 'none');
|
||||
|
||||
$('.boxButton'+type).addClass('active');
|
||||
$('#box'+type).css('display', 'block');
|
||||
$('body').addClass('openBox');
|
||||
}
|
||||
|
||||
function closeBox()
|
||||
{
|
||||
$('body').removeClass('openBox');
|
||||
$('div','#control').removeClass('active');
|
||||
$('#box').children('div').css('display', 'none');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function showImage(src, name)
|
||||
{
|
||||
$('#imageModalLabel').text(name);
|
||||
$('#imageModalImg').attr('src', src);
|
||||
$('#imageModal').modal('show');
|
||||
}
|
||||
|
|
@ -0,0 +1,154 @@
|
|||
/*
|
||||
* Набор функций для работы с маршрктами.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Строит маршрут по выбранным точкам.
|
||||
* @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('<div pointid="' + id + '" class="wayPoint"><span onclick="$(this).parent().remove()">×</span> ' + points[id].options.title + '</div>');
|
||||
myMap._popup._close();
|
||||
openBox('Route', true);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Формирует URL в соответсвии с точками маршрута.
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
function routeToURL()
|
||||
{
|
||||
wayPoints = Array();
|
||||
|
||||
$('#wayPoints div').each(function(i, el)
|
||||
{
|
||||
wayPoints.push($(el).attr('pointId'));
|
||||
});
|
||||
|
||||
history.pushState({}, document.title, "/?route=" + JSON.stringify(wayPoints));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue