define ("RTerra", 6378137);
define ("S_LAT", 'lat');
define ("S_LON", 'lon');
define ("KM_MIL", 1.60934);
// echo "costanti RT DG OK";
$RT = RTerra;
$Deg2Rad = M_PI/180;
$Alfa = 0.015; // coef. resistenza dell'aria; 0.0072 ottimale.
$Roto = 0.02; // coef. resistenza al rotolamento; 0.01 ottimale;
$Grav = 9.8;
if (!isset($SLat)) $SLat = 'lat';
if (!isset($SLon)) $SLon = 'lon';
// echo "variabili RT DG OK";
$Connesso = new mysqli(HOST, DEFAULT_USER, DEFAULT_PWD) or die ('Connessione rifiutata');
function EliminApostrofi($str){
return str_replace("'", "`", $str);
}
function getFotoData($foto){
if (!file_exists($foto) && ($foto[0] == '/')) {
$foto = '/var/www/html/bici'.$foto;
}
if (file_exists($foto) && (strpos($foto, '.jpg') || strpos($foto, '.jpeg'))){
$exif_data = exif_read_data ($foto, 'EXIF');
if (@array_key_exists('DateTimeOriginal', $exif_data)) {
return $exif_data['DateTimeOriginal'];
} else if (@array_key_exists('DateTimeDigitized', $exif_data)) {
return $exif_data['DateTimeDigitized'];
} else {
$exif_data = exif_read_data ($foto, 'IFD0');
if (@array_key_exists('DateTime', $exif_data)) return $exif_data['DateTime']; else return NULL;
}
} else
return NULL;
}
function ExifData($foto) {
$fotoData = getFotoData("/var/www/html/bici/$foto");
if (isset($fotoData)) {
$caption .= " (data e ora: $fotoData)";
}
return $caption;
}
function SegnaLuoghi($lat0, $lon0, $lat1, $lon1, $icona){
global $Connesso;
$cur = $Connesso->query("
SELECT nome, sigla, latitudine, longitudine, foto
FROM bici.luoghi
WHERE (longitudine BETWEEN $lon0 AND $lon1) AND (latitudine BETWEEN $lat0 AND $lat1)
ORDER BY longitudine DESC
");
if ($Connesso->error) echo $Connesso->error;
$result = '';
while ($riga = $cur->fetch_row()) {
$result .= "SetMarker0($riga[2], $riga[3], \"$riga[0]\", \"?Sigla=$riga[1]&Trova=1\", \"$riga[4]\", \"$riga[0]\", \"$icona\");";
}
return $result;
}
function JS_segnaLuoghiLatLon($cLat, $cLon, $zoom){
$dLa = $zoom/50;
$dLo = $zoom/50;
$lat0 = $cLat - $dLa;
$lon0 = $cLon - $dLo;
$lat1 = $cLat + $dLa;
$lon1 = $cLon + $dLo;
return SegnaLuoghi($lat0, $lon0, $lat1, $lon1, 'villa');
}
function IterUscitaSQL($sqlCom){
$line = GetPolylineSQL($sqlCom);
$linea = '[';
$sep = '';
foreach ($line as $latlon){
$linea .= "$sep new google.maps.LatLng($latlon)";
$sep = ',';
}
$linea .= "]\n";
return $linea;
}
function IterUscita($uscita, $verso){
$line = GetPolyline($uscita, $verso);
$linea = '[';
$sep = '';
foreach ($line as $latlon){
$linea .= "$sep new google.maps.LatLng($latlon)";
$sep = ',';
}
$linea .= "]\n";
return $linea;
}
function TrovaLatLon($percorso, &$lat, &$lon, &$zoom){
global $Connesso;
global $Deg2Rad;
global $SLat;
global $SLon;
$lat = 45.6;
$lon = 12.3;
$zoom = 10;
$curP = $Connesso->query("SELECT CLat, CLon, zoom FROM percorsi.riepilogo WHERE nome = '$percorso'");
if ($Connesso->error) echo $Connesso->error;
if ($rigaP = $curP->fetch_row()) {
$lat = $rigaP[0];
$lon = $rigaP[1];
$zoom = $rigaP[2];
} else {
$curP = $Connesso->query("SELECT min($SLat), min($SLon), max($SLat), max($SLon) FROM $percorso");
if ($Connesso->error) echo $Connesso->error;
if ($rigaP = $curP->fetch_row()) {
$lat = ($rigaP[0] + $rigaP[2])/2;
$lon = ($rigaP[1] + $rigaP[3])/2;
$wid = cos($lat*$Deg2Rad)*abs($rigaP[1] - $rigaP[3]);
$hi = abs($rigaP[0] - $rigaP[2]);
if ($hi > $wid) $wid = $hi;
$zoom = floor(9 - log($wid, 2));
if ($zoom > 13) $zoom = 13;
if ($zoom < 5) $zoom = 5;
}
}
// $zoom = 9;
/* $curP = $Connesso->query("SELECT min($SLat), min($SLon), max($SLat), max($SLon) FROM $percorso");
if ($Connesso->error) echo $Connesso->error;
if ($rigaP = $curP->fetch_row()) {
$lat = ($rigaP[0] + $rigaP[2])/2;
$lon = ($rigaP[1] + $rigaP[3])/2;
$wid = cos($lat*$Deg2Rad)*abs($rigaP[1] - $rigaP[3]);
$hi = abs($rigaP[0] - $rigaP[2]);
if ($hi > $wid) $wid = $hi;
$zoom = floor(9 - log($wid, 2));
if ($zoom > 13) $zoom = 13;
if ($zoom < 5) $zoom = 5;
// $zoom = 9;
}
*/
}
function EncodeChar($ll){
$lat = round($ll*100000);
if ($lat < 0) {
$lat = -$lat;
$lat = 4294967296 - $lat;
$lat = 2*$lat;
$lat = 8589934591 - $lat;
} else {
$lat = 2*$lat;
}
$line = '';
do {
$line .= chr(63 + (($lat % 32) | 32));
$lat = $lat / 32;
} while ($lat >= 32);
$line .= chr(63 + $lat);
return $line;
}
function EncPolyline($percorso, $verso){
global $Connesso;
global $SLat;
global $SLon;
$cur = $Connesso->query("SELECT $SLat, $SLon FROM $percorso ORDER BY ord $verso");
if ($Connesso->error) echo $Connesso->error;
$line = '';
$ulat = 0;
$ulon = 0;
while ($riga = $cur->fetch_row()) {
$line .= EncodeChar($riga[0] - $ulat);
$line .= EncodeChar($riga[1] - $ulon);
$ulat = $riga[0];
$ulon = $riga[1];
}
return $line;
}
function GetRPolyline($percorso, $verso, $riduci){
global $Connesso;
global $SLat;
global $SLon;
$cur = $Connesso->query("SELECT $SLat, $SLon FROM percorsi.$percorso ORDER BY ord $verso");
if ($Connesso->error) echo $Connesso->error;
$line = array();
$ind = 0;
$indR = 0;
while ($riga = $cur->fetch_row()) {
if ($ind == 0)
$line[$indR++] = "$riga[0], $riga[1]";
++$ind;
if ($ind == $riduci) $ind = 0;
}
return $line;
}
function GetPolylineSQL($sqlCom){
global $Connesso;
$cur = $Connesso->query($sqlCom);
if ($Connesso->error) echo $Connesso->error;
$line = array();
$ind = 0;
while ($riga = $cur->fetch_row()) {
$line[$ind++] = "$riga[0], $riga[1]";
}
return $line;
}
function GetPolyline($percorso, $verso){
global $SLat;
global $SLon;
// return GetPolylineSQL("SELECT $SLat, $SLon FROM percorsi.$percorso ORDER BY ord $verso"); può anche essere gps20xx !!
return GetPolylineSQL("SELECT $SLat, $SLon FROM $percorso ORDER BY ord $verso");
}
function GetPath($percorso, $verso){
global $Connesso;
global $SLat;
global $SLon;
$cur = $Connesso->query("SELECT $SLat, $SLon FROM $percorso ORDER BY ord $verso");
// $cur = $Connesso->query("SELECT $SLat, $SLon FROM percorsi.$percorso ORDER BY ord $verso");
if ($Connesso->error) echo $Connesso->error;
$line = '[';
// $line = '';
$ind = 0;
$sep = '';
while ($riga = $cur->fetch_row()) {
$line .= $sep."new google.maps.LatLng($riga[0], $riga[1])";
$sep = ', ';
}
return $line.']';
}
function GetInfoWindow($percorso){
global $Connesso;
$cur = $Connesso->query("SELECT lat, lon, legenda FROM percorsi.$percorso WHERE rango > 0");
if ($Connesso->error) echo $Connesso->error;
$info = array();
$ind = 0;
while ($riga = $cur->fetch_row()) {
$info[$ind++] = "$riga[0], $riga[1]|$riga[2]";
}
return $info;
}
function Secondi2HMS($time){
$ore = floor($time/3600);
$min = floor(($time - $ore*3600)/60);
$sec = floor(($time - $ore*3600 - $min*60));
return array('ore' => $ore, 'min' => $min, 'sec' => $sec);
}
function Ore2HMagellan($hours){
$ore = floor($hours);
$resto = $hours - $ore;
$min = $resto * 60;
return 100*$ore + $min;
}
function HMS2Secondi($hour, $min, $sec){
return $sec + 60*$min + 3600*$hour;
}
function HMS2Minuti($hour, $min, $sec){
return $sec/60 + $min + 60*$hour;
}
function OraEstiva($anno, $mese, $di){
if (($mese > 2) && ($mese < 9)){
return true;
} else if ($mese == 2){
$ud = 31 - ((gregoriantojd (3, 31, $anno)+1) % 7);
if ($di >= $ud) {
return true;
} else {
return false;
}
} else if ($mese == 9){
$ud = 31 - ((gregoriantojd (3, 31, $anno)+1) % 7);
if ($di >= $ud) {
return false;
} else {
return true;
}
} else {
return false;
}
}
function DiffOra($anno, $mese, $di){
if (OraEstiva($anno, $mese, $di)) {
return 2;
} else {
return 1;
}
}
function ReadMetaData($xml){
$mdata = array();
while ($xml->read()) {
if (($xml->name == "time") && ($xml->nodeType == 1)) {
$xml->read();
$mdata[0] = substr($xml->value, 0, 10);
$mdata[1] = substr($xml->value, 11, 8);
}
if ($xml->name == "bounds") {
$mdata[2] = $xml->getAttribute('minlat');
$mdata[3] = $xml->getAttribute('minlon');
$mdata[4] = $xml->getAttribute('maxlat');
$mdata[5] = $xml->getAttribute('maxlon');
break;
}
}
return $mdata;
}
function ReadTrackpoint($xml){
$trk = array();
if ($xml->hasAttributes){
$trk[0] = $xml->getAttribute('lat');
$trk[1] = $xml->getAttribute('lon');
}
while ($xml->read()) {
if (($xml->name == "trkpt") && ($xml->nodeType == 15)) break;
if (($xml->name == "ele") && ($xml->nodeType == 1)) {
$xml->read();
$trk[2] = (int) $xml->value;
}
if (($xml->name == "time") && ($xml->nodeType == 1)) {
$xml->read();
$trk[3] = substr($xml->value, 0, 10);
$trk[4] = substr($xml->value, 11, 8);
}
}
return $trk;
}
function ReadWaypoint($xml){
$wpt = array();
if ($xml->hasAttributes){
$wpt[4] = $xml->getAttribute('lat');
$wpt[5] = $xml->getAttribute('lon');
}
while ($xml->read()) {
if (($xml->name == "wpt") && ($xml->nodeType == 15)) break;
if (($xml->name == "ele") && ($xml->nodeType == 1)) {
$xml->read();
$wpt[2] = (int) $xml->value;
}
if (($xml->name == "name") && ($xml->nodeType == 1)) {
$xml->read();
$wpt[0] = $xml->value;
}
if (($xml->name == "desc") && ($xml->nodeType == 1)) {
$xml->read();
$wpt[1] = $xml->value;
}
}
$wpt[3] = '';
$wpt[6] = 1;
return $wpt;
}
function SelectFileGPS($name, $dir, $selected, $tipo){
$dp = opendir($dir);
echo "$dir \n";
closedir($dp);
}
function SelectTracceTXT($fname, $selected){
echo "\n";
}
function SelectTracceGPS($uscita, $selected, $tipo){
if (isset($uscita) && (strlen($uscita) > 2)) {
if ($tipo == 'gpx') {
$mark = 'trk';
} else if ($tipo == 'kml') {
$mark = 'Placemark';
} else if ($tipo == 'txt') {
SelectTracceTXT($uscita, $selected);
return 1;
}
$fname = $uscita;
$xml = new XMLReader();
$xml->open($fname);
// if (floatval(phpversion()) > 5.1) $xml->setParserProperty(XMLReader::LOADDTD, TRUE);
echo "\n";
$xml->close();
}
}
function Second2Hour($secondi){
$s = $secondi % 60;
$h = ($secondi - $s)/60;
$m = $h % 60;
$h = ($h - $m)/60;
return array($h, $m, $s);
}
function Polar2Cartes($lat, $lon, $alt){
global $RT;
$raggio = $RT + $alt;
$x = (float)$raggio*(cos($lat)*cos($lon));
$y = (float)$raggio*(cos($lat)*sin($lon));
$z = (float)$raggio*(sin($lat));
return array($x, $y, $z);
}
function Distanza($P0, $P1){
$dx = $P0[0]-$P1[0];
$dy = $P0[1]-$P1[1];
$dz = $P0[2]-$P1[2];
return (float)sqrt($dx*$dx + $dy*$dy + $dz*$dz);
}
function DistanzaSfericaC($lat0, $lon0, $alt0, $lat1, $lon1, $alt1){
global $RT;
$P0 = Polar2Cartes($lat0, $lon0, $alt0);
$P1 = Polar2Cartes($lat1, $lon1, $alt0);
return Distanza($P0, $P1);
}
function DistanzaSfericaP($lat0, $lon0, $lat1, $lon1){
global $RT;
$dlat = $RT*($lat1 - $lat0);
$dlon = $RT*($lon1 - $lon0);
$mlat = ($lat0 + $lat1)/2;
$fcos = cos($lat0);
return sqrt($dlat^2 + ($fcos*$dlon)^2);
}
function DistanzaCurvilinea($dretta){
global $RT;
return 2*$RT*asin($dretta/2/$RT);
}
function Potenza($massa, $pendenza, $vel, $frenate, $roto){
global $Alfa;
// global $Roto;
global $Grav;
// global $Frenate;
// $roto = $Roto;
if ($pendenza < 0) $roto += abs($pendenza)*$frenate; // simulazione frenate in discesa;
return ($massa*($pendenza + $roto) + $Alfa*$vel*$vel)*$Grav*abs($vel);
}
function Velocita($potenza, $massa, $pendenza, $vel0, $vel1, $frenate, $roto){
$conta = 0;
$error0 = $potenza - Potenza($massa, $pendenza, $vel0, $frenate, $roto);
do {
$vel = ($vel0 + $vel1) /2;
$error = $potenza - Potenza($massa, $pendenza, $vel, $frenate, $roto);
if ($error0*$error < 0) {
$vel1 = $vel;
} else {
$vel0 = $vel;
$error0 = $error;
}
++$conta;
} while ((abs($error) > 0.001) && ($conta < 10));
return $vel;
}
function JS_Itinerario_LatLon($nome, &$CLat, &$CLon){
global $Connesso;
$cur = $Connesso->query("SELECT CLat, CLon FROM percorsi.riepilogo WHERE nome = '$nome'");
if ($riga = $cur->fetch_row()) {
$CLat = $riga[0];
$CLon = $riga[1];
}
}
function JS_Itinerario($nome, $colore){
global $Connesso;
$cur = $Connesso->query("SELECT nome, titolo, url_pagina, ordine FROM percorsi.riepilogo WHERE nome = '$nome'");
$JScode = "Percorso = [";
if ($riga = $cur->fetch_row()) {
$Titolo = $riga[1];
$URL = $riga[2];
if (strlen($URL) < 2) $URL = "/itinerari/percorso.html?Percorso=$riga[0]";
$OrdIter = $riga[3];
$line = GetRPolyline($riga[0], 'ASC', 1);
$sep = '';
foreach($line as $latlon) {
$JScode .= "$sep new google.maps.LatLng($latlon)";
$sep = ',';
}
$JScode .= "]
var LatLon = Percorso;
var iter = new google.maps.Polyline({
strokeColor : '$colore',
strokeWeight: 3,
path: LatLon
});
iter.setMap(mappa);
google.maps.event.addListener(iter, 'click', function(){location.href = '$URL';});
google.maps.event.addListener(iter, 'rightclick', function(){location.href = '/gps/tabella_marcia.phtml?Uscita=$nome';});
";
}
return $JScode;
}
function JS_ItinerariWhere($where, $riduci){
global $Connesso;
$cur = $Connesso->query("
SELECT nome, titolo, url_pagina, ordine
FROM percorsi.riepilogo r, percorsi.percorsiMappe m
$where AND r.nome = m.percorso
ORDER BY ordine
");
if ($Connesso->error) echo "$where - ".$Connesso->error;
$P_ind = 0;
$colore = array('#A03030', '#3030A0', '#308030', '#30A0A0', '#A0A030', '#A030A0', '#202020');
$JScode = '';
while ($riga = $cur->fetch_row()) {
$Nome = $riga[0];
$Titolo = $riga[1];
$URL = $riga[2];
if (strlen($URL) < 2) $URL = "/itinerari/percorso.html?Percorso=$riga[0]";
$OrdIter = $riga[3];
$line = GetRPolyline($riga[0], 'ASC', $riduci);
$sep = '';
$JScode .= "Percorso = [";
foreach($line as $latlon) {
$JScode .= "$sep new google.maps.LatLng($latlon)";
$sep = ',';
}
$color_ind = $colore[$P_ind % 7];
$JScode .= "]
var LatLon = Percorso;
var iter = new google.maps.Polyline({ strokeColor : \"$color_ind\", strokeWeight: 3, path: LatLon});
iter.setMap(mappa);
google.maps.event.addListener(iter, \"click\", function(){location.href = \"$URL\";});
google.maps.event.addListener(iter, \"rightclick\", function(){location.href = \"/gps/tabella_marcia.phtml?Uscita=$Nome\";});
";
++$P_ind;
}
return $JScode;
}
function JS_Percorso($percorso, $riduci){
$where = " WHERE nome = '$percorso'";
return JS_ItinerariWhere($where, $riduci);
}
function SegnaVille($lat0, $lon0, $lat1, $lon1, $icona){
global $Connesso;
$cur = $Connesso->query("
SELECT v.nome, v.pagina, l.nome, v.architetto, v.provincia, v.latitudine, v.longitudine, v.foto, v.sigla
FROM bici.villevenete v, bici.luoghi l
WHERE v.luogo = l.sigla AND (v.longitudine BETWEEN $lon0 AND $lon1) AND (v.latitudine BETWEEN $lat0 AND $lat1)
ORDER BY v.longitudine DESC
");
if ($Connesso->error) echo $Connesso->error;
while ($riga = $cur->fetch_row()) {
$foto = $riga[7];
if (!isset($foto) || (strlen($foto) < 3)) {
$sigla = $riga[8];
$curF = $Connesso->query("
SELECT f.foto FROM bici.villevenete v, bici.villeFoto f
WHERE v.sigla = f.villa AND v.sigla = '$sigla' LIMIT 1
");
if ($rigaF = $curF->fetch_row()) $foto = $rigaF[0]; else $foto = '???';
}
echo " SetMarker0(mappa, $riga[5], $riga[6], \"$riga[0] a $riga[2] ($riga[4])\", \"/luoghi/$riga[1]\", \"/luoghi/$foto\", \"\", \"$icona\");\n";
}
}
function JS_LocalIgnote($percorso){
global $Connesso;
$cur = $Connesso->query("SELECT lat, lon FROM percorsi.percorsiFoto WHERE percorso = '$percorso'");
if ($Connesso->error) echo "$where - ".$Connesso->error;
$locaIgnote = 0;
while ($riga = $cur->fetch_row()) {
if (!isset($riga[0])) ++$localIgnote;
if (!isset($riga[1])) ++$localIgnote;
}
return $localIgnote;
}
function JS_FotoVilla($villa, $icona){ // foto villa dove?
global $Connesso;
$sqlCom ="
SELECT f.foto, f.titolo, f.descrizione, f.lat, f.lon, f.caption, f.title, r.latitudine, r.longitudine, r.nome, r.foto
FROM bici.villeFoto f, bici.villevenete r
WHERE f.villa = '$villa' AND r.sigla = '$villa'
";
$cur = $Connesso->query($sqlCom);
if ($Connesso->error) echo $Connesso->error;
$fotoList = '';
$conta = 0;
while ($riga = $cur->fetch_row()) {
$foto = $riga[0];
$iFoto = $riga[10];
if (!isset($iFoto) || (strlen($iFoto) < 3)) $iFoto = $foto; else $iFoto = '---';
if ($conta == 0){
if (isset($riga[7])) $vlat = $riga[7]; else $vlat = 100;
if (isset($riga[8])) $vlon = $riga[8]; else $vlon = 100;
$fotoList .= "SetMarker0($vlat, $vlon, \"$riga[9]\", \"/luoghi/villa.html?Sigla=$villa\", \"/luoghi/$iFoto\", \"\", \"villa\"); ";
}
$server = $_SERVER['SERVER_NAME'];
if (($server == "bicycle.bonavoglia.eu") || ($server == "bike.bonavoglia.eu")) {
$titolo = utf8_encode(EliminApostrofi($riga[6]));
$legenda = utf8_encode(EliminApostrofi($riga[5]));
} else {
$titolo = utf8_encode(EliminApostrofi($riga[1]));
$legenda = utf8_encode(EliminApostrofi($riga[2]));
}
if (isset($riga[3])) $lat = $riga[3]; else $lat = 100;
if (isset($riga[4])) $lon = $riga[4]; else $lon = 100;
if (($lat < 100) && ($lon < 100))
$fotoList .= "SetMarker0($lat, $lon, \"$titolo\", \"\", \"/luoghi/$foto\", \"$legenda\", \"$icona\"); ";
}
return $fotoList;
}
function JS_FotoLuogo($luogo, $icona){
global $Connesso;
$sqlCom ="
SELECT f.foto, f.titolo, f.descrizione, f.lat, f.lon, f.caption, f.title, r.latitudine, r.longitudine, r.nome
FROM bici.luoghiFoto f, bici.luoghi r
WHERE f.luogo = '$luogo' AND r.situato = '$luogo' AND f.lat <> 0
GROUP BY f.titolo
";
$cur = $Connesso->query($sqlCom);
if ($Connesso->error) echo $Connesso->error;
$fotoList = '';
$conta = 0;
while ($riga = $cur->fetch_row()) {
$foto = $riga[0];
$server = $_SERVER['SERVER_NAME'];
if (($server == "bicycle.bonavoglia.eu") || ($server == "bike.bonavoglia.eu")) {
$titolo = utf8_encode(EliminApostrofi($riga[6]));
$legenda = utf8_encode(EliminApostrofi($riga[5]));
} else {
$titolo = utf8_encode(EliminApostrofi($riga[1]));
$legenda = utf8_encode(EliminApostrofi($riga[2]));
}
if (isset($riga[3])) $lat = $riga[3]; else $lat = 100;
if (isset($riga[4])) $lon = $riga[4]; else $lon = 100;
if (($lat < 100) && ($lon < 100))
$fotoList .= "SetMarker0($lat, $lon, \"$titolo\", \"\", \"/citta/$foto\", \"$legenda\", \"$icona\"); ";
}
return $fotoList;
}
function JS_FotoFiltro($filtro, $icona){
global $Connesso;
$cur = $Connesso->query("
SELECT f.foto, f.titolo, f.descrizione, f.lat, f.lon, f.caption, f.title, r.parent
FROM percorsi.percorsiFoto f, percorsi.riepilogo r, percorsi.percorsiMappe m
WHERE f.percorso = r.nome AND m.percorso = r.nome $filtro
");
if ($Connesso->error) echo $Connesso->error;
$fotoList = '';
while ($riga = $cur->fetch_row()) {
$parent = $riga[7];
$server = $_SERVER['SERVER_NAME'];
if (($server == "bicycle.bonavoglia.eu") || ($server == "bike.bonavoglia.eu")) {
if (strpos($riga[0], '/itinerari/') === false) $foto = "${parent}it/$riga[0]"; else $foto = "it/$riga[0]";
$titolo = utf8_encode(EliminApostrofi($riga[6]));
$legenda = utf8_encode(EliminApostrofi($riga[5]));
} else {
if (strpos($riga[0], '/itinerari/') === false) $foto = "${parent}$riga[0]"; else $foto = $riga[0];
$titolo = utf8_encode(EliminApostrofi($riga[1]));
$legenda = utf8_encode(EliminApostrofi($riga[2]));
}
if (isset($riga[3])) $lat = $riga[3]; else $lat = 100;
if (isset($riga[4])) $lon = $riga[4]; else $lon = 100;
if (($lat < 100) && ($lon < 100))
$fotoList .= "SetMarker0($lat, $lon, \"$titolo\", \"\", \"$foto\", \"$legenda\", \"$icona\"); ";
}
return $fotoList;
}
function JS_FotoPercorso($percorso, $icona){
return JS_FotoFiltro(" AND f.percorso = '$percorso'", $icona);
}
function JS_FotoWhere($percorso, $icona){ // per compatibilità
return JS_FotoFiltro(" AND m.percorso = '$percorso'", $icona);
}
function JS_FotoViaggio($viaggio, $icona){
return JS_FotoFiltro(" AND m.mappa = '$viaggio'", $icona);
}
function TabellaViaggio($viaggio, $align, $metric){
global $Connesso;
if (isset($metric)) {
echo "
\n | Date | Segment | km | miles";
$titolo = 'title';
} else {
echo "\n | Data | Tappa | km";
$titolo = 'titolo';
}
echo " | \n";
$sqlCom = "
SELECT DATE(ultimaData)
FROM percorsi.riepilogo
WHERE mappa0 = '$viaggio' ORDER BY ultimaData ASC, Ordine
";
$cur = $Connesso->query($sqlCom);
$semitappe = array();
$ord = -1;
$udata = '';
while ($riga = $cur->fetch_row()) {
$data = $riga[0];
if ($data == $udata) {
++$semitappe[$ord]['Num'];
} else {
++$ord;
$semitappe[$ord] = array('Num' => 1, 'Data' => "$riga[0]");
}
$udata = $data;
}
$km = 0;
$ord = 0;
$riga = '';
$Connesso->data_seek($cur, 0);
foreach ($semitappe as $tappa){
++$ord;
$cols = $tappa['Num'];
$data = $tappa['Data'];
echo "| $ord | ";
echo $data;
$sqlCom = "
SELECT Nome, $titolo, km
FROM percorsi.riepilogo
WHERE mappa0 = '$viaggio' AND DATE(ultimadata) = '$data' ORDER BY ultimaData ASC";
$curT = $Connesso->query($sqlCom);
$acapo = 0;
while ($rigaT = $curT->fetch_row()) {
$kmC = $rigaT[2];
if (isset($metric)) $miles = round(2*$kmC/KM_MIL)/2;
$nome = utf8_encode($rigaT[1]);
if ($acapo == 1) echo ' |
|---|
';
echo "| $nome | $kmC";
if (isset($metric)) echo sprintf(" | %0.1f", $miles);
echo " | \n";
$acapo = 1;
$km += $kmC;
}
}
echo " | Total | $km";
if (isset($metric)) {
$miles = round(2*$km/KM_MIL)/2;
printf(" | %0.1f", $miles);
}
echo " | \n \n";
}
function JS_segnaVille($lat0, $lon0, $lat1, $lon1, $icona){ // popup villa su mappa
global $Connesso;
$cur = $Connesso->query("
SELECT v.nome, v.pagina, l.nome, v.architetto, v.provincia, v.latitudine, v.longitudine, v.foto, v.sigla
FROM bici.villevenete v, bici.luoghi l
WHERE v.luogo = l.sigla AND v.longitudine > $lon0 AND v.longitudine < $lon1 AND v.latitudine > $lat0 AND v.latitudine < $lat1
ORDER BY v.longitudine DESC
");
if ($Connesso->error) echo $Connesso->error;
$JScode = '';
while ($riga = $cur->fetch_row()) {
$foto = $riga[7];
$sigla = $riga[8];
if (!isset($foto) || (strlen($foto) < 3)) {
$sigla = $riga[8];
$curF = $Connesso->query("
SELECT f.foto FROM bici.villevenete v, bici.villeFoto f
WHERE v.sigla = f.villa AND v.sigla = '$sigla' LIMIT 1
");
if ($rigaF = $curF->fetch_row()) $foto = $rigaF[0]; else $foto = '???';
}
if ($_SERVER['SERVER_NAME'] == "bicycle.bonavoglia.eu") $foto = "/luoghi/it/$foto"; else $foto = "/luoghi/$foto";
if (strlen($riga[1]) < 3) $URL = "/luoghi/villa.html?Sigla=$riga[8]"; else $URL = "/luoghi/$riga[1]";
$JScode .= "SetMarker0($riga[5], $riga[6], \" == $riga[0] a $riga[2] ($riga[4]) == \", \"$URL\", \"$foto\", \"\", \"$icona\"); ";
}
return $JScode;
}
function JS_segnaVilleLatLon($cLat, $cLon, $zoom){
$dLa = $zoom/50;
$dLo = $zoom/50;
$lat0 = $cLat - $dLa;
$lon0 = $cLon - $dLo;
$lat1 = $cLat + $dLa;
$lon1 = $cLon + $dLo;
return JS_segnaVille($lat0, $lon0, $lat1, $lon1, 'villa');
}
function JS_ItinerariLatLon($cLat, $cLon, $zoom){
$dLa = $zoom/10;
$dLo = $zoom/5;
$lat0 = $cLat - $dLa;
$lon0 = $cLon - $dLo;
$lat1 = $cLat + $dLa;
$lon1 = $cLon + $dLo;
// return JS_ItinerariWhere("WHERE CLat > $lat0 AND CLat < $lat1 AND CLon > $lon0 AND CLon < $lon1", 2);
return JS_ItinerariWhere("WHERE (CLat BETWEEN $lat0 AND $lat1) AND (CLon BETWEEN $lon0 AND $lon1)", 2);
}
function JS_ItinerariBox($cLat0, $cLat1, $cLon0, $cLon1, $zoom){
return JS_ItinerariWhere("WHERE (CLat BETWEEN $cLat0 AND $cLat1) AND (CLon BETWEEN $cLon0 AND $cLon1)", 2);
}
function JS_Itinerari($riduci){
return JS_ItinerariWhere('', $riduci);
}
?>
|
|---|