Получение координат из фотографии


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. Все :)