ADD рассчёт длины трека при импорте
This commit is contained in:
parent
e714778062
commit
801413690b
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
class TracksController extends Controller
|
class TracksController extends Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
function __construct()
|
function __construct()
|
||||||
{
|
{
|
||||||
if (!App::$user->id) {
|
if (!App::$user->id) {
|
||||||
|
|
@ -16,7 +17,6 @@ class TracksController extends Controller
|
||||||
self::addScript('/js/bootstrap.min.js');
|
self::addScript('/js/bootstrap.min.js');
|
||||||
self::addStyle('/css/bootstrap.min.css');
|
self::addStyle('/css/bootstrap.min.css');
|
||||||
self::addStyle('/css/bootstrap-theme.min.css');
|
self::addStyle('/css/bootstrap-theme.min.css');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function actionIndex()
|
function actionIndex()
|
||||||
|
|
@ -42,7 +42,7 @@ class TracksController extends Controller
|
||||||
$temp = pathinfo($_FILES['file']['name']);
|
$temp = pathinfo($_FILES['file']['name']);
|
||||||
$filename = $_FILES['file']['name'];
|
$filename = $_FILES['file']['name'];
|
||||||
$extension = strtolower($temp['extension']);
|
$extension = strtolower($temp['extension']);
|
||||||
$uploaddir = App::getBasedir().'tracks/';
|
$uploaddir = App::getBasedir() . 'tracks/';
|
||||||
|
|
||||||
if ($extension !== 'gpx') {
|
if ($extension !== 'gpx') {
|
||||||
App::error404('Неизвестный тип');
|
App::error404('Неизвестный тип');
|
||||||
|
|
@ -50,12 +50,12 @@ class TracksController extends Controller
|
||||||
|
|
||||||
$tmp = TrackFiles::model()->add(array(
|
$tmp = TrackFiles::model()->add(array(
|
||||||
'owner' => App::$user->id,
|
'owner' => App::$user->id,
|
||||||
'name' => 'Трек '.date('d-m-Y H:i:s'),
|
'name' => 'Трек ' . date('d-m-Y H:i:s'),
|
||||||
'filename' => $filename,
|
'filename' => $filename,
|
||||||
'createdAt' => date('c'),
|
'createdAt' => date('c'),
|
||||||
));
|
));
|
||||||
|
|
||||||
$newName = 'track'.$tmp->id . '.' . $extension;
|
$newName = 'track' . $tmp->id . '.' . $extension;
|
||||||
if (!move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir . $newName)) {
|
if (!move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir . $newName)) {
|
||||||
App::error404();
|
App::error404();
|
||||||
}
|
}
|
||||||
|
|
@ -65,7 +65,7 @@ class TracksController extends Controller
|
||||||
|
|
||||||
function actionImportgpx()
|
function actionImportgpx()
|
||||||
{
|
{
|
||||||
$id = (int)App::getParam('id');
|
$id = (int) App::getParam('id');
|
||||||
|
|
||||||
if (!$id) {
|
if (!$id) {
|
||||||
App::error404();
|
App::error404();
|
||||||
|
|
@ -77,7 +77,7 @@ class TracksController extends Controller
|
||||||
App::error404();
|
App::error404();
|
||||||
}
|
}
|
||||||
|
|
||||||
$gpxObject = simplexml_load_file(App::getBasedir().'tracks/track'.$trackFile->id.'.gpx');
|
$gpxObject = simplexml_load_file(App::getBasedir() . 'tracks/track' . $trackFile->id . '.gpx');
|
||||||
|
|
||||||
$trip = Trips::model()->add(
|
$trip = Trips::model()->add(
|
||||||
array(
|
array(
|
||||||
|
|
@ -85,11 +85,12 @@ class TracksController extends Controller
|
||||||
'createdAt' => isset($gpxObject->metadata->time) ? $gpxObject->metadata->time : date('c'),
|
'createdAt' => isset($gpxObject->metadata->time) ? $gpxObject->metadata->time : date('c'),
|
||||||
'owner' => App::$user->id,
|
'owner' => App::$user->id,
|
||||||
'distance' => 0,
|
'distance' => 0,
|
||||||
'description' => 'Трек сздан '.date('d-m-Y H:i').' из файла '. $trackFile->filename,
|
'description' => 'Трек сздан ' . date('d-m-Y H:i') . ' из файла ' . $trackFile->filename,
|
||||||
'status' => Trips::STATUS_PRIVATE,
|
'status' => Trips::STATUS_PRIVATE,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$distance = 0;
|
||||||
$wayPoints = array();
|
$wayPoints = array();
|
||||||
$tracks = array();
|
$tracks = array();
|
||||||
$latlngs = array();
|
$latlngs = array();
|
||||||
|
|
@ -102,16 +103,16 @@ class TracksController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
$wayPoint = WayPoints::model()->add(
|
$wayPoint = WayPoints::model()->add(
|
||||||
array(
|
array(
|
||||||
'tripId' => $trip->id,
|
'tripId' => $trip->id,
|
||||||
'lat' => floatval($block['lat']),
|
'lat' => floatval($block['lat']),
|
||||||
'lng' => floatval($block['lon']),
|
'lng' => floatval($block['lon']),
|
||||||
'alt' => 0,
|
'alt' => 0,
|
||||||
'speed' => 0,
|
'speed' => 0,
|
||||||
'createdAt' => $block->time,
|
'createdAt' => $block->time,
|
||||||
'name' => (string) $block->name,
|
'name' => (string) $block->name,
|
||||||
'description' => (string) $block->desc,
|
'description' => (string) $block->desc,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -125,16 +126,17 @@ class TracksController extends Controller
|
||||||
$track = Tracks::model()->add(
|
$track = Tracks::model()->add(
|
||||||
array(
|
array(
|
||||||
'tripId' => $trip->id,
|
'tripId' => $trip->id,
|
||||||
'name' => (string)$block->name ? (string)$block->name : 'Фрагмент трека №'.$tracksCounter,
|
'name' => (string) $block->name ? (string) $block->name : 'Фрагмент трека №' . $tracksCounter,
|
||||||
'distance' => 0,
|
'distance' => 0,
|
||||||
'description' => '',
|
'description' => '',
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
$distanceTmp = 0;
|
||||||
|
$prevPoint = array();
|
||||||
$tracksCounter++;
|
$tracksCounter++;
|
||||||
$trackPoints = array();
|
$trackPoints = array();
|
||||||
|
|
||||||
foreach ($trkpt as $tpt) {
|
foreach ($trkpt as $tpt) {
|
||||||
|
|
||||||
$trackPoint = TrackPoints::model()->add(
|
$trackPoint = TrackPoints::model()->add(
|
||||||
array(
|
array(
|
||||||
'trackId' => $track->id,
|
'trackId' => $track->id,
|
||||||
|
|
@ -145,12 +147,30 @@ class TracksController extends Controller
|
||||||
'speed' => 0,
|
'speed' => 0,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if ($prevPoint) {
|
||||||
|
$distanceTmp += Geo::distance($prevPoint, array('lat' => floatval($tpt['lat']), 'lng' => floatval($tpt['lon'])));
|
||||||
|
// print $distanceTmp.'<br/>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$prevPoint = array(
|
||||||
|
'lat' => floatval($tpt['lat']),
|
||||||
|
'lng' => floatval($tpt['lon']),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$distance += $distanceTmp;
|
||||||
|
$track->distance = $distanceTmp;
|
||||||
|
$track->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$trip->distance = $distance;
|
||||||
|
$trip->save();
|
||||||
|
|
||||||
App::redirect('/tracks');
|
App::redirect('/tracks');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue