From bc52cf5033e306ebbaf61f7437a2b0a22797adca Mon Sep 17 00:00:00 2001 From: PJFonseca Date: Wed, 17 Mar 2021 11:14:27 +0000 Subject: [PATCH 1/8] Made some strutural changes. Add language support Fixed the maps Created some point generator to test the page Removed some files not needed --- includes/class.utils.php | 86 ++++++++++++++++++++++++++++++++++++++++ includes/settings.php | 48 ++++++++++++++++++++++ index.html | 5 --- index.php | 53 +++++++++++++++++++++++++ languages/en.php | 28 +++++++++++++ languages/pt.php | 25 ++++++++++++ map.php | 46 --------------------- settings.php | 25 ------------ tests/generatePoint.php | 26 ++++++++++++ tracker.php | 7 ++-- 10 files changed, 269 insertions(+), 80 deletions(-) create mode 100644 includes/class.utils.php create mode 100644 includes/settings.php delete mode 100644 index.html create mode 100644 index.php create mode 100644 languages/en.php create mode 100644 languages/pt.php delete mode 100644 map.php delete mode 100644 settings.php create mode 100644 tests/generatePoint.php diff --git a/includes/class.utils.php b/includes/class.utils.php new file mode 100644 index 0000000..6ef3814 --- /dev/null +++ b/includes/class.utils.php @@ -0,0 +1,86 @@ + array(_YEAR, YEARS), + 2592000 => array(_MONTH, _MONTHS), + 604800 => array(_WEEK, _WEEKS), + 86400 => array(_DAY, _DAYS), + 3600 => array(_HOUR, _HOURS), + 60 => array(_MINUTE, _MINUTES), + 1 => array(_SECOND, _SECONDS) + ); + + foreach ($tokens as $unit => $text) { + if ($dateTime < $unit) continue; + $numberOfUnits = floor($dateTime / $unit); + return $numberOfUnits . "" . ($sendUnis ? (($numberOfUnits > 1) ? " " . $text[1] : " " . $text[0]) : "") . ""; + } + } + + function convertUnit($meterPerSec,$unit='kilometer_per_hour'){ + $units=array( + "kilometer_per_hour"=>"0.2777778", + "mile_per_hour"=>"0.44704" + ); + $unitsLabels=array( + "kilometer_per_hour"=>"km/h (kph)", + "mile_per_hour"=>" mi/h (mph)" + ); + return number_format(($meterPerSec*$units[$unit]),0,",","")." ".$unitsLabels["kilometer_per_hour"]; + } + + function generateRandomPoint($centre, $radius) { + $radius_earth = 3959; //miles + + //Pick random distance within $distance; + $distance = lcg_value()*$radius; + + //Convert degrees to radians. + $centre_rads = array_map( 'deg2rad', $centre ); + + //First suppose our point is the north pole. + //Find a random point $distance miles away + $lat_rads = (pi()/2) - $distance/$radius_earth; + $lng_rads = lcg_value()*2*pi(); + + + //($lat_rads,$lng_rads) is a point on the circle which is + //$distance miles from the north pole. Convert to Cartesian + $x1 = cos( $lat_rads ) * sin( $lng_rads ); + $y1 = cos( $lat_rads ) * cos( $lng_rads ); + $z1 = sin( $lat_rads ); + + + //Rotate that sphere so that the north pole is now at $centre. + + //Rotate in x axis by $rot = (pi()/2) - $centre_rads[0]; + $rot = (pi()/2) - $centre_rads[0]; + $x2 = $x1; + $y2 = $y1 * cos( $rot ) + $z1 * sin( $rot ); + $z2 = -$y1 * sin( $rot ) + $z1 * cos( $rot ); + + //Rotate in z axis by $rot = $centre_rads[1] + $rot = $centre_rads[1]; + $x3 = $x2 * cos( $rot ) + $y2 * sin( $rot ); + $y3 = -$x2 * sin( $rot ) + $y2 * cos( $rot ); + $z3 = $z2; + + + //Finally convert this point to polar co-ords + $lng_rads = atan2( $x3, $y3 ); + $lat_rads = asin( $z3 ); + + return array_map( 'rad2deg', array( $lat_rads, $lng_rads ) ); + } + + } +} \ No newline at end of file diff --git a/includes/settings.php b/includes/settings.php new file mode 100644 index 0000000..ce5167e --- /dev/null +++ b/includes/settings.php @@ -0,0 +1,48 @@ + - -

You probably want the Map page.

- - diff --git a/index.php b/index.php new file mode 100644 index 0000000..a1a185c --- /dev/null +++ b/index.php @@ -0,0 +1,53 @@ +timeAgo(date("Y-m-d H:i:s",$info['timestamp'])); + $speed=$ClassUtils->convertUnit($info['speed'],$unitForSpeed); + $lat = $info['lat']; + $lon = $info['lon']; + $staticUrl = 'https://www.mapquestapi.com/staticmap/v5/map?'; + $staticUrl = $staticUrl."size=$width,$height&type=map&imagetype=jpeg&key=$apikey"; + $staticUrl = $staticUrl . "&locations=$lat,$lon|&zoom=$zoom¢er=$lat,$lon"; + $mapUrl = 'https://www.openstreetmap.org'; + $mapUrl = $mapUrl . "?mlat=$lat&mlon=$lon"; + }else{ + die(_LOCATION_FILE_DOES_NOT_EXIST); + } + + /* Note that you can embed an interactive map using: + $bbox = 0.01; // Zoom. 0.1 gives an overview, 0.01 is quite zoomed in, 0.001 is street-level. + $bboxleft = $lon - $bbox; + $bboxbottom = $lat - $bbox; + $bboxright = $lon + $bbox; + $bboxtop = $lat + $bbox; + $bb = urlencode($bboxleft . ',' . $bboxbottom . ',' . $bboxright . ',' . $bboxtop); + + The issue is that you cannot place a marker (not that I have found). + */ + + echo " + + $pageTitle + ".($refreshTime>0?"":"")." + + +
+

".$yourName." "._STATUS_AS_OF." ".$timeAgo.":

+

"._SPEED.": ".$speed."

+
+

"._CLICK_TO_SEE_INTERACTIVE_MAP."

+
+ + "; + + diff --git a/languages/en.php b/languages/en.php new file mode 100644 index 0000000..a40e386 --- /dev/null +++ b/languages/en.php @@ -0,0 +1,28 @@ +https://developer.mapquest.com/"); + +DEFINE ("_WARNING_NEED_TO_CHANGE_SECRET_KEY", "This application is not functional yet. See the README how to set it up (hint: edit settings.php)."); +DEFINE ("_LOCATION_FILE_DOES_NOT_EXIST", "The localtion file needed to run this application is not yet available, please return later."); + +DEFINE ("_YEAR", "year"); +DEFINE ("_YEARS", "years"); +DEFINE ("_MONTH", "month"); +DEFINE ("_MONTHS", "months"); +DEFINE ("_WEEK", "week"); +DEFINE ("_WEEKS", "weeks"); +DEFINE ("_DAY", "day"); +DEFINE ("_DAYS", "days"); +DEFINE ("_HOUR", "hour"); +DEFINE ("_HOURS", "hours"); +DEFINE ("_MINUTE", "minute"); +DEFINE ("_MINUTES", "minutes"); +DEFINE ("_SECOND", "second"); +DEFINE ("_SECONDS", "seconds"); + + diff --git a/languages/pt.php b/languages/pt.php new file mode 100644 index 0000000..1569b09 --- /dev/null +++ b/languages/pt.php @@ -0,0 +1,25 @@ +https://developer.mapquest.com/"); +DEFINE ("_WARNING_NEED_TO_CHANGE_SECRET_KEY", "Este aplicativo ainda não está funcional. Veja o README como configurá-lo (dica: edite o settings.php e altere a chave secreta)."); +DEFINE ("_LOCATION_FILE_DOES_NOT_EXIST", "O arquivo de localização necessário para executar este aplicativo ainda não está disponível, por favor volte mais tarde."); + +DEFINE ("_YEAR", "ano"); +DEFINE ("_YEARS", "anos"); +DEFINE ("_MONTH", "mês"); +DEFINE ("_MONTHS", "meses"); +DEFINE ("_WEEK", "semana"); +DEFINE ("_WEEKS", "semanas"); +DEFINE ("_DAY", "dia"); +DEFINE ("_DAYS", "dias"); +DEFINE ("_HOUR", "hora"); +DEFINE ("_HOURS", "horas"); +DEFINE ("_MINUTE", "minuto"); +DEFINE ("_MINUTES", "minutos"); +DEFINE ("_SECOND", "segundo"); +DEFINE ("_SECONDS", "segundos"); \ No newline at end of file diff --git a/map.php b/map.php deleted file mode 100644 index 665a222..0000000 --- a/map.php +++ /dev/null @@ -1,46 +0,0 @@ - - - - - <?php echo $name?>'s Location - - - -

's status as of minutes ago:

-

Speed: m/s

- >
-

Click for an interactive map

- &layer=mapnik" width=800 height=600> - - The issue is that you cannot place a marker (not that I have found). - */ - ?> - - - - diff --git a/settings.php b/settings.php deleted file mode 100644 index a56a7ae..0000000 --- a/settings.php +++ /dev/null @@ -1,25 +0,0 @@ - random_int(-90, 90 - 1) + (random_int(0, PHP_INT_MAX - 1) / PHP_INT_MAX ), + 'y' => random_int(-180, 180 - 1) + (random_int(0, PHP_INT_MAX - 1) / PHP_INT_MAX ) + ); + + $min=1; + $max=300; + $hdop=($min+lcg_value()*(abs($max-$min))); + $altitude=($min+lcg_value()*(abs($max-$min))); + $speed=($min+lcg_value()*(abs($max-$min))); + $timestamp=time(); + + $info['lat'] = round($point['x'], $accuracy); + $info['lon'] = round($point['y'], $accuracy); + $info['timestamp'] = intval($timestamp); + $info['hdop'] = floatval($hdop); + $info['altitude'] = floatval($altitude); + $info['speed'] = floatval($speed); + print_r($info); + $fh = fopen($filePath, 'w'); + fwrite($fh, serialize($info)); + fclose($fh); \ No newline at end of file diff --git a/tracker.php b/tracker.php index 057d30c..77dccb6 100644 --- a/tracker.php +++ b/tracker.php @@ -1,13 +1,12 @@ Date: Wed, 17 Mar 2021 11:24:39 +0000 Subject: [PATCH 2/8] Fix --- tests/generatePoint.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/generatePoint.php b/tests/generatePoint.php index 5cb7091..c2d2cd4 100644 --- a/tests/generatePoint.php +++ b/tests/generatePoint.php @@ -1,7 +1,7 @@ random_int(-90, 90 - 1) + (random_int(0, PHP_INT_MAX - 1) / PHP_INT_MAX ), 'y' => random_int(-180, 180 - 1) + (random_int(0, PHP_INT_MAX - 1) / PHP_INT_MAX ) From ea02fa8ddd3b51b0059dbf1334d9b25e1866dac9 Mon Sep 17 00:00:00 2001 From: PJFonseca Date: Wed, 17 Mar 2021 13:18:04 +0000 Subject: [PATCH 3/8] Some fixes --- includes/class.utils.php | 6 +++--- includes/settings.php | 16 ++++++++++------ index.php | 25 +++++++++++++++++-------- languages/en.php | 3 +++ languages/pt.php | 4 ++++ tests/generatePoint.php | 7 ++++--- tracker.php | 20 +++++++++++++++++--- 7 files changed, 58 insertions(+), 23 deletions(-) diff --git a/includes/class.utils.php b/includes/class.utils.php index 6ef3814..dfa717e 100644 --- a/includes/class.utils.php +++ b/includes/class.utils.php @@ -10,7 +10,7 @@ function timeAgo($dateTime, $sendUnis = true) $dateTime = time() - strtotime($dateTime); $tokens = array( - 31536000 => array(_YEAR, YEARS), + 31536000 => array(_YEAR, _YEARS), 2592000 => array(_MONTH, _MONTHS), 604800 => array(_WEEK, _WEEKS), 86400 => array(_DAY, _DAYS), @@ -38,8 +38,8 @@ function convertUnit($meterPerSec,$unit='kilometer_per_hour'){ return number_format(($meterPerSec*$units[$unit]),0,",","")." ".$unitsLabels["kilometer_per_hour"]; } - function generateRandomPoint($centre, $radius) { - $radius_earth = 3959; //miles + function generateRandomPoint($centre, $radius="") { + $radius_earth = 5; //miles //Pick random distance within $distance; $distance = lcg_value()*$radius; diff --git a/includes/settings.php b/includes/settings.php index ce5167e..a1d8eac 100644 --- a/includes/settings.php +++ b/includes/settings.php @@ -1,4 +1,6 @@ timeAgo(date("Y-m-d H:i:s",$info['timestamp'])); + $timeAgo=$ClassUtils->timeAgo(date("Y-m-d H:i:s",substr($info['timestamp'],0,-3))); $speed=$ClassUtils->convertUnit($info['speed'],$unitForSpeed); - $lat = $info['lat']; - $lon = $info['lon']; + + if($_GET['realgpskey']==$secretRealGPDKey){ + $lat = $info['reallat']; + $lon = $info['reallon']; + }else{ + $lat = $info['fakelat']; + $lon = $info['fakelon']; + } + $staticUrl = 'https://www.mapquestapi.com/staticmap/v5/map?'; $staticUrl = $staticUrl."size=$width,$height&type=map&imagetype=jpeg&key=$apikey"; $staticUrl = $staticUrl . "&locations=$lat,$lon|&zoom=$zoom¢er=$lat,$lon"; @@ -34,18 +41,20 @@ The issue is that you cannot place a marker (not that I have found). */ - + $date = new DateTime(); + $timeZone = $date->getTimezone(); echo " $pageTitle - ".($refreshTime>0?"":"")." + ".($refreshTime>0?"":"")."
-

".$yourName." "._STATUS_AS_OF." ".$timeAgo.":

-

"._SPEED.": ".$speed."

+ ".($timeAgo>0?"

".$yourName." "._STATUS_AS_OF." ".$timeAgo."

"._TIMEZONE." ".$timeZone->getName()."":"")." + ".($speed>0?"

"._SPEED.": ".$speed."

":"

"._IT_IS_STOPPED."

")."

"._CLICK_TO_SEE_INTERACTIVE_MAP."

+ "._PAGE_GENERATED_AT." ".date("Y-m-d H:i:s")."
"; diff --git a/languages/en.php b/languages/en.php index a40e386..746c06a 100644 --- a/languages/en.php +++ b/languages/en.php @@ -3,6 +3,9 @@ DEFINE ("_STATUS_AS_OF", "status as of"); DEFINE ("_MINUTES_AGO", "minutes ago"); DEFINE ("_SPEED", "Speed"); +DEFINE ("_IT_IS_STOPPED", "Taking a break."); +DEFINE ("_TIMEZONE", "Timezone"); +DEFINE ("_PAGE_GENERATED_AT", "Page generated at"); DEFINE ("_CLICK_TO_SEE_INTERACTIVE_MAP", "Click for an interactive map"); DEFINE ("_WARNING_INVALID_SECRET_KEY", "The used key is invalid"); DEFINE ("_WARNING_NEED_TO_GET_APIKEY", "You must create and API key at https://developer.mapquest.com/"); diff --git a/languages/pt.php b/languages/pt.php index 1569b09..26e2df1 100644 --- a/languages/pt.php +++ b/languages/pt.php @@ -3,6 +3,10 @@ DEFINE ("_STATUS_AS_OF", " esteve aqui à"); DEFINE ("_MINUTES_AGO", "minutos atrás"); DEFINE ("_SPEED", "Velocidade"); +DEFINE ("_IT_IS_STOPPED", "A Descansar!!"); +DEFINE ("_TIMEZONE", "Fuso Horário"); +DEFINE ("_PAGE_GENERATED_AT", "Página gerada em"); + DEFINE ("_CLICK_TO_SEE_INTERACTIVE_MAP", "Clicar para ver mapa interativo"); DEFINE ("_WARNING_INVALID_SECRET_KEY", "A chave utilizade é inválida"); DEFINE ("_WARNING_NEED_TO_GET_APIKEY", "É necessário criar uma chave de API em https://developer.mapquest.com/"); diff --git a/tests/generatePoint.php b/tests/generatePoint.php index c2d2cd4..f461c1f 100644 --- a/tests/generatePoint.php +++ b/tests/generatePoint.php @@ -1,5 +1,5 @@ $url"; $fh = fopen($filePath, 'w'); fwrite($fh, serialize($info)); fclose($fh); \ No newline at end of file diff --git a/tracker.php b/tracker.php index 77dccb6..9640cf0 100644 --- a/tracker.php +++ b/tracker.php @@ -1,5 +1,5 @@ generateRandomPoint(array($atualLongitude,$atualLatitude),"0,5"); + $info['fakelat'] = round($fakeGPS[0], $accuracy); + $info['fakelon'] = round($fakeGPS[1], $accuracy); - $info['lat'] = round($_GET['lat'], $accuracy); - $info['lon'] = round($_GET['lon'], $accuracy); $info['timestamp'] = intval($_GET['timestamp']); $info['hdop'] = floatval($_GET['hdop']); $info['altitude'] = floatval($_GET['altitude']); @@ -19,4 +26,11 @@ $fh = fopen($filePath, 'w'); fwrite($fh, serialize($info)); fclose($fh); +/* + $contents=''; + foreach ($_GET as $key => $value) { + $contents .= $key . " => " . $value . "\n"; // or use `"\r\n"` + } + file_put_contents("./test.log", $contents, FILE_APPEND); +*/ From 79cca94bf7f7c17d53d7d82b9ffd7b5b2a5faf43 Mon Sep 17 00:00:00 2001 From: PJFonseca Date: Wed, 17 Mar 2021 13:18:51 +0000 Subject: [PATCH 4/8] Some fixes --- includes/settings.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/settings.php b/includes/settings.php index a1d8eac..6defead 100644 --- a/includes/settings.php +++ b/includes/settings.php @@ -12,9 +12,9 @@ require_once(__DIR__ . "/../languages/" . $lang . ".php"); // This key must be entered in OsmAnd's tracking URL as &key= - $secretKey = 'CHANGEME1'; + $secretKey = 'CHANGEME'; // This key must be entered in OsmAnd's tracking URL as &realgpskey= - $secretRealGPDKey="CHANGEME1"; + $secretRealGPDKey="CHANGEME"; // API key from MapQuest. Get one from developer.mapquest.com $apikey = ''; From fc13ec3f7987bdf37bedcc95c8027b4f497a55fa Mon Sep 17 00:00:00 2001 From: PJFonseca Date: Wed, 17 Mar 2021 13:19:14 +0000 Subject: [PATCH 5/8] Some fixes --- tracker.php | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tracker.php b/tracker.php index 9640cf0..f39f751 100644 --- a/tracker.php +++ b/tracker.php @@ -26,11 +26,4 @@ $fh = fopen($filePath, 'w'); fwrite($fh, serialize($info)); fclose($fh); -/* - $contents=''; - foreach ($_GET as $key => $value) { - $contents .= $key . " => " . $value . "\n"; // or use `"\r\n"` - } - file_put_contents("./test.log", $contents, FILE_APPEND); -*/ From 0b4c72a28d75fe030353bab10b6571ab6b72ee4d Mon Sep 17 00:00:00 2001 From: PJFonseca Date: Wed, 17 Mar 2021 13:32:02 +0000 Subject: [PATCH 6/8] Some fixes --- index.php | 2 +- languages/pt.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/index.php b/index.php index ba40995..da86563 100644 --- a/index.php +++ b/index.php @@ -54,7 +54,7 @@ ".($speed>0?"

"._SPEED.": ".$speed."

":"

"._IT_IS_STOPPED."

")."

"._CLICK_TO_SEE_INTERACTIVE_MAP."

- "._PAGE_GENERATED_AT." ".date("Y-m-d H:i:s")." + "._PAGE_GENERATED_AT." ".date("H:i")." "; diff --git a/languages/pt.php b/languages/pt.php index 26e2df1..9c8dae0 100644 --- a/languages/pt.php +++ b/languages/pt.php @@ -5,7 +5,7 @@ DEFINE ("_SPEED", "Velocidade"); DEFINE ("_IT_IS_STOPPED", "A Descansar!!"); DEFINE ("_TIMEZONE", "Fuso Horário"); -DEFINE ("_PAGE_GENERATED_AT", "Página gerada em"); +DEFINE ("_PAGE_GENERATED_AT", "Página gerada às"); DEFINE ("_CLICK_TO_SEE_INTERACTIVE_MAP", "Clicar para ver mapa interativo"); DEFINE ("_WARNING_INVALID_SECRET_KEY", "A chave utilizade é inválida"); From 812b0a033988a801d1b76ef440bc096f04954675 Mon Sep 17 00:00:00 2001 From: PJFonseca Date: Wed, 17 Mar 2021 13:33:50 +0000 Subject: [PATCH 7/8] Some fixes --- includes/settings.php | 2 +- index.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/settings.php b/includes/settings.php index 6defead..507fb17 100644 --- a/includes/settings.php +++ b/includes/settings.php @@ -14,7 +14,7 @@ // This key must be entered in OsmAnd's tracking URL as &key= $secretKey = 'CHANGEME'; // This key must be entered in OsmAnd's tracking URL as &realgpskey= - $secretRealGPDKey="CHANGEME"; + $secretRealGPSKey="CHANGEME"; // API key from MapQuest. Get one from developer.mapquest.com $apikey = ''; diff --git a/index.php b/index.php index da86563..efbb1fa 100644 --- a/index.php +++ b/index.php @@ -14,7 +14,7 @@ $timeAgo=$ClassUtils->timeAgo(date("Y-m-d H:i:s",substr($info['timestamp'],0,-3))); $speed=$ClassUtils->convertUnit($info['speed'],$unitForSpeed); - if($_GET['realgpskey']==$secretRealGPDKey){ + if($_GET['realgpskey']==$secretRealGPSKey){ $lat = $info['reallat']; $lon = $info['reallon']; }else{ From f30906f340c38ea3493d6e69b2648242eaafcb1f Mon Sep 17 00:00:00 2001 From: PJFonseca Date: Wed, 17 Mar 2021 15:14:43 +0000 Subject: [PATCH 8/8] New icons and minor bug fixes --- icons/download-speed.png | Bin 0 -> 10195 bytes icons/mia.png | Bin 0 -> 4088 bytes icons/mountain.png | Bin 0 -> 6797 bytes icons/speed.png | Bin 0 -> 34616 bytes includes/class.utils.php | 13 +++++++++---- includes/settings.php | 18 ++++++++---------- index.php | 25 +++++++++++++++++-------- 7 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 icons/download-speed.png create mode 100644 icons/mia.png create mode 100644 icons/mountain.png create mode 100644 icons/speed.png diff --git a/icons/download-speed.png b/icons/download-speed.png new file mode 100644 index 0000000000000000000000000000000000000000..d7fd34207e0ae1da54ce28fb0064e90392a12f82 GIT binary patch literal 10195 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 Q9~2Q8LQHg6U+IRF3v literal 0 HcmV?d00001 diff --git a/icons/mia.png b/icons/mia.png new file mode 100644 index 0000000000000000000000000000000000000000..a9231a691d7e19e384e93bf91c9ed6f9c9073866 GIT binary patch literal 4088 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 literal 0 HcmV?d00001 diff --git a/includes/class.utils.php b/includes/class.utils.php index dfa717e..708bbb7 100644 --- a/includes/class.utils.php +++ b/includes/class.utils.php @@ -26,16 +26,21 @@ function timeAgo($dateTime, $sendUnis = true) } } - function convertUnit($meterPerSec,$unit='kilometer_per_hour'){ + function convertUnit($meterPerSec,$unit='kilometer_per_hour',$label=false){ $units=array( "kilometer_per_hour"=>"0.2777778", "mile_per_hour"=>"0.44704" ); $unitsLabels=array( - "kilometer_per_hour"=>"km/h (kph)", - "mile_per_hour"=>" mi/h (mph)" + "kilometer_per_hour"=>"km/h", + "mile_per_hour"=>" mi/h" ); - return number_format(($meterPerSec*$units[$unit]),0,",","")." ".$unitsLabels["kilometer_per_hour"]; + if($label){ + return number_format(($meterPerSec*$units[$unit]),0,",","")." ".$unitsLabels[$unit]; + }else{ + return number_format(($meterPerSec*$units[$unit]),0,",",""); + } + } function generateRandomPoint($centre, $radius="") { diff --git a/includes/settings.php b/includes/settings.php index 507fb17..58e0a59 100644 --- a/includes/settings.php +++ b/includes/settings.php @@ -12,21 +12,21 @@ require_once(__DIR__ . "/../languages/" . $lang . ".php"); // This key must be entered in OsmAnd's tracking URL as &key= - $secretKey = 'CHANGEME'; + $secretKey = ''; // This key must be entered in OsmAnd's tracking URL as &realgpskey= - $secretRealGPSKey="CHANGEME"; + $secretRealGPSKey=""; // API key from MapQuest. Get one from developer.mapquest.com $apikey = ''; //Where the Tracker is - $trackerURL="https://url.com/"; + $trackerURL=""; // Used to round the lat/lon values so you aren't sharing your *exact* location $accuracy = 2; // in number of decimal positions // Random name for the file to avoid being downloaded ( Change this value ) - $fileName="filename_location"; + $fileName=""; // Where to store your last location $filePath = __DIR__ . "/../" .$fileName; @@ -35,18 +35,16 @@ //$unitForSpeed="mile_per_hour"; //Time in seconds when the page gets updates automatically. Zero means no refresh - $refreshTime=30; + $refreshTime=60; - // Used in page title - $pageTitle = 'Page Title Example'; // Used in page title $yourName = 'Jonh Doe'; + // Used in page title + $pageTitle = $yourName; // Zoom on the map // 8 gives a high overview; 12 gives a more zoomed-in map. Lower or higher values also possible. $zoom = "15"; $height = "600"; - $width = "900"; - - + $width = "900"; \ No newline at end of file diff --git a/index.php b/index.php index efbb1fa..f30757a 100644 --- a/index.php +++ b/index.php @@ -1,7 +1,7 @@ timeAgo(date("Y-m-d H:i:s",substr($info['timestamp'],0,-3))); + $altitude=number_format($info['altitude'],0,",","")." m"; + $speedLabel=$ClassUtils->convertUnit($info['speed'],$unitForSpeed,true); $speed=$ClassUtils->convertUnit($info['speed'],$unitForSpeed); - if($_GET['realgpskey']==$secretRealGPSKey){ + if($_GET['realgps']==$secretRealGPSKey){ $lat = $info['reallat']; $lon = $info['reallon']; }else{ @@ -22,9 +24,16 @@ $lon = $info['fakelon']; } + if($speed>0){ + $statusIcon="marker-lg-417505-$speed"; + }else{ + $statusIcon="marker-lg-f2231f-$speed"; + } + //$statusIcon=$trackerURL."icons/mia.png"; + $staticUrl = 'https://www.mapquestapi.com/staticmap/v5/map?'; $staticUrl = $staticUrl."size=$width,$height&type=map&imagetype=jpeg&key=$apikey"; - $staticUrl = $staticUrl . "&locations=$lat,$lon|&zoom=$zoom¢er=$lat,$lon"; + $staticUrl = $staticUrl . "&locations=$lat,$lon|".$statusIcon."&size=@2x|&zoom=$zoom¢er=$lat,$lon"; $mapUrl = 'https://www.openstreetmap.org'; $mapUrl = $mapUrl . "?mlat=$lat&mlon=$lon"; }else{ @@ -41,8 +50,6 @@ The issue is that you cannot place a marker (not that I have found). */ - $date = new DateTime(); - $timeZone = $date->getTimezone(); echo " $pageTitle @@ -50,9 +57,11 @@

- ".($timeAgo>0?"

".$yourName." "._STATUS_AS_OF." ".$timeAgo."

"._TIMEZONE." ".$timeZone->getName()."":"")." - ".($speed>0?"

"._SPEED.": ".$speed."

":"

"._IT_IS_STOPPED."

")." -
+ ".($timeAgo>0?"

".$yourName." "._STATUS_AS_OF." ".$timeAgo."

":"")." +

+ ".($speed>0?"".$speedLabel."":""._IT_IS_STOPPED."")." + ".$altitude."

+

"._CLICK_TO_SEE_INTERACTIVE_MAP."

"._PAGE_GENERATED_AT." ".date("H:i")."