2

我在我的一段代码中收到错误“由于未捕获的异常'NSInvalidArgumentException',原因:'Invalid Region'而终止应用程序”。这是代码:

- (MKCoordinateRegion)region
{
    MKCoordinateSpan span;
    span.latitudeDelta = (maxLat + 90) - (minLat + 90);
    span.longitudeDelta = (maxLon + 180) - (minLon + 180);

    NSLog(@"value of lat delta %f",span.latitudeDelta);
    NSLog(@"value of long delta %f",span.longitudeDelta);

    if(span.latitudeDelta == 0.0f)
    span.latitudeDelta = 0.1f;
    if(span.longitudeDelta == 0.0f)
    span.longitudeDelta = 0.1f;

    CLLocationCoordinate2D center;
    center.latitude = minLat + span.latitudeDelta / 2;
    center.longitude = minLon + span.longitudeDelta / 2;

    return MKCoordinateRegionMake(center, span);
}

这里 center.latitude 和 center.longitude 变为零并且它崩溃了。maxlat、maxlon、minlat 和 minlon 的值为 maxLat = -91、minLat = 91、maxLon = -181、minLon = 181 请帮助我。

4

2 回答 2

2

我有一个类似的问题。在谷歌地图上绘制最大值(纬度,经度)和最小值(纬度,经度),基本上会超出范围。(我猜这在 iOS 6 的 MapKit 中没有得到很好的处理)

目前,我的解决方法(并且有效)是设置这些值 maxLat = -75,minLat = 75,maxLon = -175,minLon = 175

我的应用可以做到这一点,因为它主要为一些人口最稠密的地区绘制地图。如果您的地图必须显示包括北极/南极在内的整个星球,那么我不确定我的 hack 是否会有所帮助。

于 2013-03-14T15:05:22.060 回答
0

我遇到了同样的问题并调查了纬度和经度的最大值可以设置为: minLat = -84 maxLat = 84 minLong = -179 maxLong = 179 否则您的位置将超出地图的范围并调用setRegion 可能会导致崩溃。

于 2015-08-28T09:47:12.837 回答