首页 > 解决方案 > 地图加载时间长

问题描述

我面临与空地图加载时间长有关的问题Here-SDK-iOS

我打开了示例项目,看起来它冻结了一段时间,接下来是初始化代码:

  override func loadView() {
    super.loadView()
    
    NSLog("%@", ">>>>>>>>>> Load View \(Date())")
  }
  
  override func viewDidLoad() {
    super.viewDidLoad()
    
    mapView = MapView(frame: view.bounds)
    view.addSubview(mapView)
    
    mapView.mapScene.loadScene(mapScheme: .normalDay, completion: self.onLoadScene)
    mapView.gestures.tapDelegate = self
    
    NSLog("%@", ">>>>>>>>>> View Did Load \(Date())")
  }

  override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

    mapView.handleLowMemory()
  }

  func onLoadScene(_ error: MapError?) {
    guard error == nil else {
      print("Error: Map scene not loaded, \(String(describing: error))")
      return
    }

    // Configure the map.
    let camera = mapView.camera
    camera.lookAt(point: GeoCoordinates(latitude: 52.518043, longitude: 13.405991),
                  distanceInMeters: 1000 * 10)
  }

日志:

2021-06-25 08:45:27.500549+0300 testDrawing[50019:31547554] >>>>>>>>>> 加载视图 2021-06-25 05:45:27 +0000

...

2021-06-25 08:45:31.301998+0300 testDrawing[50019:31547554] >>>>>>>>>> 查看已加载 2021-06-25 05:45:31 +0000

如您所见,使用初始位置初始化地图大约需要 4 秒。注意:我使用免费增值帐户进行测试。

我还可以看到其他警告,例如

[警告] harp-sdk - 忽略添加无效的观察者

[警告] ResponseFromJsonBuilder - 缺少值,响应=olp::authentication::IntrospectAppResult,字段=描述

[INFO] harp-sdk - 添加数据源

[信息] Storage.LevelDB - 清除文件夹中的其他数据库:“/Users//Library/Developer/CoreSimulator/Devices/61082972-C4BE-42E2-9696-0D2458D475D5/data/Containers/Data/Application/74E993BF-7111-4E08- A27F-A7F62B3ADA1D/Library/Caches/v1/sSR8TFucGSrS94S4sDvrsA/analyticsData/events.sqlite

[信息] ThreadPoolTask​​Scheduler - 启动线程 'OLPSDKPOOL_0'

最耗时的操作 - 是Cleared other DB in folder- 大约 3 秒。

任何人都可以建议这种行为的原因是什么。

- - 更新 - - -

我也收到随机崩溃

在此处输入图像描述

版本 = heresdk-explore-ios-4.7.5.0.5737

- - 更新 - - -

几个模式技术细节:

对于问题«freeze on start":

在带有 M1 和模拟器(12 Pro、iOS 14.5)的 Mac 和设备 12 Pro iOS 14.5 上进行了测试。在设备上滞后一点 - 1-3 秒,在模拟器上 - 最多 7 秒。heresdk-explore-ios-4.7.5.0.5737 heresdk-navigate-ios-4.7.6.0.5863

对于“启动时崩溃”:

12 Pro,iOS 14.5 都在这里sdk-explore-ios-4.7.5.0.5737

- - 更新 - -

嗨,分析服务的崩溃必须在即将发布的版本中修复。最耗时的操作 -Cleared other DB in folder- about 3 sec. 没有证据表明此操作消耗 3 秒,可能在此操作之后发生了一些事情。– 希尔戈斯

@Hsilgos,

是的,没有证据表明这个操作确实消耗了 3 秒——这只是我的猜测(当我删除 sdk 时——一切都立即生效,所以这是简单的检查)。

以下是分析器的一些屏幕截图:

在此处输入图像描述 在此处输入图像描述

这是跟踪文件

在这里你可以看到 HARP.SDK.RENDERER(我猜是地图渲染器)消耗了大量资源,看起来 MainThread 正在等待它完成。

在此处输入图像描述

再次 - 这只是一个猜测。

另一个改进点 - 在 M1 上的 arm64 达尔文模拟器上添加对运行 fat 的支持。因为不是我需要使用 Rosetta ( - 这令人失望....

- - 更新 - -

绘图性能问题 - 示例(当一次绘制大约 200 个项目时,更准确地说 - 一个接一个 - 没有用于批量绘图的 API):

在此处输入图像描述

查看第二个绘图区域 - 那里的性能问题更加明显

标签: iosswifthere-apiheremapsheremaps-ios-sdk

解决方案


HERE SDK 团队今天宣布计划添加对 M1 arm64 模拟器构建的明确支持。目前尚不清楚这将在何时以及如何发生,但由于现在缺少它,因此与真实设备相比,在 Apple M1 处理器上运行模拟器会减慢速度。然而,对我来说,在 M1 上运行模拟器仍然比在非 M1 上运行模拟器快,只是因为 M1 速度非常快,而我的非 M1 MacBook 的设置速度不是最快的。

此外,分析崩溃似乎是一个已知问题。所以,希望我们能很快看到两者的修复。


推荐阅读