diff --git a/controllers/JsonController.php b/controllers/JsonController.php
index 205713f..7fb47ca 100644
--- a/controllers/JsonController.php
+++ b/controllers/JsonController.php
@@ -658,4 +658,119 @@ class JsonController extends Controller
die;
}
+
+ static function actionSimpletrack()
+ {
+ $id = intval(App::getParam('id'));
+
+ if (!$id) {
+ App::error404();
+ }
+
+ $trip = Trips::model()->getByPK($id);
+
+ if ($trip->isEmpty() || ($trip->status != Trips::STATUS_PUBLIC && $trip->owner != App::$user->id)) {
+ App::error404();
+ }
+
+ $res = array(
+ 'name' => $trip->name,
+ 'time' => $trip->createdAt,
+ );
+
+ $resWayPoints = array();
+ $resTracks = array();
+ $resLatlngs = array();
+ $totCnt = 0;
+
+
+ $wayPoints = WayPoints::model()->getAll(array('where' => '`tripId` = ?'), array($trip->id));
+ if ($wayPoints) {
+ foreach ($wayPoints as $block) {
+ $resWayPoints[] = array(
+ 'lat' => floatval($block->lat),
+ 'lng' => floatval($block->lng),
+ 'time' => strtotime($block->createdAt),
+ 'name' => (string) $block->name,
+ 'description' => nl2br($block->description),
+ );
+ }
+ }
+
+
+ $tracks = Tracks::model()->getAll(array('where' => '`tripId` = ?'), array($trip->id));
+ if ($tracks) {
+ foreach ($tracks as $track) {
+ $resLatlngs = array();
+ $trackPoints = TrackPoints::model()->getAll(array('where' => '`trackId` = ?', 'noKeys' => TRUE), array($track->id));
+ if ($trackPoints) {
+ for ($index = 0; $index < count($trackPoints); $index++) {
+
+ $trackPoint = $trackPoints[$index];
+
+ if ($index > 2 && $index < count($trackPoints)-2) {
+
+ $nextPoint = $trackPoints[$index+1];
+ $nextPoint = array(
+ 'lat' => $nextPoint->lat,
+ 'lng' => $nextPoint->lng,
+ );
+
+ $distance1 = Geo::distance($prevPoint, array('lat' => $trackPoint->lat, 'lng' => $trackPoint->lng));
+
+ if ($distance1 < 100) {
+ continue;
+ }
+
+ $distance2 = Geo::distance($nextPoint, array('lat' => $trackPoint->lat, 'lng' => $trackPoint->lng));
+ $distance3 = Geo::distance($prevPoint, $nextPoint);
+
+
+ if (($distance3 / ($distance1+$distance2)) > 0.982) {
+ continue;
+ }
+ }
+
+ $prevPoint = $trackPoints[$index];
+ $prevPoint = array(
+ 'lat' => $prevPoint->lat,
+ 'lng' => $prevPoint->lng,
+ );
+
+
+ $resLatlngs[] = array(
+ 'lat' => $trackPoint->lat,
+ 'lng' => $trackPoint->lng,
+ );
+ }
+// die;
+ }
+
+ $totCnt += count($resLatlngs);
+ $resTracks[] = array(
+ 'name' => (string) $track->name,
+ 'length' => 0,
+ 'latlngs' => $resLatlngs,
+ 'points' => count($resLatlngs),
+ );
+ }
+
+ }
+
+ $res['wayPoints'] = $resWayPoints;
+ $res['tracks'] = $resTracks;
+ $res['totCnt'] = $totCnt;
+
+
+ $json = self::renderPartial('json.php', $res, TRUE);
+
+ $trip->json = $json;
+ $trip->save();
+
+ header('Content-Type: application/json');
+ print $json;
+ die;
+ }
+
+
}
diff --git a/public/js/tracks.js b/public/js/tracks.js
index e4afa06..f3dd20d 100644
--- a/public/js/tracks.js
+++ b/public/js/tracks.js
@@ -41,6 +41,7 @@ function hideTrack(id)
function loadTrack(id)
{
colors = ['red', 'green', 'blue', 'orange'];
+ colors = ['green'];
colorIndex = 0;
tracks = new Array();
markers = new Array();
@@ -76,4 +77,43 @@ function loadTrack(id)
});
}
+function loadSimpleTrack(id)
+{
+ colors = ['red', 'green', 'blue', 'orange'];
+ colors = ['red'];
+ colorIndex = 0;
+ tracks = new Array();
+ markers = new Array();
+ $.ajax({
+ url: "/json/simpletrack/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)
+ },
+ error: function (data) {
+ alert('Не удалось загрузить трек. Возможно это приватный трек и вы не его владелец.')
+ }
+ });
+}
+