我试图在基于Cordova的应用程序中使用MKMapView,一切似乎工作正常,除非我在设备处于横向模式时使用代码对其进行初始化,而主页按钮位于右侧:
MKMapView* mapView = [[MKMapView alloc]initWithFrame:CGRectMake(200, 62, 824, 708)];
地图显示空白,只有'法律'地图一角可见的措辞。
奇怪的是,当主页按钮位于左侧且仍然处于横向模式时,调用上面相同的代码没有显示地图的问题。
另一件需要注意的事情是,在纵向模式下正确初始化后,将设备再次旋转到横向,它将起作用。此外,它只发生在iPad 4,iPad mini和iPhone 5(公司设备,而不是我的),而iPhone 6 Plus没有这个问题。然而,在iPhone 6 Plus上,地图的坐标在横向模式下也是不对的,这意味着如果我给它一个坐标来居中地图,它会在错误的位置居中,但是当处于纵向模式或主页按钮打开时左边它正确居中!我想知道这两个问题是否相关..
这是iOS错误吗?或者与科尔多瓦有什么关系?
答案 0 :(得分:0)
看起来地图框架没问题,但地图没有渲染。
在ViewController中为mapView设置委托:
mapView.delegate = self;
并实现这些方法,您可以检查地图:
- (void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error {
// here you can catch error if map failed
}
- (void)mapViewWillStartLoadingMap:(MKMapView *)mapView {
// here you can see when map starts loading
}
- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView {
// here you can see when map finishes loading
}
答案 1 :(得分:0)
我有点想出了问题。
它是由......的组合引起的。
问题的根源在于:
MKMapView* mapView = [[MKMapView alloc]initWithFrame:CGRectMake(200, 62, 824, 708)];
如果你用708添加62,它等于770px,而我的设备高度只有768px,它会在设备屏幕上显示2px。
必须满足其中4个条件才能实现。
如果设备未处于横向模式,右侧是Home按钮,或者它在iOS 8上,或者您没有使用cordova状态栏插件(或类似的东西),或者边界设置正确,它不会发生。
难怪我在Google上搜索过,发现没有人遇到类似问题>。<
希望这些信息对某人有所帮助......但我对此表示怀疑。
最后,我选择修复我的边界计算,永远不要让它在设备屏幕之外渲染,一切正常。