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) {

