diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 7f745cd..1d81ce5 100644 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -100,6 +100,7 @@ class IndexController extends Controller self::addScript('/js/navigation.js?ver=' . App::getConfig('version')); self::addScript('/js/map.js?ver=' . App::getConfig('version')); self::addScript('/js/fotorama.js'); + self::addScript('/js/tracks.js?ver=' . App::getConfig('version')); // self::addStyle('/css/style.css?ver=' . App::getConfig('version')); self::addStyle('/css/leaflet.css'); @@ -112,12 +113,12 @@ class IndexController extends Controller $category = Category::model()->getAll(array('order' => 'ord ASC')); $categoryArray = Category::model()->getAll(array('order' => 'ord ASC', 'asArray' => true)); - $routes = array(); - $favorites = array(); + $routes = $favorites = $tracks = array(); if (App::$user && App::$user->id) { self::addVar('user', App::$user->id); $routes = Route::model()->getByAuthor(App::$user->id); $favorites = Favorite::model()->getAllMy(); + $tracks = Trips::model()->getAll(array('where' => '`owner` = ?'), array(App::$user->id)); } else { self::addVar('user', '0'); } @@ -165,6 +166,7 @@ class IndexController extends Controller 'user' => App::$user, 'routes' => $routes, 'favorites' => $favorites, + 'tracks' => $tracks, 'og' => $og, )); } diff --git a/public/js/map.js b/public/js/map.js index 6013b02..b3cc75a 100644 --- a/public/js/map.js +++ b/public/js/map.js @@ -263,12 +263,13 @@ function loadPointsInBounds() bounds: bounds }, success: function (data) { - for(var i=0; i < data.length; i++) { - if (typeof points[data[i].id] == 'undefined') { - markers.addLayer(constructPoint(data[i])); + if (typeof (data) != 'undefined' && data.length > 0) { + for(var i=0; i < data.length; i++) { + if (typeof points[data[i].id] == 'undefined') { + markers.addLayer(constructPoint(data[i])); + } } } - myMap.addLayer(markers); } }); @@ -576,30 +577,3 @@ function onLocationFound(e) { function onLocationError(e) { alert('Ошибка при определении координат: ' + e.message); } - -function drawTrek(id) -{ - colors = ['red', 'green', 'blue']; - track = new Array(); - $.ajax({ - url: "/json/track/id/"+id, - success: function (data) { - if (typeof (data.tracks) != 'undefined') { - for (var i = 0; i < data.tracks.length; i++) { - color = colors[Math.floor(Math.random() * colors.length)] - track[i] = L.polyline(data.tracks[i].latlngs, {color: color, width: 4, opacity: 0.8}); - track[i].addTo(myMap); - track[i].bindPopup(data.tracks[i].name); - } - } - - if (typeof (data.wayPoints) != 'undefined') { - for (var i = 0; i < data.wayPoints.length; i++) { - marker = L.marker([data.wayPoints[i]['lat'], data.wayPoints[i]['lng']], {icon: categories.marker, title: data.wayPoints[i]['name']}) - marker.bindPopup('' + data.wayPoints[i]['name'] + '
' +data.wayPoints[i]['description']); - marker.addTo(myMap); - } - } - } - }); -} diff --git a/public/js/tracks.js b/public/js/tracks.js new file mode 100644 index 0000000..edaf025 --- /dev/null +++ b/public/js/tracks.js @@ -0,0 +1,67 @@ +var trips = new Object; + +function showTrack(id) +{ + if (typeof (trips[id]) == 'undefined') { + loadTrack(id) + } else { + if (trips[id].status != 'show') { + trips[id].addTo(myMap) + trips[id].status = 'show'; + } + + myMap.fitBounds(trips[id].getBounds()); + return true; + } +} + +function hideTrack(id) +{ + if (typeof (trips[id]) == 'undefined') { + return true; + } else { + if (trips[id].status == 'show') { + myMap.removeLayer(trips[id]); + } + + trips[id].status = 'hide'; + return true; + } +} + +function loadTrack(id) +{ + colors = ['red', 'green', 'blue', 'orange']; + colorIndex = 0; + tracks = new Array(); + markers = new Array(); + $.ajax({ + url: "/json/track/id/" + id, + success: function (data) { + trips[id] = L.featureGroup(); + + if (typeof (data.tracks) != 'undefined') { + for (var i = 0; i < data.tracks.length; i++) { + color = colors[colorIndex]; + colorIndex = (colorIndex == colors.length-1) ? 0 : colorIndex+1; + + tracks[i] = L.polyline(data.tracks[i].latlngs, {color: color, width: 4, opacity: 0.8}); + tracks[i].bindPopup(data.tracks[i].name); + trips[id].addLayer(tracks[i]) + } + } + + if (typeof (data.wayPoints) != 'undefined') { + for (var i = 0; i < data.wayPoints.length; i++) { + markers[i] = L.marker([data.wayPoints[i]['lat'], data.wayPoints[i]['lng']], {icon: categories.marker, title: data.wayPoints[i]['name']}) + markers[i].bindPopup('' + data.wayPoints[i]['name'] + '
' + data.wayPoints[i]['description']); + trips[id].addLayer(markers[i]) + } + } + + showTrack(id) + } + }); +} + + diff --git a/views/indexTemplate.php b/views/indexTemplate.php index 77cc0eb..4609000 100644 --- a/views/indexTemplate.php +++ b/views/indexTemplate.php @@ -18,8 +18,9 @@ if (App::$user) {
-
-
+
+
+
@@ -103,6 +104,21 @@ if (App::$user) { +
+

Мои треки

+ + Управление +
+
+ + + + + + У вас пока нет сохраненных треков. + +
+
diff --git a/views/tracks/files.php b/views/tracks/files.php index e7da5b3..70e6b6e 100644 --- a/views/tracks/files.php +++ b/views/tracks/files.php @@ -11,7 +11,7 @@ if ($files) { foreach ($files as $file) { - print $file->id . ' — ' . $file->name . ' ('. $file->filename.')
'; + print $file->id . ' — ' . $file->name . ' [' . $file->tracksCount.' . ' . $file->tptCount.' . ' . $file->wptCount . ']
'; } } else { print 'Пока ничего не загружено';