From 08b23039ec50f671c12e8fac3ebf52deb8a176cd Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Mon, 23 May 2016 01:53:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=B2=D0=BE=D0=B4=20=D1=81=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D0=BA=D0=B0=20=D1=82=D1=80=D0=B5=D0=BA=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D0=BA=D0=B0=D1=80=D1=82=D0=B5;=20=D0=9F?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D1=82=D1=8B=D0=B5=20=D0=BC=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B4=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BA=D0=B0?= =?UTF-8?q?=D0=B7=D0=B0=20=D0=B8=20=D1=81=D0=BA=D1=80=D1=8B=D1=82=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=82=D1=80=D0=B5=D0=BA=D0=BE=D0=B2=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BA=D0=B0=D1=80=D1=82=D0=B5;=20=D0=9E=D1=82=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20JS=20=D1=84=D0=B0=D0=B9=D0=BB?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20?= =?UTF-8?q?=D1=81=20=D1=82=D1=80=D0=B5=D0=BA=D0=B0=D0=BC=D0=B8;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/IndexController.php | 6 ++- public/js/map.js | 36 +++--------------- public/js/tracks.js | 67 +++++++++++++++++++++++++++++++++ views/indexTemplate.php | 20 +++++++++- views/tracks/files.php | 2 +- 5 files changed, 95 insertions(+), 36 deletions(-) create mode 100644 public/js/tracks.js 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 'Пока ничего не загружено';