如何将 Mapbox SDK 与 SwiftUI 集成

2023-12-12

我将 Mapbox SDK 安装到我的项目中,但我不明白如何将此代码片段与SwiftUI.

我创建了一个 SwiftUIView named MapView,我在其中导入 Mapbox 框架。

我尝试使用UIViewRepresentable协议,如苹果的教程,但没有成功。

import Mapbox

class MapView: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()

    let styleURL = URL(string: "mapbox://styles/mapbox/outdoors-v9")
    let mapView = MGLMapView(frame: view.bounds,
                             styleURL: styleURL)
    mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

    mapView.setCenter(CLLocationCoordinate2D(latitude: 45.52954,
                                             longitude: -122.72317),
                      zoomLevel: 14, 
                      animated: false)
    view.addSubview(mapView)
  }

}

我是 iOS 开发新手,所以任何帮助将不胜感激。


这是一个关于如何集成的工作示例MGLMapView with SwiftUI.

使用时UIViewRepresentable你必须实现两个代表:makeUIView这将返回您的视图(在本例中MGLMapView) and updateUIView它将接收与返回的视图类型相同的视图类型makeUIView (again MGLMapView).

您可以用它来进行实验。

另外,我建议您熟悉 React 架构,以便更好地理解 SwiftUI 方法。

您可以通过以下方式改进此示例ContentView接收 styleURL,并在预览中尝试不同的样式。

import Mapbox
import SwiftUI

struct ContentView : View {
    var body: some View {

        MapboxViewRepresentation(MGLStyle.streetsStyleURL)

    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif

struct MapboxViewRepresentation : UIViewRepresentable {

    let styleURL: URL

    init(_ styleURL: URL) {
        self.styleURL = styleURL
    }

    func makeUIView(context: UIViewRepresentableContext<MapboxViewRepresentation>) -> MGLMapView {
        let mapView = MGLMapView(frame: .zero, styleURL: styleURL)

        return mapView
    }

    func updateUIView(_ uiView: MGLMapView, context: UIViewRepresentableContext<MapboxViewRepresentation>) {

    }


}

UPDATE:这是关于如何将 Mapbox 与 SwiftUI 集成的官方指南https://docs.mapbox.com/help/tutorials/ios-swiftui/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Mapbox SDK 与 SwiftUI 集成 的相关文章

随机推荐

  • Oracle 触发器每月检查约束

    只是想知道是否可以创建一个触发器来每月检查指定的约束基础 eg 桌租 ID 会员 书籍 1 约翰 童话 2 约翰 摩擦 3 约翰 漫画 4 约翰 杂志 限制 会员每月只允许借阅4本书 我想过使用 count book 有什么建议吗 使用触发
  • 使用 SIMD 查找素数列表 - SSE/AVX

    我很好奇是否有人对如何使用 SIMD 查找素数列表有建议 我特别感兴趣如何使用 SSE AVX 来做到这一点 我一直在研究的两种算法是试除法和埃拉托斯特尼筛法 我设法找到一种使用 SSE 进行试除的方法 我找到了一种更快的除法方法 该方法非
  • Hadoop 从 Hadoop 节点的本地文件系统访问第 3 方库

    我的所有 Hadoop 节点上都有一个 jar 文件 位于 home ubuntu libs javacv 0 9 jar 以及其他一些 jar 文件 When my 映射减少应用程序正在执行Hadoop节点 我收到此异常 java io
  • XML 反序列化和松散数组项

    因此 我正在处理一些我认为很可能格式错误的 XML 文件 并且我正在尝试弄清楚如何以及是否可以使用 XmlSerializer 将此 XML 反序列化为逻辑业务对象 假设我有以下 XML 文件
  • 我如何找出谁强制推送了 git?

    有人用过git push force但我无法从日志中看出是谁干的 有没有办法找出罪魁祸首 2018 年 11 月更新 如果您要推送到集中式 Git 存储库托管服务 例如 GitHub then你将能够看到谁强制推送了你的分支 但这只是因为
  • 将二维矩阵向右旋转[重复]

    这个问题在这里已经有答案了 我想要一个二维矩阵向右旋转 它编译得很好 但是当我尝试运行时 它说数组索引越界异常 例如 我想要 10 20 30 40 50 60 旋转成 40 10 50 20 60 30 public static int
  • 使用 WCF 从类库公开对象

    我正在使用一个公开一些对象的类库 这些对象有几个属性来保存我的客户所需的数据 我想创建一个 WCF 服务 将对象返回给我的客户端 但我无法更新类库以添加 DataContract 和 DataMember 属性 暴露这些对象的最简单方法是什
  • 通过蓝牙将 GPS 位置发送到 iOS 设备

    我们正在寻找一种通过蓝牙将 GPS 位置发送到 iPhone 或 iPad 的方法 这样做的好处是 外部 GPS 设备可以比 iOS 中的内置 GPS 设备产生更准确的位置 出于我们的测试目的 如果能够由 QA 手动生成 GPS 也很好 我
  • 如果 OpenProcess() 因 ACCESS_DENIED 失败,如何从 pid 获取进程文件名?

    我正在尝试从其 pid 获取进程名称 用户以管理员身份运行 UAC 已启用 但未提升 一些系统进程 例如services exe 以这样的方式设置他们的安全性OpenProcess PROCESS QUERY INFORMATION 失败了
  • postgresql 触发器:禁用自动提交并设置隔离级别

    我正在数据库上编写一个触发器 而不是在表上插入 进行一些操作 然后将数据插入到不同的相关表中 现在我需要禁用自动提交并在触发器内设置不同的隔离级别 我该怎么办 除了嵌入式 SQL 之外 PostgreSQL 没有禁用自动提交的设置 如果您尝
  • 致命错误:未捕获错误:未找到“Cloudinary”类

    当我尝试在 cloudinary 中上传图像时 致命错误 未捕获错误 未找到 Cloudinary 类 我的配置文件中出现此错误 我的配置文件包含 为什么我会得到这个 05 2021 我希望你找到了解决方案 如果没有尝试这个 Cloudin
  • 我可以在 Google 跟踪代码管理器中添加 Facebook 转化跟踪吗?

    我会在 Google 标签管理中添加 Facebook 转化跟踪像素 我看到的唯一问题是 FB 要求在标签之间添加代码 而 GTM 则位于 有点令人困惑 有任何想法吗 FB 转换跟踪代码应介于 and 正确部署Google Tag Mana
  • 如何参数化 Pytest 夹具?

    考虑以下 Pytest import pytest class TimeLine object instances 0 1 2 pytest fixture def timeline return TimeLine def test tim
  • 使用 OpenXML 将 PowerPoint 演示文稿另存为 PDF

    我的目标是建立一个自动化的服务器端流程来转变 ppt into a pdf Microsoft 自己建议我使用 OpenXML 现在我正在考虑这一点 我的问题是 我真的可以使用 OpenXML 实现我的目标吗 我很难找到我期望的方法 例如
  • 优化 pyomo 中的 Fortran 函数

    我希望使用 Pyomo 优化 Fortran 函数 目标函数和约束都是用 Fortran 编写的 根据给出的答案here 我们可以用ExternalFunction表达式对象 但即使是最简单的函数我也无法得到结果 下面给出的是一个可重现的示
  • C 编程中 gets、scanf 和 fgets 之间的区别[重复]

    这个问题在这里已经有答案了 我最近开始学习C编程语言 并在三本不同的书中看到了这三个输入函数 因此 当考虑到效率时 我对使用哪一个有点困惑 因此 当考虑到效率时 我对使用哪一个有点困惑 没有一个 I O 速度慢 如果需要效率 就不要进行 I
  • Firebase Firestore 适用于真实数据库,但不适用于模拟器

    我正在使用 Firebase 并开始尝试使用 Firebase 模拟器运行本地开发实例 我正在运行 Firebase Tools v8 4 1 当我使用真正的 Firestore 数据库运行时 一切正常 然而 当我使用模拟器时 出现了一些问
  • auto_ptr 与 swig

    我正在尝试包装一个使用 auto ptr 的 C 库 我正在使用痛饮 并想要生成 python 绑定 我看过 swig 文档中关于如何将 swig 与智能指针一起使用的部分here 但我无法让它发挥作用 Swig 生成想要使用 const
  • pascal 中使用的集合的实现是什么?

    我想知道语言提供的 pascal 中集合类型的实际实现 特别是 我想知道 freepascal 运行时库中使用的库 但我对任何 pascal 实现都很感兴趣 我关心它的运行时复杂性 的最佳实现不相交集数据结构 are in O log n
  • 如何将 Mapbox SDK 与 SwiftUI 集成

    我将 Mapbox SDK 安装到我的项目中 但我不明白如何将此代码片段与SwiftUI 我创建了一个 SwiftUIView named MapView 我在其中导入 Mapbox 框架 我尝试使用UIViewRepresentable协