首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swift中使用lookaround.snapshotter编写一个获得坐标(lat- long)并从所需位置获取快照的函数?

如何在Swift中使用lookaround.snapshotter编写一个获得坐标(lat- long)并从所需位置获取快照的函数?
EN

Stack Overflow用户
提问于 2022-10-04 14:57:28
回答 1查看 109关注 0票数 0

我刚开始用Swift编程,我是一个完全的初学者。我想编写一个函数或类,通过接收坐标(如果MKLookAround.request中有一张照片),使用MKLookAround.Snapshotter保存所需位置的照片,但我不知道如何使用mapkit就绪类。我不想使用swiftUI,我只想保存来自不同地方的许多坐标的图片。在这里输入图像描述

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-04 18:14:10

您可以创建一个MKLookAroundSceneRequest,获取它的scene,然后提供给MKLookAroundSnapshotter

代码语言:javascript
复制
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对象:

代码语言:javascript
复制
enum LookaroundError: Error {
    case unableToCreateScene
}

有关更多信息,请参见WWDC 2022 MapKit有什么新鲜事?或查看MKLookAroundSnapshotter在其样本工程中的使用。

如果要将其写入文件,请获取PNG (pngData)或JPG (jpgData)表示,并将其write到文件中:

代码语言:javascript
复制
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)

或者,您可能希望向用户提供一个用户界面,用户可以通过UIActivityViewController指定他们想要对图像做什么。

代码语言:javascript
复制
let share = UIActivityViewController(activityItems: [image], applicationActivities: nil)
self.present(share, animated: true)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73949844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档