2017-07-17 64 views
0

我試圖在UIImagePickerController採集的圖像的元數據中獲取或捕獲用戶位置,其源類型設置爲UIImagePickerControllerSourceTypeCamera當源類型爲UIImagePickerController中的相機時獲取圖像元數據中的位置(地理標記類型)

當源類型是攝像頭(通過攝像頭點擊圖片)時,我們可以從info參數didFinishPickingMediaWithInfo獲取元數據,但它不包含位置信息。

如果源類型爲photolibrary (UIImagePickerControllerSourceTypePhotoLibrary)那麼我們可以得到位置metadata與下面的代碼,

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{ 


    NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL]; 
    PHFetchResult *fetchResult = [PHAsset fetchAssetsWithALAssetURLs:@[url] options:nil]; 
    PHAsset *asset = fetchResult.firstObject; 

    NSLog(@"%f,%f",asset.location.coordinate.latitude,asset.location.coordinate.longitude); 


[picker dismissViewControllerAnimated:YES completion:nil]; 

} 

我們也可以用CLLocationManager管理位置第二件事,我的意思是,我們可以在didFinishPickingMediaWithInfo拍攝位置。但是我只是想知道,當圖像被相機拍攝或來源類型是相機時,是否可以在didFinishPickingMediaWithInfo中選擇元數據的位置?

任何幫助將不勝感激。謝謝!

+0

元數據位於UIImagePickerControllerMediaMetadata中。但它不包含位置信息;這取決於你。 – matt

+0

@matt:是的!元數據在'UIImagePickerControllerMediaMetadata'中可用,並且不包含位置信息。感謝您的建議。 :) – Lion

+1

對,就這樣想吧。您已被授權使用相機,因此自動獲取相機元數據(焦距,什麼類型的iPhone等)。但授權獲取用戶的位置是一個完全不同的球賽。這不是拍照的一部分;這是一個照片應用程序_might_可以做的事情。相機應用程序可以做到這一點,當且僅當用戶授權它。現在_you_是應用程序,所以如果您需要位置信息,_you_需要授權,您需要收集並插入該信息。 – matt

回答

0

我來的結論,如果我們採取使用Camera那麼我們就不能得到在元數據中的位置,所以如果我們想要得到的位置照片時,圖像從相機的拍攝,我們有在同一時間使用默認的位置服務(CLLocationManager)捕獲 - 我的意思是在didFinishPickingMediaWithInfo方法。

相關問題