[PHP] Extraire les coordonnées GPS d'un iPhone ou Android et les convertir pour Google Maps #
iPhone :
<?php
class MetaReader
{
private $metaData = array();
public function __construct($imageName)
{
$this->metaData = exif_read_data($imageName, 'ANY_TAG', 0);
}
public function getLatitude()
{
if(!isset($this->metaData['GPSLatitude'])) {
return false;
} else {
return $this->convertToDecimalDegress($this->metaData['GPSLatitude']);
}
}
public function getLongitude()
{
if(!isset($this->metaData['GPSLatitude'])) {
return false;
} else {
return $this->convertToDecimalDegress($this->metaData['GPSLongitude']);
}
}
public function convertToDecimalDegress($values)
{
return $this->divide($values[0]) + ($this->divide($values[1]) / 60) ;
}
public function divide($value)
{
$values = explode("/", $value);
return $values[0] / $values[1];
}
}
$metaObj = new MetaReader('image.jpg');
$latitude = $metaObj->getLatitude();
$longitude = $metaObj->getLongitude();
echo 'http://maps.google.fr/maps?q=' . $latitude . "," . $longitude .'&ll=' . $latitude . "," . $longitude .'&t=k&z=18';
?>(Degrés sexagésimaux en degrés décimaux)
Nexus One (Android) :
<?
function readGPSinfoEXIF($image)
{
$exif=exif_read_data($image, 0, true);
if(!$exif || $exif['GPS']['GPSLatitude'] == '') {
return false;
} else {
$lat_ref = $exif['GPS']['GPSLatitudeRef'];
$lat = $exif['GPS']['GPSLatitude'];
list($num, $dec) = explode('/', $lat[0]);
$lat_s = $num / $dec;
list($num, $dec) = explode('/', $lat[1]);
$lat_m = $num / $dec;
list($num, $dec) = explode('/', $lat[2]);
$lat_v = $num / $dec;
$lon_ref = $exif['GPS']['GPSLongitudeRef'];
$lon = $exif['GPS']['GPSLongitude'];
list($num, $dec) = explode('/', $lon[0]);
$lon_s = $num / $dec;
list($num, $dec) = explode('/', $lon[1]);
$lon_m = $num / $dec;
list($num, $dec) = explode('/', $lon[2]);
$lon_v = $num / $dec;
$gps_int = array($lat_s + $lat_m / 60.0 + $lat_v / 3600.0, $lon_s
+ $lon_m / 60.0 + $lon_v / 3600.0);
return $gps_int;
}
}
$image = 'image.jpg';
$results = readGPSinfoEXIF($image);
$latitude = $results[0];
$longitude = $results[1];
echo 'http://maps.google.fr/maps?q=' . $latitude . "," . $longitude .'&ll=' . $latitude . "," . $longitude .'&t=k&z=18';
?>
vendredi 19 février 2010 à 14:34
Ca marche aussi avec une image provenant du Nexus One (donc certainement tous les androphones)
Bonjour
J'ai un message d'erreur, je comprends pas
" Warning: exif_read_data() [function.exif-read-data]: Unable to open file in /homez.xx/xxxxx/www/GPS.php on line 8"
il sempble qu'il ne trouve pas les données du GPS
http://maps.google.fr/maps?q=,&ll=,&t=k&z=18 "
macbidule
Il n'y a pas d'image.
© 2011 @twitter mobile rss

