Думаю многие из нас сейчас пользуются фотоаппаратами на наших мобильных устройствах. Однако не многие знают, что почти все устройства, имеющие GPS приемник, при создании фотографий записывают в них координаты места фотографирования, дату и время съемки и другую информацию. Эту информацию удобно использовать в своих проектах и я покажу как это можно сделать на языке программирования PHP…
Для того чтобы получить данные GPS, сохраненные в файле JPG или JPEG в PHP нам поможет функция exif_read_data. Эта функция выполняет все необходимые действия и возвращает ассоциативный массив с данными от устройства GPS. Однако если мы хотим получить координаты широты или долготы в привычном нам гугловском представлении, нам придется провести некоторые вычисления:
function _Gps2Num($coordPart) { $parts = explode('/', $coordPart); if (count($parts) <= 0) { return 0; } if (count($parts) == 1) { return $parts[0]; } return floatval($parts[0]) / floatval($parts[1]); } function _GetGps($exifCoord, $hemi) { $degrees = count($exifCoord) > 0 ? _Gps2Num($exifCoord[0]) : 0; $minutes = count($exifCoord) > 1 ? _Gps2Num($exifCoord[1]) : 0; $seconds = count($exifCoord) > 2 ? _Gps2Num($exifCoord[2]) : 0; $flip = ($hemi == 'W' or $hemi == 'S') ? -1 : 1; return $flip * ($degrees + $minutes / 60 + $seconds / 3600); } function GetExifGpsInfo($file) { //Получаем дату и время съемки, координаты в системе понятной Google $exif = exif_read_data($file); $result = array('DateTime' => $exif['DateTimeOriginal'], 'Lat' => _GetGps($exif["GPSLatitude"], $exif['GPSLatitudeRef']), 'Lng' => _GetGps($exif["GPSLongitude"], $exif['GPSLongitudeRef'])); return $result; }