iPhone 获取 UIImagePickerController LatLng

objectiveiphone

1个回答

写回答

Fairyfairy

2025-06-20 15:05

+ 关注

iphone
iphone

使用iphone获取UIImagePickerController Lat/Lng

IOS开发中,我们经常需要使用UIImagePickerController来访问iphone的相机或相册。而有时候,我们还需要获取用户拍摄照片的位置信息,也就是经纬度(Lat/Lng)。本文将介绍如何在使用UIImagePickerController时获取照片的经纬度,并给出相应的案例代码。

获取经纬度的步骤

要获取UIImagePickerController拍摄照片的经纬度,我们需要遵循以下步骤:

1. 创建UIImagePickerController实例,并设置代理。

2. 实现UIImagePickerControllerDelegate协议中的方法imagePickerController:didFinishPickingMediaWithInfo:。

3. 在该方法中,通过info参数获取照片的元数据。

4. 从元数据中提取经纬度信息。

5. 处理获取到的经纬度信息。

案例代码

下面是一个简单的案例代码,演示了如何获取UIImagePickerController拍摄照片的经纬度:

Swift

import UIKit

import CoreLocation

import ImageIO

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

override func viewDidLoad() {

super.viewDidLoad()

}

@IBAction func pickPhoto(_ sender: UIButton) {

let imagePicker = UIImagePickerController()

imagePicker.sourceType = .camera

imagePicker.delegate = self

present(imagePicker, animated: true, completion: nil)

}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage,

let url = info[UIImagePickerController.InfoKey.imageURL] as? URL,

let imageSource = CGImageSourceCreateWithURL(url as CFURL, nil),

let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil) as? [String: Any],

let gpsInfo = imageProperties[kCGImagePropertyGPSDictionary as String] as? [String: Any],

let latitude = gpsInfo[kCGImagePropertyGPSLatitude as String] as? CLLocationDegrees,

let longitude = gpsInfo[kCGImagePropertyGPSLongitude as String] as? CLLocationDegrees {

let location = CLLocation(latitude: latitude, longitude: longitude)

print("经度: \(location.coordinate.longitude)")

print("纬度: \(location.coordinate.latitude)")

}

picker.dismiss(animated: true, completion: nil)

}

}

案例代码解析

上述代码中,我们在pickPhoto方法中创建了一个UIImagePickerController实例,并设置其sourceType为.camera,即使用相机来拍摄照片。然后,我们将self设置为UIImagePickerController的代理。

在imagePickerController:didFinishPickingMediaWithInfo:方法中,我们首先判断获取到的照片是否为UIImage类型,并从info参数中获取照片的URL。然后,我们使用CGImageSourceCreateWithURL方法和CGImageSourceCopyPropertiesAtIndex方法获取照片的元数据,并从元数据中提取经纬度信息。

最后,我们将获取到的经纬度信息封装成CLLocation对象,并输出经度和纬度。

通过以上步骤和案例代码,我们可以在使用UIImagePickerController时获取拍摄照片的经纬度信息。这对于需要获取照片位置信息的应用程序来说非常有用,比如地图应用、旅游应用等。希望本文对你有所帮助!

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号