从照片中提取 GPS 数据 iOS swift
extract GPS data from photo iOS swift
我需要从 UIImagePickerController 选取的照片中获取 GPS 数据并提取要在 UIMapKit 中使用的照片的位置,我在 Whosebug 和 Google 中尝试了一些示例代码,但是 none他们为我工作!我使用的照片包含纬度和经度数据,但它总是 return nil 并出现此致命错误:"unexpectedly found nil while unwrapping an Optional value",我在模拟器上测试该应用程序是否会导致任何问题?我考虑了各种问题,我是不是哪里做错了?这是代码
func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info: NSDictionary!) {
if picker.sourceType == UIImagePickerControllerSourceType.PhotoLibrary {
let url: AnyObject? = info[UIImagePickerControllerReferenceURL] as? NSURL
let library = ALAssetsLibrary()
library.assetForURL(url as NSURL, resultBlock: { (asset: ALAsset!) -> Void in
if asset != nil {
var assetRep: ALAssetRepresentation = asset.defaultRepresentation()
var metaData: NSDictionary = assetRep.metadata()
let location = metaData.objectForKey(ALAssetPropertyLocation) as CLLocation!
let lat = location.coordinate.latitude
let long = location.coordinate.longitude
}
}, failureBlock: {
(error: NSError!) in
NSLog("Error!")
}
)} dismissViewControllerAnimated(true, completion: nil)}
我找到了解决方案,代码是正确的!但是当我通过拖放将照片复制到模拟器时,出于某种原因从照片中删除了 GPS 数据,我将照片存储到 Dropbox 并通过模拟器的 safari 下载它们!
参考
这种方式更简洁。
import Photos
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
guard let asset = info[.phAsset] as? PHAsset else { return }
// Do whatever
asset.location?.coordinate.latitude
asset.location?.coordinate.longitude
}
我需要从 UIImagePickerController 选取的照片中获取 GPS 数据并提取要在 UIMapKit 中使用的照片的位置,我在 Whosebug 和 Google 中尝试了一些示例代码,但是 none他们为我工作!我使用的照片包含纬度和经度数据,但它总是 return nil 并出现此致命错误:"unexpectedly found nil while unwrapping an Optional value",我在模拟器上测试该应用程序是否会导致任何问题?我考虑了各种问题,我是不是哪里做错了?这是代码
func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info: NSDictionary!) {
if picker.sourceType == UIImagePickerControllerSourceType.PhotoLibrary {
let url: AnyObject? = info[UIImagePickerControllerReferenceURL] as? NSURL
let library = ALAssetsLibrary()
library.assetForURL(url as NSURL, resultBlock: { (asset: ALAsset!) -> Void in
if asset != nil {
var assetRep: ALAssetRepresentation = asset.defaultRepresentation()
var metaData: NSDictionary = assetRep.metadata()
let location = metaData.objectForKey(ALAssetPropertyLocation) as CLLocation!
let lat = location.coordinate.latitude
let long = location.coordinate.longitude
}
}, failureBlock: {
(error: NSError!) in
NSLog("Error!")
}
)} dismissViewControllerAnimated(true, completion: nil)}
我找到了解决方案,代码是正确的!但是当我通过拖放将照片复制到模拟器时,出于某种原因从照片中删除了 GPS 数据,我将照片存储到 Dropbox 并通过模拟器的 safari 下载它们!
参考
这种方式更简洁。
import Photos
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
guard let asset = info[.phAsset] as? PHAsset else { return }
// Do whatever
asset.location?.coordinate.latitude
asset.location?.coordinate.longitude
}