Получение координат из фотографии
class Coordinates
{
/**
* Extract coordinates from an image
* ```php
* Coordinates::extract('/path/to/image.jpg');
* ```
* @param $image
* @return array|null
*/
public static function extract($image)
{
if (file_exists($image) == false || is_file($image) == false) {
return null;
}
$mime = mime_content_type($image);
if ($mime != 'image/jpeg') {
return null;
}
$exif = exif_read_data($image);
if (empty($exif) || empty($exif['GPSLatitude']) || empty($exif['GPSLongitude'])) {
return null;
}
return [
static::parseCoordinate($exif['GPSLatitude']),
static::parseCoordinate($exif['GPSLongitude'])
];
}
private static function parseCoordinate(array $coordinate)
{
foreach ($coordinate as $key => $item) {
$item = explode('/', $item);
$coordinate[$key] = $item[0] / (isset($item[1]) ? $item[1] : 1);
}
return round($coordinate[0] + ($coordinate[1] / 60) + ($coordinate[2] / 3600), 7);
}
}
Вызов функции
$coordinates = Coordinates::extract(__DIR__ . '/image.jpg');
На выходе будет массив с широтой и долготой. Если данных нет, функция вернет null. Все :)