尝试在 Here Explore for iOS 中为地图标记创建 MapImage 实例会出现奇怪的错误

Trying to create MapImage instance for map marker in Here Explore for iOS is giving a weird error

Here Explore

init(coordinates: GeoCoordinates, image: UIImage) {
    
            
            let pngData = image.pngData()
            
            let mapImage = MapImage(pixelData: pngData!, imageFormat: ImageFormat.png)
            print("i did print")
            self.mapMarker = MapMarker(at: coordinates, image: mapImage)
        }

这是错误信息-

dyld4 config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib:/usr/lib/libMTLCapture.dylib terminating with uncaught exception of type std::runtime_error: SDK engine is null. Please provide a valid object.

调用 MapImage 构造函数时,pngData 不是 nil 值,我通过打印检查了它。这个错误是什么意思,我该如何解决?

这是我自己想出来的。问题的症结在于,在创建 MapImage 实例之前,需要初始化 HereSDK 引擎,这可以通过两种方式完成-

  1. 初始化 MapView,后者又初始化 HereSDK 引擎,但在我的例子中,此初始化发生在 MapImage 实例初始化语句之后。

  2. 在 MapImage 实例初始化语句之前显式初始化引擎。

    做{ 试试 SDKInitializer.initializeIfNecessary() } 抓住 { fatalError("未能初始化 HERE SDK。原因:(error)") }

这也可以在 AppDelegate 文件中完成。