我正在将一个大型NativeScript JavaScript项目从6.8版迁移到8.1版,这是一个非常大的飞跃,有很多突破性的更改。我大量使用谷歌地图和原生描述的谷歌地图sdk插件。我正在迁移我的地图页面,我在iOS上调用GMSMapView.mapWithFrameCamera
:时立即崩溃
this.nativeView = GMSMapView.mapWithFrameCamera(CGRectZero, this._createCameraPosition());
我理解这是mapWithFrame:camera:
的JavaScript绑定。调用是在谷歌地图插件中进行的,我使用了两个不同版本的插件(来自kefaB和jamescodesthings(,两者都会发生崩溃。
我的问题是下一步该怎么办。没有抛出异常,也没有消息,只是立即崩溃。我创建了一个只有地图创建的小样本项目,效果还可以。我从我的主项目中添加了额外的插件,样本仍然可以。我已经在这个问题上思考了将近两个星期,我必须让它发挥作用。
我的问题是:在try/catch、进入调试器和跟踪都没有结果的情况下,如何调试它?如果有任何见解,我将不胜感激。
注意:我还在kefaB/nativescript-google地图上创建了一个问题。我创建这篇文章是为了获得更多的可见性,因为修复可能不在插件中。
我终于发现了这个问题,这是app.js中一个简单的编码错误,我在这里指定了map API键。特别是,我有:
if (application.isIOS) {
GMSServices.provideAPIKey(<my API Key>);
}
看到问题了吗?isIOS
是平台的一个属性,但对于应用程序,相应的属性只是ios
(应该都是小写-autocorrect不断更改(。因此,从未指定API密钥。
不过,这里的教训是,并没有抛出异常或错误消息。因此,如果您在导航到包含谷歌地图的页面时遇到意外故障,请检查是否指定了API密钥。