Pick project from globe

This commit is contained in:
2026-05-13 23:28:36 +02:00
parent c3835f45c5
commit 49f37465bd
9 changed files with 151 additions and 78 deletions

View File

@@ -29,7 +29,10 @@ class Converter extends PhpObject {
$oGeoJson->sortOffTracks();
$oGeoJson->saveFile();
return $oGpx->getLog().'<br />'.$oGeoJson->getLog();
return [
'logs' => $oGpx->getLog().'<br />'.$oGeoJson->getLog(),
'center' => $oGeoJson->getCenter()
];
}
public static function isGeoJsonValid($sCodeName) {

View File

@@ -103,7 +103,6 @@ class GeoJson extends Geo {
if($bSimplify) $this->addNotice('Total: '.$iGlobalInvalidPointCount.'/'.$iGlobalPointCount.' points removed ('.round($iGlobalInvalidPointCount / $iGlobalPointCount * 100, 1).'%)');
}
public function sortOffTracks() {
$this->addNotice('Sorting off-tracks');
@@ -155,7 +154,19 @@ class GeoJson extends Geo {
$this->asTracks = array_values($asTracks);
}
private function parseOptions($sComment){
public function getCenter() {
$asCoords = array();
$asMainTracks = array_filter($this->asTracks, function ($astrack) {return $astrack['properties']['type'] == 'main';});
foreach($asMainTracks as $asMainTrack) {
foreach($asMainTrack['geometry']['coordinates'] as $aiCoords) {
$asCoords[] = $aiCoords;
}
}
return $asCoords[(int) floor(count($asCoords) / 2)];
}
private function parseOptions($sComment) {
$sComment = strip_tags(html_entity_decode($sComment));
$asOptions = array(self::OPT_SIMPLE=>'');
foreach(explode("\n", $sComment) as $sLine) {

View File

@@ -126,6 +126,8 @@ class Project extends PhpObject {
Db::getId(self::PROJ_TABLE)." AS id",
'codename',
'name',
'latitude',
'longitude',
'active_from',
'active_to',
"IF(NOW() BETWEEN active_from AND active_to, 1, IF(NOW() < active_from, 0, 2)) AS mode"
@@ -147,12 +149,16 @@ class Project extends PhpObject {
$asProject['gpxfilepath'] = Spot::addTimestampToFilePath(Gpx::getDistFilePath($sCodeName));
$asProject['codename'] = $sCodeName;
$asProject['default'] = ($sCodeName == $sDefaultProjectCodeName);
//$asProject['center'] = [$asProject['latitude'], $asProject['longitude']];
}
return $bSpecificProj?$asProject:$asProjects;
}
public function getGeoJson() {
if($this->sCodeName != '' && !Converter::isGeoJsonValid($this->sCodeName)) Converter::convertToGeoJson($this->sCodeName);
if($this->sCodeName != '' && !Converter::isGeoJsonValid($this->sCodeName)){
$aiCenter = Converter::convertToGeoJson($this->sCodeName)['center'];
$this->oDb->updateRow(self::PROJ_TABLE, $this->iProjectId, ['latitude' => $aiCenter[1], 'longitude' => $aiCenter[0]]);
}
return json_decode(file_get_contents(GeoJson::getDistFilePath($this->sCodeName)), true);
}

View File

@@ -173,12 +173,13 @@ class Spot extends Main
return parent::getMainPage(
array(
'projects' => $this->oProject->getProjects(),
'user' => $this->oUser->getUserInfo(),
'consts' => array(
'projects' => $this->oProject->getProjects(),
'user' => $this->oUser->getUserInfo(),
'consts' => array(
'modes' => Project::MODES,
'clearances' => User::CLEARANCES,
'default_timezone' => Settings::TIMEZONE,
'default_maps' => $this->oMap->getProjectMaps(-1),
'chunk_size' => self::FEED_CHUNK_SIZE,
'hash_sep' => '-',
'title' => 'Spotty',
@@ -823,7 +824,7 @@ class Spot extends Main
}
public function buildGeoJSON($sCodeName) {
return Converter::convertToGeoJson($sCodeName);
return Converter::convertToGeoJson($sCodeName)['logs'];
}
public static function decToDms($dValue, $sType) {