PHAsset Location — GPS MetaData, what's wrong?

trying to add location from a UIImage using Phasset:

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

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

this code works, apparently -> save a new asset into the photo library with the good coordinate. I can see it in the library itself.

  • Force MPMoviePlayerController to play in landscape
  • Schedule Interactive UILocalNotification - Obj-C
  • How to auto play music as soon as my app starts?
  • Refresh certain row of UITableView based on Int in Swift
  • Swift 3 - device tokens are now being parsed as '32BYTES'
  • Push view from push notification
  • but when I use exif tools and similar, most of the time, GPS dictionnary is empty as if location was not set.
    (also, I noticed GPS info is not in exif format)
    so I guess, location information is also somewhere else…

    so what’s wrong with location property of PHAsset ?
    how can set properly location ?

    Solutions Collect From Internet About “PHAsset Location — GPS MetaData, what's wrong?”

    Photos tracks location metadata it its own database, separately from the EXIF metadata stored in each photo file. When you (as a client of the Photos API) or the user creates/adds a new asset, Photos reads the EXIF location data from the file and sets the location in its database to match. Beyond that, however, the Photos API makes no effort to keep these in sync.

    If you want to update the EXIF metadata in the file, you’ll need to do that yourself. (Image I/O can help with that — see this answer.) Then, add the whole file, not just a UIImage created from it, to Photos using creationRequestForAssetFromImageAtFileURL: or the new PHAssetCreationRequest stuff in iOS 9.