在 iOS 中加载数千个数据和放大时间时,MapView 会冻结几秒钟

2023-12-12

我正在开发Mapview用快捷的语言。因为,我正在将 geojson 文件加载到我的地图视图中,它加载成功。我正在加载GEOSwift图书馆。它工作正常,但是,发生了什么,在加载数据时,地图视图在 UI 中冻结/卡住几秒钟,然后显示数据。即使缩放时间也会使 UI 冻结几秒钟。

我正在加载LineString键入坐标大约 7000 个数据的数据。

即使我只是在后台线程中解析数据。

我有两个 3 个选项卡,用于在我的地图中加载不同的数据 3geojson

文件。即使将一个数据切换到另一数据时,它也会变得冻结。

在调试中,放大/缩小地图视图时会出现以下错误打印。

 [VKDefault] Tile 11720.7599.14 (128) in current unloaded state for 0.01 seconds - Raster Overlays Above Labels - Failed to decode (terminal) (0.01 sec)

我的代码如下。

@IBAction func mapDataAction(_ sender: Any) {
        let overlays = mapView.overlays
        mapView.removeOverlays(overlays)

        self.mapView.removeAnnotations(mapView.annotations)


        DispatchQueue.global(qos: .background).async {
            if let geoJSONURL = Bundle.main.url(forResource: “LineString”, withExtension: "geojson") {
                do {
                    var overlays = [MKPolyline]()
                    let features = try Features.fromGeoJSON(geoJSONURL)
                    for item in features! {
                        if  let item = item.geometries![0] as? LineString {
                            let polyLine = item.mapShape() as! MKPolyline
                            overlays.append(polyLine)
                        }
                    }
                    DispatchQueue.main.async {
                        // add overlays to map
                        self.mapView.addOverlays(overlays)
                    }

                } catch {
                    //handle error
                }
            }
        }
    }

有一次应用程序崩溃并在控制台中抛出以下消息。

Terminated due to memory issue

并且它从设备的CPU中占用大量内存。

enter image description here

当滚动地图视图或放大/缩小时,它始终调用委托方法,这使得地图视图冻结。

public func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    if let polyline = overlay as? MKPolyline {
        let renderer = MKPolylineRenderer(polyline: polyline)
        //renderer.fillColor = UIColor.blue.withAlphaComponent(0.5)
        renderer.strokeColor = UIColor.blue.withAlphaComponent(0.8)
        renderer.lineWidth = 5
         print("MKPolylineRenderer delegate calling")
        return renderer
    }


    return MKOverlayRenderer(overlay: overlay)

 //   fatalError("Unexpected overlay type")
}

我该如何解决这个问题?


None

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

在 iOS 中加载数千个数据和放大时间时,MapView 会冻结几秒钟 的相关文章

  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self
  • 具有非零“内容”的 QTMovieLayer 的 iOS 替代品?

    背景 QTKit QuickTime Kit 是一个来自 10 3 天的 Mac 框架 在 10 5 中添加了一些层 例如QTMovieLayer QTMovieLayer 的好处之一是您可以使用常规访问电影内容content图层上的属性并
  • 在两个数字之间设置 UILabel 文本动画?

    我是 iPhone 和 Mac 编程新手 之前为 Windows 开发过 我有一个问题 我如何制作动画text的财产UILabel两个数字之间 例如从5 to 80以 Ease Out 风格 是否可以与CoreAnimation 我已经在谷
  • UIViewController 作为单例

    我在标签栏应用程序中有一个 UIViewController 我已经从 MainWindow nib 文件添加了控制器 即不是以编程方式 我的问题是如何使我的视图控制器成为单例 解决 Facebook 委托问题 您可能想让您的 Facebo
  • 在 iOS 上的 SceneKit 中导入 3d 模型

    从 URL 导入 obj 文件并将其转换为 SCNNode 时遇到问题 这是代码 swift3 let url URL init string https cloud box com shared static ock9d81kakj91d
  • 以编程方式更改 UISlider 的范围

    如何以编程方式设置 UISlider 的最小最大范围 例如 虚拟代码 UISlider slider UISlider alloc init slider min 3 slider max 3 EDIT 所以我有以下内容 sl minimu
  • CocoaPods 生成无效的项目文件(未找到标头)

    我有一个带有 Podfile 的项目文件 如下所示 platform ios 7 0 def import pods pod Specta 0 1 8 pod Expecta 0 2 1 pod RestKit 0 20 3 pod Mag
  • 是否可以使用 iOS SDK 更改 Amazon Cognito 中的用户名?

    正如标题中所写 是否可以更改 Amazon Cognito 用户的用户名 我在文档中找不到任何内容 可以更新preferred username使用 iOS SDK 的 Cognito 用户 使用updateAttributesAPI 调用
  • 使用原始类型+大小写参数的 Swift Enum 的解决方法?

    我想创建 SKSpriteNodesWallType 请参阅下面的代码 并且仅当WallType is Corner通过它Side其方向的价值 枚举具有原始值 因为我需要将它们作为数字从 plist 加载 并能够随机创建它们 enum Si
  • UIWebView 如何检测 被点击

    我知道下面的方法可以检测链接元素点击 但我想知道是否UIView可以检测是否img元素被点击 BOOL webView UIWebView webView shouldStartLoadWithRequest NSURLRequest re
  • 将第 3 方库添加到 iPhone 应用程序时如何设置“标题搜索路径”的路径

    我想添加第 3 方库语音转文本 https github com todoroo iPhone Speech To Textto my Xcode项目 我只是拖xcodeproj文件在我的 iPhone 项目中 然后我按照目标依赖项 将二进
  • NSPredicate 使用 RLMResults 作为参数

    我试图通过使用 NSPredicate 进行过滤来获取两组 Realm 数据 并且是不同的对象 之间的差异 但存在一个我无法理解的错误 我的代码 RLMResults topStories KFXTopStory allObjects NS
  • 我正在寻找 GCDAsyncUdpSocket 上的一些示例,但发现没有一个有效

    接收数据从未被调用过 我编写了这个由我的主线调用的 swift 类UI视图控制器向接收消息的服务器发送消息 但当服务器发回响应时 客户端永远不会收到它 因为 didReceiveData 从未被触发 我一直在谷歌上搜索并查看文档 它说客户端
  • 后台模式下的 AVSpeechSynthesizer

    我无法获取 iOS 7AVSpeechSynthesizer当我的 iOS 应用程序处于后台模式时工作 我添加了 应用程序播放音频 应用程序支持的后台模式的关键 但我仍然无法让它工作 我还研究了创建一个AVMutableCompositio
  • 如何在 iOS 5 中使用 Embed Segue?

    iOS 6 引入了 Embed Segue 允许在 Storyboard 中使用自定义容器控制器 有没有办法在 iOS 5 上复制这个 这里的挑战是子视图控制器的视图通常要添加为父视图控制器的某些容器视图的子视图 因为你不能随机进行序列UI
  • iOS SWIFT - WebRTC 从前置摄像头更改为后置摄像头

    WebRTC 视频默认使用前置摄像头 效果很好 但是 我需要将其切换到后置摄像头 但我无法找到任何代码来执行此操作 我需要编辑哪一部分 是 localView 或 localVideoTrack 还是捕获器 斯威夫特3 0 对等连接只能有一
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效
  • NSUserDefaults、Settings.bundle 和应用程序组

    我有一个有 2 个目标的应用程序 主应用程序和 Today 扩展 为了在这些目标之间共享设置 我打开了应用程序组功能 添加了一个组group myApp com然后使用NSUserDefaults在主应用程序和今日扩展中都是如此 var d

随机推荐

  • 如何在惰性列表中使图像更大(高度)

    我正在使用 Lazy list 项目开发一个图书阅读器这是链接 问题 我看到了惰性列表的外观页面高度小 图像模糊 很难阅读 我要这个 它应该看起来清晰 不是模糊 并且整页的高度像这样 I know 惰性列表加载位图的样本大小 我怎样才能获得
  • 使用可变数量的 IN (p1, p2, p3) 参数的动态查询

    我有以下内容 Dim strdepToDelete As String Dim strOtherToDelete As String strdepToDelete String Join depToDelete strOtherToDele
  • 使用“attr()”时选择之间的差异

    我有一段在单击按钮时调用的代码 const lines svg select lines selectAll line data arr lines enter append line lines attr x1 d gt d attr y
  • 将图像添加到多边形

    我一直在四处寻求帮助 但没有运气 所以我想我会问 我正在创建一系列菱形多边形 并想在它们上添加图像 但尝试在它们上绘图 但没有成功 关于如何做到这一点的任何建议 Thanks graphics setClip Shape graphics
  • 使用 ant 迭代 int xml 文件

    我有一个包含以下结构的 Xml 文件 我想按节点读取点头并使用不带公共分隔符的值调用特定任务 在 Ant 中这可能吗
  • 从 WriteFile 到物理磁盘的访问被拒绝错误,win7

    我正在尝试将一些数据从特定的物理扇区写入 SD 卡 我从一家公司收到了执行此操作的代码 他们说它在 windows xp 上工作正常 这与以下情况相同Win Vista 7 下的 WriteFile 错误 5 拒绝访问 这是将数据写入 SD
  • Rotativa ActionAsPdf() 非常慢

    Using 旋转1 6 4来自 NuGet 并使用下面的代码注意到以下问题 ActionAsPdf 随机挂起不确定的时间 下面的代码挂起 var pdfResult new ActionAsPdf Report new id Request
  • 我无法在 webpack 配置文件中使用 ES6

    是否可以在 webpack 配置文件中使用 ES6 尤其是 import 而不是 require 我有例如 import webpack from webpack 但我收到以下错误 function exports require modu
  • 通过组合模拟字段继承

    我有几对结构 其中一个的字段是另一个的完美超集 我想模拟某种继承 这样我就不必为每个结构都有单独的情况 因为这几乎会使我的代码增加一倍 在像 C 这样的语言中 我可以用这样的东西来模拟字段的继承 struct A int a struct
  • 如何在 React Native XMLHttpRequest API 或 Fetch Api 中禁用 ssl 检查?

    在本地测试服务器 url 上有 ssl 证书错误 因此我必须禁用 ssl 检查 我在 stackoverflow 上读过很多解决方案 但没有一个有帮助 问题是我无法在服务器上进行任何更改 所以我想知道如何禁用 ssl 检查或者是否有任何其他
  • Internet Explorer/Edge(非 chromium)在 SameSite=None Secure 时添加额外的 SameSite=Lax

    我在 Microsoft Dynamics 页面的 iframe 中加载了 NET MVC 应用程序 最初 用户将打开主页 主控制器重定向到登录页面 return RedirectToAction Index Login new retur
  • 有没有办法使用 PayPal REST API 设置定期付款?

    I read 这个问题 and this one 他们 一年前 都表示 通过 REST API 进行定期付款正在开发中 在我客户的网站上 客户需要能够支付 全额 一次性支付 例如 退房时 1200 美元 分期付款 6 个月内 1200 美元
  • LNK2038:检测到“RuntimeLibrary”与 cuda 不匹配

    我正在使用 Visual Studio 2013 编译包含 cpp 和 cu 文件的动态库 在链接过程中出现以下错误 proj generated cufile cu obj error LNK2038 mismatch detected
  • 使用 scala.math.max 减少浮点数组

    我对以下行为感到困惑 为什么使用 math max 减少 Int 数组可以工作 但 Float 数组需要包装函数 我记得这在 2 9 中不是问题 但我对此并不完全确定 scala version Scala code runner vers
  • Android - 重新启动活动而无需重新创建它

    我有一个显示图像的活动 ViewCollection java 我只想创建它一次 然后重新使用该实例来进一步显示来自不同调用的更多图像 该活动的初始化成本很高 到目前为止 我发起的活动是这样的 Intent i new Intent thi
  • 矢量化代码的 GPU 优化

    function w oja X varargin get the dimensionality m n size X random initial weights w randn m 1 options struct rate 00005
  • 实体集合的 IList 与 IEnumerable

    当我的域中存在包含事物列表的实体时 它们是否应该公开为 IList 或 IEnumerable 例如 Order 有一堆 OrderLines IEnumerable
  • Google 地图标记标题不再显示为悬停时的工具提示

    The 谷歌地图文档表示添加一个title当用户将鼠标悬停在该标记上时 标记对象的属性将导致其值显示为工具提示 这曾经工作得很好 包括在 API 的 v3 中 但在过去几个月的某个时候它已经停止工作了 包括在简单标记示例文档中提供 我在 C
  • IPython:如何自动加载 npz 文件并为变量赋值?

    我是 Python 新手 我热切地从 MATLAB 迁移到 IPython 作为我在实验室进行数据分析的首选语言 在 MATLAB 中 经过一段数据处理后 我会这样做 gt gt gt save myresults mat x y z 并将
  • 在 iOS 中加载数千个数据和放大时间时,MapView 会冻结几秒钟

    我正在开发Mapview用快捷的语言 因为 我正在将 geojson 文件加载到我的地图视图中 它加载成功 我正在加载GEOSwift图书馆 它工作正常 但是 发生了什么 在加载数据时 地图视图在 UI 中冻结 卡住几秒钟 然后显示数据 即