簡體   English   中英

如何在 Swift 中編寫一個采用坐標(經緯度)並使用 lookaround.snapshotter 從所需位置拍攝快照的 function?

[英]how to write a function that takes coordinate(lat - long) and take snapshot from desired location with lookaround.snapshotter in Swift?

我剛開始在 Swift 編程,我是一個完全的初學者。 我想寫一個 function 或 class,通過接收坐標,如果 MKLookAround.request 中有照片,使用 MKLookAround.Snapshotter 保存所需位置的照片,但我不知道如何使用 mapkit 就緒類. 我不想用swiftUI,我只是想保存一些來自不同地方坐標的圖片。 在此處輸入圖像描述

您可以創建MKLookAroundSceneRequest ,獲取其scene ,然后將其提供給MKLookAroundSnapshotter

func snapshotImage(for coordinate: CLLocationCoordinate2D) async throws -> UIImage {
    guard let scene = try await MKLookAroundSceneRequest(coordinate: coordinate).scene else {
        throw LookaroundError.unableToCreateScene
    }
    let options = MKLookAroundSnapshotter.Options()
    options.size = CGSize(width: 1000, height: 500)
    return try await MKLookAroundSnapshotter(scene: scene, options: options).snapshot.image
}

在此處輸入圖像描述

使用此Error object:

enum LookaroundError: Error {
    case unableToCreateScene
}

有關詳細信息,請參閱 WWDC 2022 What's new in MapKit或查看MKLookAroundSnapshotter在其示例項目中的使用。


如果您想將其寫入文件,請獲取 PNG ( pngData ) 或 JPG ( jpgData ) 表示並將其write文件:

let image = try await snapshotImage(for: coordinate)
let url = try FileManager.default
    .url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
    .appending(component: "test.png")
try image.pngData()?.write(to: url)

或者,您可能希望向用戶展示一個 UI,用戶可以通過UIActivityViewController指定他們想要對圖像執行的操作:

let share = UIActivityViewController(activityItems: [image], applicationActivities: nil)
self.present(share, animated: true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM