在同一个应用程序中切换 Google Maps SDK 和 Mapkit 会导致崩溃

2023-12-15

我创建了一个非常简单的应用程序,它使用 MapKit 和 GoogleMaps 框架,并尝试在两个地图之间切换。我正在使用 ARC (ios 6.1) 和 Google Maps SDK for iOS 版本:1.1.1.2311。几次切换后,应用程序崩溃了[EAGLContext setCurrentContext:]– 始终在 MapKit 代码中。在上一个线程中有一些建议 - 尝试设置[EAGLContext setCurrentContext:nil]在不同的地方,但没有帮助。

stack trace:
Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000c
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   OpenGLES                        0x33beeb12 +[EAGLContext setCurrentContext:] + 74
1   VectorKit                       0x383cada4 -[VGLGPU setPaused:] + 120
2   VectorKit                       0x383bad70 -[VKMainLoop updateLinkState] + 492
3   VectorKit                       0x383c7334 -[VKAnimation startWithStepHandler:completionHandler:] + 112
4   VectorKit                       0x383d657a -[VKBuildingFootprintMapModel _reloadStyleAnimated:] + 474
5   VectorKit                       0x383d6398 -[VKBuildingFootprintMapModel setActive:] + 84
6   VectorKit                       0x383d5ef4 -[VKModelObject setSupermodel:] + 44
7   VectorKit                       0x383d624a -[VKModelObject insertSubmodel:atIndex:] + 142
8   VectorKit                       0x383d615a -[VKMapRasterizer addSubmodel:] + 322
9   VectorKit                       0x383d5cb4 -[VKMapModel addSubmodel:] + 136
10  VectorKit                       0x383cf1c4 -[VKMapModel forceMapType:] + 1532
11  VectorKit                       0x383cc568 -[VKMapModel initWithTransform:shouldRasterize:] + 2016
12  VectorKit                       0x383cbd80 -[VKMapModel initShouldRasterize:] + 36
13  VectorKit                       0x383c9678 -[VKMapCanvas initWithFrame:shouldRasterize:] + 356
14  VectorKit                       0x383c930e -[VKMapView initWithFrame:andGlobe:shouldRasterize:] + 642
15  MapKit                          0x33599320 -[MKMapView _commonInitAndEnableLoading:fromIB:] + 720
16  MapKit                          0x33598e9c -[MKMapView initWithFrame:] + 252
17  saTest                          0x00017e2a -[AppleMapCtl loadView] (AppleMapCtl.m:27)

第一次将 Google 地图集成到我们的 iOS 应用程序中后,我们遇到了同样的问题。到目前为止,似乎对我们有用的解决方案是在释放 GMSMapView 和所有相关的 Google 地图对象之后等待一段时间,然后再实例化任何 MapKit 对象。

根据迄今为止的测试,我们的想法是 GMSMapView 对象层次结构是异步释放的,并且在释放 OpenGL 资源之前似乎不会积极地将其 EAGLContext 重新建立为“当前”。因此,如果 MapKit 切换当前的 EAGLContext,那么 GMSMapView 层次结构将继续释放资源,您将获得 OpenGL 资源释放的异花授粉。

所以我们的步骤是:

  1. 释放GMSMapView,以及所有GMS相关对象
  2. 等待 100 毫秒(0.1 秒)
  3. 将 EAGLEContext 设置为 nil
  4. 分配 MKMapView 并继续。

到目前为止,这对我们来说是有效的。祝你好运。

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

在同一个应用程序中切换 Google Maps SDK 和 Mapkit 会导致崩溃 的相关文章

随机推荐

  • 如何将 django Rest Framework json 查询结果连接到 dgrid/OnDemandGrid

    我的 JSON 存储 django Rest 框架 返回 count next previous 和 results 的键 count 是可用的行数 下一页 是下一页结果的 URL 例如 ids 26 50 previous 是上一页结果的
  • 获取在后台运行的 Java 运行时进程

    我正在编写一个java应用程序 我需要在正在运行的应用程序的整个生命周期中在后台运行一个进程 这是我所拥有的 Runtime getRuntime exec this works ok Process p Runtime getRuntim
  • 是否有一个真正有效的示例来显示 x86_64 上存储加载重新排序的副作用?

    众所周知 在 x86 64 上可以进行 Store Load 重新排序 如果 Store 和 Load 之间没有MFENCE 英特尔 64 和 IA 32 架构 8 2 3 4 可以将早期存储的负载重新排序到不同位置 还已知 在这样的示例中
  • 如何在导航周围创建径向渐变?

    看到围绕导航中心流动的径向渐变了吗 假设我做了一个div那就是导航 我将如何创建如图所示的渐变 注 看背景behind菜单 如果你谈论导航后面的浅棕色光芒 你可以使用 CSS3 来做到这一点 http jsfiddle net Jg8ZC
  • SignalR 自托管 Windows 服务,监听消息

    我正在尝试构建一个自托管 SignalR 的 Windows 服务 我已阅读过诸如此类的教程SignalR 在 ASP Net 上自托管 我注意到 至少看起来 它们是基于广播消息的 并且似乎找不到任何与聆听相关的内容 我需要收听服务内部的消
  • 为字符串创建距离矩阵

    我想加快以下代码的速度 有人能好心地提出一些建议吗 library dplyr library fuzzywuzzyR set seed 42 rm list ls options scipen 999 init FuzzMatcher n
  • Spring Boot 中的 Hystrix 仪表板问题

    我是 Hystrix 仪表板的新手 我已经用 Hystrix 编写了示例应用程序 我想查看 Hystrix 图表 命令指标流 但我收到以下错误 Circuit Unable to connect to Command Metric Stre
  • PDF 中的 JavaScript?

    我制作了一个可编辑的 PDF 供学生索取成绩单 现在 我想限制输入 例如 我只想要他们的 ID 号为数字 并且我只想要姓名字段中的字母 无特殊字符 等 此外 还有一个名为 最后就读年份 的输入 其中输入用户的最后一个学年上大学了 如果输入的
  • 从元素最小值的元组列表中提取元组的优雅方法

    我有一个元组列表 我希望从中得到索引处最小值的元组1 例如 如果我的列表如下 a a 2 ee 3 mm 4 x 1 我希望返回的元组是 x 1 目前我正在使用sorted函数得到这样的结果 min sorted a key lambda
  • 查找图中的连通分量[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如果我有一个无向图 作为顶点列表实现 如何找到它的连通分量 如何使用快速联盟 使用深度优先搜索 DFS 将所有单独的连接组件标记为已访问 dfs node u for each
  • 删除字符串中连续重复的单词

    我正在尝试编写一个函数来删除字符串中连续的重复单词 保留正则表达式找到的任何匹配项至关重要 换句话说 一只非常非常非常肮脏的狗 应该成为 一只非常脏的狗 我有一个似乎运行良好的正则表达式 基于这篇文章 b S b s 1 但是我不确定如何使
  • 如何从javascript中的值获取对象值的路径

    Example var someObject part1 name Part 1 txt example part2 name Part 2 size 15 qty 60 part3 name Part 3A size 10 qty 20
  • 使用 find 和 iconv 更改文件名

    我尝试使用以下脚本更改文件名 find dir type f exec mv echo iconv f UTF8 t ASCII TRANSLIT 为什么不起作用 我的意思是 当我有一个带有 这样的字符的文件时 它应该将其转换为 a ech
  • 如何在ListView中处理多个倒计时器?

    我有一个列表视图 带有自定义列表适配器 我需要在每一行上显示倒计时 例如 如果我的列表包含 4 个项目 则我将有 4 行 此时 我需要处理 4 个不同的倒计时 每行一个 因为时间不同 到目前为止 我按以下方式处理它 在自定义列表适配器中 在
  • 使用Python保留关键字作为变量名[重复]

    这个问题在这里已经有答案了 我正在尝试使用网络服务发送短信 这是网络服务文档的建议 response client service SendSMS fromNum 09999999 toNum 0666666666666 messageCo
  • Websockets 使用 asio c++ 库作为服务器,使用 javascript 作为客户端

    我使用 C 编写了服务器代码asio图书馆 我知道服务器代码可以工作 因为我使用同样用 C 编写并使用的客户端对其进行了测试asio 问题是 使用以下客户端 javascript 代码 连接不会被接受 我立即看到消息框Connection
  • TensorFlow:评估恢复图

    我正在尝试从检查点恢复图表 检查点是由创建的tf Supervisor 两者都有meta文件和检查点 我试图实现的是从单独的应用程序加载此图以运行某些操作 即重用现有模型 我按如下方式执行此操作 如此处所述 https www tensor
  • 在 ggplot2 中的 aes() 函数中使用颜色

    我是新来的ggplot2 我想了解如何使用ggplot 我正在读 Wickham 的书 但仍在尝试如何使用aes 功能 在相关的线程中 我们讨论了我们应该尽量避免在内部使用变量aes 即 不要将常量放入aes 仅将映射映射到实际数据列 我的
  • 使用 GCM Token 在 FCM 中推送消息

    目前我们有使用旧 GCM 实现的设备 有谁知道在使用 firebase 云消息 API 发送推送消息时是否可以使用旧的现有 GCM 令牌 或者应用程序是否需要新的 FCM sdk 实现 有谁知道在使用 firebase 云消息 API 发送
  • 在同一个应用程序中切换 Google Maps SDK 和 Mapkit 会导致崩溃

    我创建了一个非常简单的应用程序 它使用 MapKit 和 GoogleMaps 框架 并尝试在两个地图之间切换 我正在使用 ARC ios 6 1 和 Google Maps SDK for iOS 版本 1 1 1 2311 几次切换后