Merge branch 'tracks' into function_cutTrack
This commit is contained in:
commit
e052bfaf57
|
|
@ -16,7 +16,16 @@ class Geo
|
|||
$delta_lat = ($lat2 - $lat1);
|
||||
$delta_lng = ($lng2 - $lng1);
|
||||
|
||||
return (6378137 * acos(cos($lat1) * cos($lat2) * cos($lng1 - $lng2) + sin($lat1) * sin($lat2)));
|
||||
$distance = (6378137 * acos(cos($lat1) * cos($lat2) * cos($lng1 - $lng2) + sin($lat1) * sin($lat2)));
|
||||
|
||||
if (isset($latlng1['alt']) && isset($latlng2['alt']) && $latlng1['alt'] <> $latlng2['alt']) {
|
||||
// var_dump($distance, abs($latlng1['alt'] - $latlng2['alt']));
|
||||
$altDelta = abs($latlng1['alt'] - $latlng2['alt']);
|
||||
$distance = sqrt(pow($distance, 2) + pow($altDelta, 2));
|
||||
// var_dump($distance);die;
|
||||
}
|
||||
|
||||
return $distance;
|
||||
}
|
||||
|
||||
static function formatedDistance($distance)
|
||||
|
|
|
|||
|
|
@ -625,7 +625,7 @@ class JsonController extends Controller
|
|||
if ($tracks) {
|
||||
foreach ($tracks as $track) {
|
||||
$resLatlngs = array();
|
||||
$trackPoints = TrackPoints::model()->getAll(array('where' => '`trackId` = ?'), array($track->id));
|
||||
$trackPoints = TrackPoints::model()->getAll(array('where' => '`trackId` = ?', 'order'=>'id'), array($track->id));
|
||||
if ($trackPoints) {
|
||||
foreach ($trackPoints as $trackPoint) {
|
||||
$resLatlngs[] = array(
|
||||
|
|
|
|||
|
|
@ -108,6 +108,22 @@ class TracksController extends Controller
|
|||
));
|
||||
}
|
||||
|
||||
function actionExport()
|
||||
{
|
||||
$id = intval(App::getParam('id'));
|
||||
$trip = Trips::model()->getByPK($id);
|
||||
|
||||
if ($trip->isEmpty() || $trip->owner != App::$user->id) {
|
||||
App::error404();
|
||||
}
|
||||
|
||||
self::renderPartial('/tracks/gpx.php', array(
|
||||
'trip' => $trip,
|
||||
'waypoints' => WayPoints::model()->getAll(array('where' => '`tripId` = ?'), array($trip->id)),
|
||||
'tracks' => Tracks::model()->getAll(array('where' => '`tripId` = ?'), array($trip->id)),
|
||||
));
|
||||
}
|
||||
|
||||
function actionImport()
|
||||
{
|
||||
$id = (int) App::getParam('id');
|
||||
|
|
@ -206,25 +222,29 @@ class TracksController extends Controller
|
|||
|
||||
foreach ($trkpt as $tpt) {
|
||||
$speed = isset($tpt->extensions->geotrackerMeta['s']) ? floatval($tpt->extensions->geotrackerMeta['s']) : 0;
|
||||
$alt = isset($tpt->ele) ? floatval($tpt->ele) : 0;
|
||||
$trackPoint = TrackPoints::model()->add(
|
||||
array(
|
||||
'trackId' => $track->id,
|
||||
'lat' => floatval($tpt['lat']),
|
||||
'lng' => floatval($tpt['lon']),
|
||||
'alt' => isset($tpt->ele) ? floatval($tpt->ele) : 0,
|
||||
'alt' => $alt,
|
||||
'createdAt' => isset($tpt->time) ? $tpt->time : date('c'),
|
||||
'speed' => $speed,
|
||||
)
|
||||
);
|
||||
|
||||
if ($prevPoint) {
|
||||
$distanceTmp += Geo::distance($prevPoint, array('lat' => floatval($tpt['lat']), 'lng' => floatval($tpt['lon'])));
|
||||
$distanceTmp += Geo::distance($prevPoint, array('lat' => floatval($tpt['lat']), 'lng' => floatval($tpt['lon']), 'alt' => $alt));
|
||||
}
|
||||
|
||||
$prevPoint = array(
|
||||
'lat' => floatval($tpt['lat']),
|
||||
'lng' => floatval($tpt['lon']),
|
||||
);
|
||||
if (isset($tpt->ele)) {
|
||||
$prevPoint['alt'] = floatval($tpt->ele);
|
||||
}
|
||||
$tptCount++;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
header('Content-type: text/xml');
|
||||
header('Content-Disposition: attachment; filename="text.gpx"');
|
||||
?><?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
||||
<gpx version="1.1" xmlns="http://www.topografix.com/GPX/1/1" xmlns:geotracker="http://ilyabogdanovich.com/gpx/extensions/geotracker" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" creator="Find your road! https://wikipoints.ru">
|
||||
<metadata>
|
||||
<name><?= $trip->name ?></name>
|
||||
<desc><?= $trip->description ?></desc>
|
||||
<link href="https://wikipoints.ru" />
|
||||
<time><?= $trip->createdAt ?></time>
|
||||
<author>
|
||||
<name><?= App::$user->nick ?></name>
|
||||
<link href="https://wikipoints.ru/user/<?= App::$user->id ?>" />
|
||||
</author>
|
||||
</metadata>
|
||||
<?php if ($waypoints): ?>
|
||||
<?php foreach ($waypoints as $wpt): ?>
|
||||
<wpt lat="<?= $wpt->lat ?>" lon="<?= $wpt->lng ?>">
|
||||
<ele><?= $wpt->alt ?></ele>
|
||||
<time><?= $wpt->createdAt ?></time>
|
||||
<name><?= $wpt->name ?></name>
|
||||
<desc><?= $wpt->description ?></desc>
|
||||
</wpt>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
<?php if ($tracks): ?>
|
||||
<trk>
|
||||
<name><?= $trip->name ?></name>
|
||||
<extensions>
|
||||
<geotracker:meta>
|
||||
<length><?= $trip->distance ?></length>
|
||||
<creationtime><?= $trip->createdAt ?></creationtime>
|
||||
</geotracker:meta>
|
||||
</extensions>
|
||||
<?php foreach ($tracks as $track): ?>
|
||||
<?php $trackPoints = TrackPoints::model()->getAll(array('where' => '`trackId` = ?', 'order'=>'id'), array($track->id)); ?>
|
||||
<trkseg>
|
||||
<?php foreach ($trackPoints as $tpt): ?>
|
||||
<trkpt lat="<?= $tpt->lat ?>" lon="<?= $tpt->lng ?>">
|
||||
<ele><?= $tpt->alt ?></ele>
|
||||
<time><?= $tpt->createdAt ?></time>
|
||||
<extensions>
|
||||
<geotracker:meta s="<?= $tpt->speed ?>" />
|
||||
</extensions>
|
||||
</trkpt>
|
||||
<?php endforeach; ?>
|
||||
</trkseg>
|
||||
<?php endforeach; ?>
|
||||
</trk>
|
||||
<?php endif; ?>
|
||||
</gpx>
|
||||
|
|
@ -25,6 +25,9 @@ if ($trips) {
|
|||
<a href="/tracks/edit/id/<?= $trip->id ?>" class="btn btn-default">
|
||||
<span class="glyphicon glyphicon-pencil" aria-hidden="true" title="Редактировать трек"></span>
|
||||
</a>
|
||||
<a href="/tracks/export/id/<?= $trip->id ?>" class="btn btn-default">
|
||||
<span class="glyphicon glyphicon-download-alt" aria-hidden="true" title="Скачать трек в формате GPX"></span>
|
||||
</a>
|
||||
<?= $trip->id ?> —
|
||||
<a href="/?track=<?= $trip->id ?>"><?= $trip->name ?></a> (<?= $trip->createdAt ?>)
|
||||
<?php if($trip->status == Trips::STATUS_PUBLIC):?>
|
||||
|
|
|
|||
Loading…
Reference in New Issue