Différences entre les versions de « Atlas 380/iPad/notreavion.net »
Aller à la navigation
Aller à la recherche
Ligne 68 : | Ligne 68 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Page | == Page de calcul et choix d'option de récupération == | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
<?php | <!DOCTYPE HTML> | ||
<html lang="fr"> | |||
?> | |||
html text | <!--Feuille de calcul du fichier KML et d'affichage des options d'envoi--> | ||
<? | |||
<head> | |||
?> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | ||
<title>Résultat FAR-KML</title> | |||
<link rel="stylesheet" type="text/css" href="style.css"> | |||
</head> | |||
<body> | |||
<?php | |||
if (!$route= $_POST["name"]) // récupère la route | |||
{ // la route est vide!!! | |||
//Message si route vide | |||
echo "<p class='error'>ERREUR : Vous n'avez rien collé !!!!!!!</p>"; | |||
echo "<hr>"; | |||
echo '<br><br><button type ="button" class="btn" onclick="window.history.back();">Retour</button> '; | |||
echo '<button type ="button" class="btn" style= "padding: 10px 15px 10px 15px;" onclick="location.href=\'help.html\'">?</button>'; | |||
exit; | |||
} | |||
$mytype=$_POST['typeroute']; | |||
$route; | |||
$fc="(\b[N|S].{6}[W|E].{7}\b)"; //format des coordonnées mot entier uniquement | |||
$rempl = "latitudlongitud"; | |||
$routebis=preg_replace($fc,$rempl,$route); //remplace les coordonnées par texte pour analyse et recherche | |||
$posdeb=strpos($routebis,$rempl); //position premières coordonnées | |||
if (stripos($_SERVER['HTTP_USER_AGENT'],"iPad")){ // si appel depuis IPAD, il faut enlever un caractère supplémentaire????? | |||
$offset =6; | |||
} | |||
else { | |||
$offset=5; | |||
} | |||
$route=substr($route,$posdeb-$offset); | |||
$posfin=strripos($routebis,$rempl); | |||
//position des dernières coordonnées | |||
$route=substr($route,0,$posfin+15-$posdeb+$offset); //suppression de ce qui est derrière les dernières coordonnées | |||
if (strstr($route,"-")) | |||
{ | |||
$rdeg= stristr($route,"---"); // crée le dégagement s'il existe | |||
$rdeg=preg_replace("[-]","",$rdeg); | |||
$pos=stripos($route,"-"); | |||
$rmain=substr($route,0,$pos); | |||
} | |||
else | |||
{ | |||
$rdeg=""; // pas de dégagement | |||
$rmain=$route; | |||
} | |||
$rmain= filter_var($rmain, FILTER_SANITIZE_ENCODED); | |||
$rmain=preg_replace("[%(20|0A|0D)]"," ",$rmain); | |||
$rmain=explode(" ",$rmain); //met tous les éléments dans un tableau | |||
$rmain= array_values(array_filter($rmain,"testvide")); //supprime les élements vides et reindexe le tableau | |||
if (count($rmain)<4) | |||
{ | |||
//Message si route trop courte, pas assez de points | |||
echo "<p class='error'>ERREUR : Il faut au moins deux point pour définir une route<br>Vérifiez votre insertion ! ! ! ! !</p>"; | |||
echo "<hr>"; | |||
echo '<br><br><button type ="button" class="btn" onclick="window.history.back();">Retour</button> '; | |||
echo '<button type ="button" class="btn" style= "padding: 10px 15px 10px 15px;" onclick="location.href=\'help.html\'">?</button>'; | |||
exit; | |||
} | |||
$rdeg= filter_var($rdeg, FILTER_SANITIZE_ENCODED); | |||
$rdeg=preg_replace("[%(20|0A|0D)]"," ",$rdeg); | |||
$rdeg=explode(" ",$rdeg); | |||
$rdeg= array_values(array_filter($rdeg,"testvide")); | |||
$rmain= CreateArrayRoute ($rmain); | |||
$rdeg= CreateArrayRoute ($rdeg); | |||
// Création du nom du fichier | |||
$dep=$rmain[0]['waypoint']; //Point de départ | |||
$arr=end($rmain)['waypoint']; //Point d'arrivée | |||
$deg=end($rdeg)['waypoint']; //Point de dégagement | |||
$timestp = date("dMY_His"); | |||
if ($deg){ | |||
$mykml = $dep."-".$arr."_(".$deg.")_".$timestp.".kml"; //Nom du fichier KML | |||
} | |||
else { | |||
$mykml = $dep."-".$arr."_".$timestp.".kml"; | |||
} | |||
$mykml = trim($mykml); //Suppression des caractères bizarres | |||
generatekml ($rmain,$rdeg,$mykml,$mytype); //Création du point KML | |||
// Création de l'image | |||
$rmain=InvertLat ($rmain); | |||
$rdeg=InvertLat ($rdeg); | |||
$deppoint=$rmain[0]['latitude'].",".$rmain[0]['longitude']; //Point de départ | |||
$arrmain=end($rmain)['latitude'].",".end($rmain)['longitude']; //Arrivée | |||
$arrdeg=end($rdeg)['latitude'].",".end($rdeg)['longitude']; //Dégagement | |||
$mainstring= CreateString($rmain); //Création string route principale et dégagement | |||
$degstring= CreateString($rdeg); | |||
$upperleftlat=max(array_column($rmain,'latitude')); //point gauche et point droit de la carte statique | |||
$upperleftlong=min(array_column($rmain,'longitude')); | |||
$upperleft=$upperleftlat.",".$upperleftlong; | |||
$lowerrightlat= min(array_column($rmain,'latitude')); | |||
$lowerrightlong=max(array_column($rmain,'longitude')); | |||
$lowerright=$lowerrightlat.",".$lowerrightlong; | |||
//Map MapQuest | |||
//A noter que le paramètre key est propriétaire du site et doit être demandé à MapQuest pour utilisation sur un autre site | |||
// Création de l'image MapQuest | |||
$mapurl= "http://open.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd%7Cluurnu0125%2Cbs%3Do5-9w8lgw&size=1000,1000&margin=10&imagetype=png&pois=red_1,".$deppoint."|purple_1,".$arrdeg."|red_1,".$arrmain."&polyline=color:0xFF0000|width:3|".$mainstring."&polyline=color:0xCCCC00|width:3|".$degstring.""; | |||
// Création de l'image MapQuest en plein écran | |||
$imgurl="http://open.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd%7Cluurnu0125%2Cbs%3Do5-9w8lgw&size=300,200&margin=15&scalebar=false&imagetype=png&pois=red_1,".$deppoint."|purple_1,".$arrdeg."|red_1,".$arrmain."&polyline=color:0xFF0000|width:2|".$mainstring."&polyline=color:0xCCCC00|width:2|".$degstring.""; | |||
//Affichage du résultat | |||
echo "<p>Votre fichier ".$mykml." est disponible</p>"; | |||
echo "<a href=$mapurl target='_blank'><img src='$imgurl'></a>"; | |||
echo "<hr>"; | |||
echo "<br>"; | |||
$filename="carteanim.html?file=../convert/KML_outputs/".$mykml; | |||
echo '<button type ="button" class="btn" onclick="window.open(\''.$mapurl.'\')"> Carte statique </button>'; | |||
echo "<br>"; | |||
echo "<br>"; | |||
echo '<button type ="button" class="btn" onclick="window.open(\''.$filename.'\')">Carte interactive</button>'; | |||
echo "<br>"; | |||
echo "<br>"; | |||
echo '<button type ="button" class="btn" onclick="location.href=\'../convert/KML_outputs/'.$mykml.'\'">Téléchargement</button>'; //Faire test avec fichiers dans dossier. | |||
echo "<br>"; | |||
echo "<br>"; | |||
echo "<form action='envoi_mail.php' method='post'> | |||
<input type='text' name ='email' placeholder='Votre adresse mail' class= 'style_input'> | |||
<br> <br><input type ='submit' value='Envoyer le mail'> | |||
<input type='hidden' name='fichier' value='../convert/KML_outputs/".$mykml."'> </form>"; | |||
echo '<br><br><button type ="button" class="btn" onclick="window.history.back();">Retour</button> '; | |||
echo '<button type ="button" class="btn" style= "padding: 10px 15px 10px 15px;" align="right" onclick="location.href=\'help.html\'">?</button>'; | |||
echo "<br>"; | |||
//========= Les fonctions utilisées ========= | |||
//Fonction de test, pour voir si un élément d'un tableau est vide | |||
function testvide($var) | |||
{ | |||
strlen($var)==0; | |||
return($var); | |||
} | |||
//Fonction de création du fichier .KML | |||
function generatekml($inputm,$inputd,$filename,$type){ | |||
// $inputm est la route principale, $inputd est la route dégagement,$type est le type de route | |||
$output="<?xml version='1.0' encoding='UTF-8'?> | |||
<kml xmlns='http://www.opengis.net/kml/2.2' xmlns:gx='http://www.google.com/kml/ext/2.2' xmlns:kml='http://www.opengis.net/kml/2.2' xmlns:atom='http://www.w3.org/2005/Atom'> | |||
<Document> | |||
<name>"; | |||
$output.=substr($filename,0,9)."</name> | |||
<Style id='no_icone'> | |||
<IconStyle> | |||
<Icon> | |||
<href>http://www.notreavion.net/convert/images/no_icon.png</href> | |||
</Icon> | |||
<hotSpot x='0.5' y='0.0' xunits='fraction' yunits='fraction' /> | |||
</IconStyle> | |||
</Style> | |||
<Style id='placemark-purple'> | |||
<IconStyle> | |||
<Icon> | |||
<href>http://maps.me/placemarks/placemark-purple.png</href> | |||
</Icon> | |||
<hotSpot x='0.5' y='0.0' xunits='fraction' yunits='fraction' /> | |||
</IconStyle> | |||
</Style> | |||
<Style id='placemark-pink'> | |||
<IconStyle> | |||
<Icon> | |||
<href>http://maps.me/placemarks/placemark-pink.png</href > | |||
</Icon> | |||
<hotSpot x='0.5' y='0.0' xunits='fraction' yunits='fraction' /> | |||
</IconStyle> | |||
</Style> | |||
<Style id='rmain'> | |||
<LineStyle> | |||
<color>FFDA25A8</color> | |||
<width>3</width> | |||
</LineStyle> | |||
<PolyStyle> | |||
<color>FFDA25A8</color> | |||
</PolyStyle> | |||
</Style> | |||
<Style id='rdeg'> | |||
<LineStyle> | |||
<color>FFFF00FF</color> | |||
<width>3</width> | |||
</LineStyle> | |||
<PolyStyle> | |||
<color>FFFF00FF</color> | |||
</PolyStyle> | |||
</Style> | |||
<Folder> | |||
<name>Lignes</name> | |||
<open>1</open> | |||
<Placemark> | |||
<name>Rmain</name> | |||
<styleUrl>#rmain</styleUrl>"; | |||
$output.=" | |||
<LineString> | |||
<tessellate>1</tessellate> | |||
<coordinates>"; | |||
foreach($inputm as $point){ | |||
$coordinates=$point['coordinates']; | |||
$output.="$coordinates ";} | |||
$output.="</coordinates> | |||
</LineString> | |||
</Placemark>"; | |||
$output.="<Placemark> | |||
<name>Rdeg</name> | |||
<styleUrl>#rdeg</styleUrl>"; | |||
$output.=" | |||
<LineString> | |||
<tessellate>1</tessellate> | |||
<coordinates>"; | |||
foreach($inputd as $point){ | |||
$coordinates=$point['coordinates']; | |||
$output.="$coordinates ";} | |||
$output.="</coordinates> | |||
</LineString> | |||
</Placemark> | |||
</Folder><Folder>"; | |||
if($type=="routewaypoint"){ | |||
foreach($inputm as $point){ | |||
$name=$point['waypoint']; | |||
$coordinates=$point['coordinates']; | |||
$output.=" | |||
<Placemark>"; | |||
$output.="<name>$name</name>"; | |||
$output.=" | |||
<styleUrl>#placemark-purple</styleUrl> | |||
"; | |||
$output.="<description>$name</description> | |||
<Point> | |||
<coordinates>$coordinates</coordinates> | |||
</Point> | |||
</Placemark> | |||
"; | |||
} | |||
foreach($inputd as $point){ | |||
$name=$point['waypoint']; | |||
$coordinates=$point['coordinates']; | |||
$output.="<Placemark>"; | |||
$output.="<name>$name</name>"; | |||
$output.=" | |||
<styleUrl>#placemark-pink</styleUrl> | |||
"; | |||
$output.="<description>$name</description> | |||
<Point> | |||
<coordinates>$coordinates</coordinates> | |||
</Point> | |||
</Placemark> | |||
"; | |||
} | |||
} | |||
$output.="</Folder></Document> | |||
</kml> | |||
"; | |||
//Ecriture du fichier KML dans le dossier KML_outputs sur le serveur | |||
$myfile = fopen("../convert/KML_outputs/".$filename,"w") or die("Unable to open file!"); | |||
fwrite($myfile, $output); | |||
fclose($myfile); | |||
/* | |||
//Création du fichier kmz - non utilisé | |||
$mykmz = substr($filename,0,strlen($filename)-3)."kmz"; | |||
$zip = new ZipArchive(); | |||
if ($zip->open($mykmz, ZIPARCHIVE::CREATE)!==TRUE) { | |||
exit("cannot open <$file>\n"); | |||
} | |||
$zip->addFromString("doc.kml",$output ); | |||
$zip->addEmptyDir ( "files" ); | |||
$zip->addFile ('icone_route.png','files/icone_route.png'); | |||
$zip->addFile ('icone_route.png','files/icone_deg.png'); | |||
$zip->close(); | |||
*/ | |||
//print $output; | |||
} | |||
//Fonction de création du tableau à deux colonnes waypoints-coordonnées décimales | |||
function CreateArrayRoute ($route){ | |||
$arrlength=count($route); | |||
$newroute=array(); //Nouveau tableau à deux colonnes Nom et Coordonnées | |||
for($x=0;$x<$arrlength;$x++) | |||
{ | |||
if (strlen($route[$x])<15) //il s'agit d'un nom de point, on crée les deux lignes du tableau | |||
{ | |||
$waypoint=$route[$x]; | |||
$lat = substr($route[$x+1],0,7); | |||
$long = substr($route[$x+1],7,8); | |||
$latitude = ConvertDMSToDD ($lat); | |||
$longitude = ConvertDMSToDD($long); | |||
$coordinates=$longitude.",".$latitude; | |||
} | |||
elseif (strlen($route[$x-1])<15) //si le précédent est un point, on ne traite pas ces coordonées, elle correspondent au point précédent | |||
{ | |||
continue; | |||
} | |||
else //il s'agit de coordonnées seules, donc on crée aussi le nom du point "LATLONG" | |||
{ | |||
$lat = substr($route[$x],0,7); | |||
$long = substr($route[$x],7,8); | |||
$waypoint = substr($lat,0,3).substr($long,0,4); | |||
$latitude = ConvertDMSToDD ($lat); | |||
$longitude = ConvertDMSToDD($long); | |||
$coordinates=$longitude.",".$latitude; | |||
} | |||
$point = array('waypoint'=>$waypoint,'coordinates'=>$coordinates); //Création de la ligne du tableau | |||
$newroute[]=$point; // Insertion dans le tableau | |||
} | |||
return $newroute; | |||
} | |||
// Fonction de conversion des longitudes et latitudes | |||
function ConvertDMSToDD($input) { | |||
$hemi = substr($input,0,1); | |||
if (strlen($input)==7) | |||
{ | |||
$deg = intval(substr($input,1,2)); | |||
$min = intval(substr($input,3,2)); | |||
$decim =intval(substr($input,6,1)); | |||
} | |||
else | |||
{ | |||
$deg = intval(substr($input,1,3)); | |||
$min = intval(substr($input,4,2)); | |||
$decim =intval(substr($input,7,1)); | |||
} | |||
$result = $deg + $min/60 + $decim/600; | |||
switch ($hemi) //inversion du signe pour W et S | |||
{ | |||
case ("W") : | |||
$result = $result*-1; | |||
break; | |||
case ("S") : | |||
$result = $result*-1; | |||
break; | |||
case ("N") : | |||
break; | |||
case ("E") : | |||
break; | |||
} | |||
return ($result); | |||
} | |||
function InvertLat ($route){ //Inversion longitude,latitude et création tableau | |||
$arrlength=count($route); | |||
$newroute=array(); | |||
for($x=0;$x<$arrlength;$x++) | |||
{ | |||
$coordx=$route [$x]['coordinates']; //Récupère les coordonnées | |||
$longx=substr($coordx,0,stripos($coordx,",")); | |||
$latx=substr($coordx,stripos($coordx,",")+1); | |||
$latx=strtr($latx,",","."); | |||
$longx=strtr($longx,",","."); | |||
$point = array('latitude'=>$latx,'longitude'=>$longx); //Création de la ligne du tableau | |||
$newroute[]=$point; | |||
} | |||
return $newroute; // Insertion dans le tableau | |||
} | |||
function CreateString($route){ | |||
$arrlength=count($route); | |||
$linestring=""; | |||
for($x=0;$x<$arrlength;$x++) | |||
{ | |||
$linestring.=$route[$x]['latitude'].",".$route[$x]['longitude'].","; | |||
} | |||
return $linestring; | |||
} | |||
//========= Fin des fonctions utilisées ========= | |||
?> | |||
</body> | |||
</html> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Version du 27 mars 2015 à 15:46
Ci-dessous le code source à venir de l'appli décrite au § Atlas 380/iPad #notreavion.net :
Il tient en quelques pages html, php et css.
Page d'initialisation
<!DOCTYPE HTML>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Convertisseur FAR-KML</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script>
function myFunction() {
document.getElementById("myForm").submit();
}
</script>
</head>
<body>
<h4>Bienvenue sur la page de conversion en ligne du bloc WAYPOINTS OFP FAR</h4>
<!--Page initiale avec la case de texte dans laquelle coller le bloc WAYPOINTS INFO-->
<hr>
<form id="myForm" action="output.php" method="post">
Collez votre sélection dans le cadre ci dessous, vous pouvez la modifier avant de l'envoyer.<br>
<br><br>
<!--Creation de la case texte-->
<textarea name="name" rows="20" cols="75" placeholder="Votre sélection peut inclure des éléments avant ou aprés les waypoints."></textarea>
<br>
<!-- Input boutons radio customisés-->
<div class="radio">
<br>
<input class= "css-checkboxr" id="routewaypoint" type="radio" name="typeroute" value="routewaypoint" checked>
<label for="routewaypoint" class="css-labelr">Route + noms des waypoints</label>
<br>
<input class= "css-checkboxr" id="routeseule" type="radio" name="typeroute" value="routeseule">
<label for="routeseule" class="css-labelr">Route seulement</label>
<br><br>
</div>
</form>
<div>
<!--Bouton d'envoi des données pour calcul-->
<button type ="button" class="btn" onclick="myFunction()" value="Submit form">En route!!</button><br><br>
<!--Bouton permettant l'accès à la carte interractive sans avoir inséré de route-->
<button type ="button" class="btn" onclick="window.open('../convert/carteanim.html')">Carte interactive sans route</button>
<!--Bouton d'aide-->
<button type ="button" class="btn" style= "padding: 10px 15px 10px 15px;" onclick="location.href='help.html'">?</button>
</div>
</body>
</html>
Page de calcul et choix d'option de récupération
<!DOCTYPE HTML>
<html lang="fr">
<!--Feuille de calcul du fichier KML et d'affichage des options d'envoi-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Résultat FAR-KML</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<?php
if (!$route= $_POST["name"]) // récupère la route
{ // la route est vide!!!
//Message si route vide
echo "<p class='error'>ERREUR : Vous n'avez rien collé !!!!!!!</p>";
echo "<hr>";
echo '<br><br><button type ="button" class="btn" onclick="window.history.back();">Retour</button> ';
echo '<button type ="button" class="btn" style= "padding: 10px 15px 10px 15px;" onclick="location.href=\'help.html\'">?</button>';
exit;
}
$mytype=$_POST['typeroute'];
$route;
$fc="(\b[N|S].{6}[W|E].{7}\b)"; //format des coordonnées mot entier uniquement
$rempl = "latitudlongitud";
$routebis=preg_replace($fc,$rempl,$route); //remplace les coordonnées par texte pour analyse et recherche
$posdeb=strpos($routebis,$rempl); //position premières coordonnées
if (stripos($_SERVER['HTTP_USER_AGENT'],"iPad")){ // si appel depuis IPAD, il faut enlever un caractère supplémentaire?????
$offset =6;
}
else {
$offset=5;
}
$route=substr($route,$posdeb-$offset);
$posfin=strripos($routebis,$rempl);
//position des dernières coordonnées
$route=substr($route,0,$posfin+15-$posdeb+$offset); //suppression de ce qui est derrière les dernières coordonnées
if (strstr($route,"-"))
{
$rdeg= stristr($route,"---"); // crée le dégagement s'il existe
$rdeg=preg_replace("[-]","",$rdeg);
$pos=stripos($route,"-");
$rmain=substr($route,0,$pos);
}
else
{
$rdeg=""; // pas de dégagement
$rmain=$route;
}
$rmain= filter_var($rmain, FILTER_SANITIZE_ENCODED);
$rmain=preg_replace("[%(20|0A|0D)]"," ",$rmain);
$rmain=explode(" ",$rmain); //met tous les éléments dans un tableau
$rmain= array_values(array_filter($rmain,"testvide")); //supprime les élements vides et reindexe le tableau
if (count($rmain)<4)
{
//Message si route trop courte, pas assez de points
echo "<p class='error'>ERREUR : Il faut au moins deux point pour définir une route<br>Vérifiez votre insertion ! ! ! ! !</p>";
echo "<hr>";
echo '<br><br><button type ="button" class="btn" onclick="window.history.back();">Retour</button> ';
echo '<button type ="button" class="btn" style= "padding: 10px 15px 10px 15px;" onclick="location.href=\'help.html\'">?</button>';
exit;
}
$rdeg= filter_var($rdeg, FILTER_SANITIZE_ENCODED);
$rdeg=preg_replace("[%(20|0A|0D)]"," ",$rdeg);
$rdeg=explode(" ",$rdeg);
$rdeg= array_values(array_filter($rdeg,"testvide"));
$rmain= CreateArrayRoute ($rmain);
$rdeg= CreateArrayRoute ($rdeg);
// Création du nom du fichier
$dep=$rmain[0]['waypoint']; //Point de départ
$arr=end($rmain)['waypoint']; //Point d'arrivée
$deg=end($rdeg)['waypoint']; //Point de dégagement
$timestp = date("dMY_His");
if ($deg){
$mykml = $dep."-".$arr."_(".$deg.")_".$timestp.".kml"; //Nom du fichier KML
}
else {
$mykml = $dep."-".$arr."_".$timestp.".kml";
}
$mykml = trim($mykml); //Suppression des caractères bizarres
generatekml ($rmain,$rdeg,$mykml,$mytype); //Création du point KML
// Création de l'image
$rmain=InvertLat ($rmain);
$rdeg=InvertLat ($rdeg);
$deppoint=$rmain[0]['latitude'].",".$rmain[0]['longitude']; //Point de départ
$arrmain=end($rmain)['latitude'].",".end($rmain)['longitude']; //Arrivée
$arrdeg=end($rdeg)['latitude'].",".end($rdeg)['longitude']; //Dégagement
$mainstring= CreateString($rmain); //Création string route principale et dégagement
$degstring= CreateString($rdeg);
$upperleftlat=max(array_column($rmain,'latitude')); //point gauche et point droit de la carte statique
$upperleftlong=min(array_column($rmain,'longitude'));
$upperleft=$upperleftlat.",".$upperleftlong;
$lowerrightlat= min(array_column($rmain,'latitude'));
$lowerrightlong=max(array_column($rmain,'longitude'));
$lowerright=$lowerrightlat.",".$lowerrightlong;
//Map MapQuest
//A noter que le paramètre key est propriétaire du site et doit être demandé à MapQuest pour utilisation sur un autre site
// Création de l'image MapQuest
$mapurl= "http://open.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd%7Cluurnu0125%2Cbs%3Do5-9w8lgw&size=1000,1000&margin=10&imagetype=png&pois=red_1,".$deppoint."|purple_1,".$arrdeg."|red_1,".$arrmain."&polyline=color:0xFF0000|width:3|".$mainstring."&polyline=color:0xCCCC00|width:3|".$degstring."";
// Création de l'image MapQuest en plein écran
$imgurl="http://open.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd%7Cluurnu0125%2Cbs%3Do5-9w8lgw&size=300,200&margin=15&scalebar=false&imagetype=png&pois=red_1,".$deppoint."|purple_1,".$arrdeg."|red_1,".$arrmain."&polyline=color:0xFF0000|width:2|".$mainstring."&polyline=color:0xCCCC00|width:2|".$degstring."";
//Affichage du résultat
echo "<p>Votre fichier ".$mykml." est disponible</p>";
echo "<a href=$mapurl target='_blank'><img src='$imgurl'></a>";
echo "<hr>";
echo "<br>";
$filename="carteanim.html?file=../convert/KML_outputs/".$mykml;
echo '<button type ="button" class="btn" onclick="window.open(\''.$mapurl.'\')"> Carte statique </button>';
echo "<br>";
echo "<br>";
echo '<button type ="button" class="btn" onclick="window.open(\''.$filename.'\')">Carte interactive</button>';
echo "<br>";
echo "<br>";
echo '<button type ="button" class="btn" onclick="location.href=\'../convert/KML_outputs/'.$mykml.'\'">Téléchargement</button>'; //Faire test avec fichiers dans dossier.
echo "<br>";
echo "<br>";
echo "<form action='envoi_mail.php' method='post'>
<input type='text' name ='email' placeholder='Votre adresse mail' class= 'style_input'>
<br> <br><input type ='submit' value='Envoyer le mail'>
<input type='hidden' name='fichier' value='../convert/KML_outputs/".$mykml."'> </form>";
echo '<br><br><button type ="button" class="btn" onclick="window.history.back();">Retour</button> ';
echo '<button type ="button" class="btn" style= "padding: 10px 15px 10px 15px;" align="right" onclick="location.href=\'help.html\'">?</button>';
echo "<br>";
//========= Les fonctions utilisées =========
//Fonction de test, pour voir si un élément d'un tableau est vide
function testvide($var)
{
strlen($var)==0;
return($var);
}
//Fonction de création du fichier .KML
function generatekml($inputm,$inputd,$filename,$type){
// $inputm est la route principale, $inputd est la route dégagement,$type est le type de route
$output="<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2' xmlns:gx='http://www.google.com/kml/ext/2.2' xmlns:kml='http://www.opengis.net/kml/2.2' xmlns:atom='http://www.w3.org/2005/Atom'>
<Document>
<name>";
$output.=substr($filename,0,9)."</name>
<Style id='no_icone'>
<IconStyle>
<Icon>
<href>http://www.notreavion.net/convert/images/no_icon.png</href>
</Icon>
<hotSpot x='0.5' y='0.0' xunits='fraction' yunits='fraction' />
</IconStyle>
</Style>
<Style id='placemark-purple'>
<IconStyle>
<Icon>
<href>http://maps.me/placemarks/placemark-purple.png</href>
</Icon>
<hotSpot x='0.5' y='0.0' xunits='fraction' yunits='fraction' />
</IconStyle>
</Style>
<Style id='placemark-pink'>
<IconStyle>
<Icon>
<href>http://maps.me/placemarks/placemark-pink.png</href >
</Icon>
<hotSpot x='0.5' y='0.0' xunits='fraction' yunits='fraction' />
</IconStyle>
</Style>
<Style id='rmain'>
<LineStyle>
<color>FFDA25A8</color>
<width>3</width>
</LineStyle>
<PolyStyle>
<color>FFDA25A8</color>
</PolyStyle>
</Style>
<Style id='rdeg'>
<LineStyle>
<color>FFFF00FF</color>
<width>3</width>
</LineStyle>
<PolyStyle>
<color>FFFF00FF</color>
</PolyStyle>
</Style>
<Folder>
<name>Lignes</name>
<open>1</open>
<Placemark>
<name>Rmain</name>
<styleUrl>#rmain</styleUrl>";
$output.="
<LineString>
<tessellate>1</tessellate>
<coordinates>";
foreach($inputm as $point){
$coordinates=$point['coordinates'];
$output.="$coordinates ";}
$output.="</coordinates>
</LineString>
</Placemark>";
$output.="<Placemark>
<name>Rdeg</name>
<styleUrl>#rdeg</styleUrl>";
$output.="
<LineString>
<tessellate>1</tessellate>
<coordinates>";
foreach($inputd as $point){
$coordinates=$point['coordinates'];
$output.="$coordinates ";}
$output.="</coordinates>
</LineString>
</Placemark>
</Folder><Folder>";
if($type=="routewaypoint"){
foreach($inputm as $point){
$name=$point['waypoint'];
$coordinates=$point['coordinates'];
$output.="
<Placemark>";
$output.="<name>$name</name>";
$output.="
<styleUrl>#placemark-purple</styleUrl>
";
$output.="<description>$name</description>
<Point>
<coordinates>$coordinates</coordinates>
</Point>
</Placemark>
";
}
foreach($inputd as $point){
$name=$point['waypoint'];
$coordinates=$point['coordinates'];
$output.="<Placemark>";
$output.="<name>$name</name>";
$output.="
<styleUrl>#placemark-pink</styleUrl>
";
$output.="<description>$name</description>
<Point>
<coordinates>$coordinates</coordinates>
</Point>
</Placemark>
";
}
}
$output.="</Folder></Document>
</kml>
";
//Ecriture du fichier KML dans le dossier KML_outputs sur le serveur
$myfile = fopen("../convert/KML_outputs/".$filename,"w") or die("Unable to open file!");
fwrite($myfile, $output);
fclose($myfile);
/*
//Création du fichier kmz - non utilisé
$mykmz = substr($filename,0,strlen($filename)-3)."kmz";
$zip = new ZipArchive();
if ($zip->open($mykmz, ZIPARCHIVE::CREATE)!==TRUE) {
exit("cannot open <$file>\n");
}
$zip->addFromString("doc.kml",$output );
$zip->addEmptyDir ( "files" );
$zip->addFile ('icone_route.png','files/icone_route.png');
$zip->addFile ('icone_route.png','files/icone_deg.png');
$zip->close();
*/
//print $output;
}
//Fonction de création du tableau à deux colonnes waypoints-coordonnées décimales
function CreateArrayRoute ($route){
$arrlength=count($route);
$newroute=array(); //Nouveau tableau à deux colonnes Nom et Coordonnées
for($x=0;$x<$arrlength;$x++)
{
if (strlen($route[$x])<15) //il s'agit d'un nom de point, on crée les deux lignes du tableau
{
$waypoint=$route[$x];
$lat = substr($route[$x+1],0,7);
$long = substr($route[$x+1],7,8);
$latitude = ConvertDMSToDD ($lat);
$longitude = ConvertDMSToDD($long);
$coordinates=$longitude.",".$latitude;
}
elseif (strlen($route[$x-1])<15) //si le précédent est un point, on ne traite pas ces coordonées, elle correspondent au point précédent
{
continue;
}
else //il s'agit de coordonnées seules, donc on crée aussi le nom du point "LATLONG"
{
$lat = substr($route[$x],0,7);
$long = substr($route[$x],7,8);
$waypoint = substr($lat,0,3).substr($long,0,4);
$latitude = ConvertDMSToDD ($lat);
$longitude = ConvertDMSToDD($long);
$coordinates=$longitude.",".$latitude;
}
$point = array('waypoint'=>$waypoint,'coordinates'=>$coordinates); //Création de la ligne du tableau
$newroute[]=$point; // Insertion dans le tableau
}
return $newroute;
}
// Fonction de conversion des longitudes et latitudes
function ConvertDMSToDD($input) {
$hemi = substr($input,0,1);
if (strlen($input)==7)
{
$deg = intval(substr($input,1,2));
$min = intval(substr($input,3,2));
$decim =intval(substr($input,6,1));
}
else
{
$deg = intval(substr($input,1,3));
$min = intval(substr($input,4,2));
$decim =intval(substr($input,7,1));
}
$result = $deg + $min/60 + $decim/600;
switch ($hemi) //inversion du signe pour W et S
{
case ("W") :
$result = $result*-1;
break;
case ("S") :
$result = $result*-1;
break;
case ("N") :
break;
case ("E") :
break;
}
return ($result);
}
function InvertLat ($route){ //Inversion longitude,latitude et création tableau
$arrlength=count($route);
$newroute=array();
for($x=0;$x<$arrlength;$x++)
{
$coordx=$route [$x]['coordinates']; //Récupère les coordonnées
$longx=substr($coordx,0,stripos($coordx,","));
$latx=substr($coordx,stripos($coordx,",")+1);
$latx=strtr($latx,",",".");
$longx=strtr($longx,",",".");
$point = array('latitude'=>$latx,'longitude'=>$longx); //Création de la ligne du tableau
$newroute[]=$point;
}
return $newroute; // Insertion dans le tableau
}
function CreateString($route){
$arrlength=count($route);
$linestring="";
for($x=0;$x<$arrlength;$x++)
{
$linestring.=$route[$x]['latitude'].",".$route[$x]['longitude'].",";
}
return $linestring;
}
//========= Fin des fonctions utilisées =========
?>
</body>
</html>