Расположение PHAsset - метаданные GPS, что не так?

Пытаемся добавить местоположение из UIImage с помощью Phasset:

// image is a variable like so: image: UIImage

var newAsset = PHAssetChangeRequest.creationRequestForAssetFromImage(image)
newAsset.location = CLLocation(latitude: coordinate.latitude, coordinate.longitude)

этот код работает, по-видимому, -> сохранить новый актив в библиотеку фотографий с хорошей координатой. Я вижу это в самой библиотеке.

но когда я использую инструменты exif и аналогичные, большую часть времени словарь GPS пуст, как если бы местоположение не было задано. (также я заметил, что информация GPS не в формате exif), поэтому, я думаю, информация о местоположении также где-то еще...

так что не так со свойством местоположения PHAsset? Как правильно установить местоположение?

1 ответ

Решение

Фотографии отслеживают метаданные местоположения в своей собственной базе данных, отдельно от метаданных EXIF, хранящихся в каждом файле фотографии. Когда вы (как клиент API Photos) или пользователь создаете / добавляете новый актив, Photoshop считывает данные местоположения EXIF ​​из файла и устанавливает местоположение в своей базе данных для соответствия. Помимо этого, однако, API Фотографии не предпринимает усилий, чтобы синхронизировать их.

Если вы хотите обновить метаданные EXIF в файле, вам нужно сделать это самостоятельно. (Image I/O может помочь с этим - см. Этот ответ.) Затем добавьте весь файл, а не только UIImage создан из него, чтобы фотографии с помощью creationRequestForAssetFromImageAtFileURL: или новый PHAssetCreationRequest вещи в iOS 9.

Другие вопросы по тегам