Depuis quelques temps, si vous avez bien observé la barre de droite sur mon blog, j’ai ajouté ma position GPS. Bon vous en conviendrez que c’est pas forcément d’une utilité flagrante, mais c’est toujours plus sympa que de mettre sa Fan Page Facebook.
Impossible à réaliser chez soi ? Que nenni ! Grâce aux dernières technologies Web 2.0, vous allez pouvoir faire vous aussi la même chose !
Maryse, pour cela nous avons besoin des ustensiles suivants :
- Un compte InstaMapper : inscription gratuite ici
- Un téléphone compatible InstaMapper : liste ici
- Une clé API Google Maps : inscription gratuite ici
- De quoi pouvoir exécuter du PHP à intervalle régulier
Je suppose que vous avez fait les prérequis et que vous disposez de toutes les clés API nécessaires. On commence hardcore, avec le script que j’intitulerai gps.php qui va récupérer votre position et l’inscrire dans un fichier quand celle-ci diffère de la précédente.
#!/usr/bin/php
<?php
/* Mettez votre clé API et changez si vous le souhaitez
le fichier qui contiendra votre dernière position GPS */
$api_key = "";
$api_file = dirname(__FILE__)."/position";
$data = file_get_contents("http://www.instamapper.com/api?action=getPositions&key=".$api_key);
$lines = explode("\n",$data);
$infos = explode(",",$lines[1]);
if (file_exists($api_file)) {
$data = file_get_contents($api_file);
$curr_loc = explode("\n",$data);
} else {
$curr_loc = array(1 => 0);
}
if ($infos[2] > $curr_loc[1]) {
file_put_contents($api_file,$infos[3].",".$infos[4]."\n".$infos[2]);
}
?>
Rendez ensuite le fichier exécutable :
$ chmod +x gps.php
Maintenant que le script est en place, il faut lui donner une première position en installant le logiciel InstaMapper sur votre téléphone. En fonction du modèle, l’installation varie, donc je ne m’éterniserai pas là-dessus. Toutefois vous devriez avoir un écran de ce type une fois que les données sont envoyées au serveur :
Retour au script gps.php. Vérifiez qu’il tourne bien en l’exécutant à la main une fois, puis faites le tourner à intervalle régulier, en crontab par exemple, toutes les heures.
Il suffit à présent d’afficher l’image via une URL Google Maps générée à partir de quelques paramètres. J’ai fait un script pour l’exemple mais ça s’adaptera assez facilement à n’importe quel site :
<?php
/* Mettez votre clé API Google Maps ci-dessous.
Indiquez le fichier où vous avez mis votre position GPS
ainsi que la taille de l'image GMaps que vous souhaitez
obtenir. (LongueurxHauteur) */
$api_key = "";
$api_file = dirname(__FILE__)."/position";
$img_size = "229x170";
$data = file_get_contents($api_file);
$curr_pos = explode("\n",$data);
echo '<img src="http://maps.google.com/staticmap?center='.$curr_pos[0].'&markers='.$curr_pos[0].',smallred&zoom=13&path=rgba:0x0000ff54,weight:5|&size='.$img_size.'&key='.$api_key.'" />';
?>
Si tout se passe bien, vous devriez avoir une image comme celle qui apparaît en permanence à droite de mon blog, avec votre dernière position GPS. Evidemment il ne faut pas oublier de lancer l’application InstaMapper de temps en temps, elle ne tourne pas en tâche de fond (ce qui serait inutile, à moins de voyager très très souvent :-)).




Matoo — le 8 janvier 2010 à 11:27
Ouai Google Latitude c’est bien aussi. :)