2017-02-24 7 views
4

위치 정보 메타 데이터가있는 사진 라이브러리에 사진을 저장하려면 어떻게해야합니까?위치 정보가있는 사진을 사진 라이브러리에 저장 Swift 3

private func allowAccessToUserLocation() { 

     locationManager = CLLocationManager() 
     locationManager.delegate = self 
     locationManager.requestWhenInUseAuthorization() 
    } 

내가 카메라 응용 프로그램에 대한 특정 premissions을 요청해야합니까 :

나는 사용자 위치에 액세스 할 수있는 응용 프로그램을 요청 (및 수) 있나요?

편집 : 응용 프로그램 내에서 사진을 찍는 것을 UIImagePickerController를를 사용

. 앱 내에서 촬영 한 모든 사진은 위치 정보없이 사진 라이브러리에 저장됩니다.

이미지를 사진 라이브러리에 저장하는 것과 관련이 있습니까? 핵심 위치 권한보다는 내 문제가 있습니까 ??

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
     if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage{ 
      UIImageWriteToSavedPhotosAlbum(pickedImage, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil) 

      dismiss(animated: true, completion: { 

       self.showPhoto()}) 
     } 
    } 
+0

? 질문을 수정하고 더 명확하게 수정하십시오. – hasan83

+0

위치 정보 데이터를 읽는 위치에 코드를 추가 할 수 있습니까? – hasan83

+0

GeoCodeLocation을 역전하기 전에 위치를 인쇄 했습니까? 가치는 무엇입니까? – hasan83

답변

1

그럼 난 당신이 내가 전화하고있는 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {....}

그렇게 어딘가에 func addAsset(image: UIImage, location: CLLocation? = nil) {...}

를 호출하기 전에 먼저 사용자의 위치에 액세스해야 할 것 같아요 :

내가 위치를 업데이트 중지 :

locationManager.stopUpdatingLocation() 

이것은 나를 위해 작동

내가 사진 라이브러리의 위치와 사진 사이의 관계가 무엇인지 이해하지
3

iOS 8에서 Apple은 Photo Library을 소개했습니다. 여기

작성하고 위치 PHAsset를 업데이트 할 예입니다 : 당신이 저장하기 전에 사진에 액세스 할 수있는 권한이 있는지 확인

func addAsset(image: UIImage, location: CLLocation? = nil) { 
    PHPhotoLibrary.shared().performChanges({ 
     // Request creating an asset from the image. 
     let creationRequest = PHAssetChangeRequest.creationRequestForAsset(from: image) 
     // Set metadata location 
     if let location = location { 
      creationRequest.location = location 
     } 
    }, completionHandler: { success, error in 
     if !success { NSLog("error creating asset: \(error)") } 
    }) 
} 

PHPhotoLibrary.requestAuthorization(_:) 
메타 데이터를 읽을 수 있습니다

:

info[UIImagePickerControllerMediaMetadata] 

메타 데이터 저장소 위치를 확인할 수 없습니다. 내 테스트는 위치 서비스도 허용되지 않았습니다. 이 경우 use는 CoreLocation을 사용하여 직접 실제 위치를 얻을 수 있습니다.

let locationManager = CLLocationManager() 

     if CLLocationManager.locationServicesEnabled() { 
      locationManager.delegate = self 
      locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters 
      locationManager.startUpdatingLocation() 

     } 
     else{ 
      //Location service disabled" 
     } 
     //and then call.... 

     addAsset(image: pickedImage, location: locationManager.location) 

i가 마무리되면 :

+0

이 라인에 오류가 있습니다 ... asset.location = location '(PHObjectPlaceholder 타입의 값에 멤버 위치가 없습니다)' –

+0

죄송합니다, 편집을 확인하십시오. 앨범 컬렉션을 제거하여 답을 간단하게했습니다. – XeNoN