Zuneo.fr

[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';
 
?>

Libellés : ,

vendredi 19 février 2010 à 14:34


Ca marche aussi avec une image provenant du Nexus One (donc certainement tous les androphones)

-Anonymous Anonyme 22 février, 2010 16:50


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

-Anonymous Anonyme 13 mars, 2010 19:03


Il n'y a pas d'image.

-Blogger ¥€$ 25 mai, 2010 00:59


© 2011   @twitter   mobile   rss