0

MKPolyLine を mapView に追加しようとしています。しかし、エラーが発生しました:NSInvalidArgumentException', reason: '-[MKPolylineView boundingMapRect] 私のコード:

- (void)addRoad {
    [self loadRoude];
    [self.mapView addOverlay:self.routeLine];
}

- (void)loadRoude{
    MKMapPoint northEastPoint = MKMapPointForCoordinate(self.mapView.userLocation.coordinate);
MKMapPoint southWestPoint = MKMapPointMake(52.142391, 21.055641);

    MKMapPoint* pointArr = malloc(sizeof(CLLocationCoordinate2D) * 2);
    pointArr[0] = northEastPoint;
    pointArr[1] = southWestPoint;

    self.routeLine = [MKPolyline polylineWithPoints:pointArr count:2];
    _routeRect = MKMapRectMake(southWestPoint.x, southWestPoint.y, northEastPoint.x - southWestPoint.x, northEastPoint.y - southWestPoint.y);
    free(pointArr);
}

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKOverlayView* overlayView = nil;

if(overlay == self.routeLine)
{
        if(nil == self.routeLineView)
    {
        self.routeLineView = [[MKPolylineView alloc] initWithPolyline:self.routeLine];
        self.routeLineView.fillColor = [UIColor redColor];
        self.routeLineView.strokeColor = [UIColor redColor];
        self.routeLineView.lineWidth = 3;
    }
    overlayView = self.routeLineView;
}
return overlayView; 
}

私の問題はありますか?

編集

self.routeLineView の NSLog は私を示しています:outeLiveView = <MKPolylineView: 0x7c956d0; frame = (0 0; 0 0); opaque = NO; layer = <MKOverlayClusterProxyLayer: 0x7c97eb0>>これは正常ですか?

EDIT2

NSLog(@"pointArr[0]x = %f",pointArr[0].x);
NSLog(@"pointArr[0]y = %f",pointArr[0].y);
NSLog(@"pointArr[1]x = %f",pointArr[1].x);
NSLog(@"pointArr[1]y = %f",pointArr[1].y);

見せる:

pointArr[0]x = 149891376.014222
pointArr[0]y = 88510604.996837
pointArr[1]x = 149917951.870020
pointArr[1]y = 88495551.883086

つまり、ポインター配列には nil オブジェクトがありません。本当にショックです

4

1 に答える 1

0

Appleのドキュメントから:

NSInvalidArgumentException: 非 nil オブジェクトが必要な nil ポインターなど、無効な引数をメソッドに渡すときに発生する例外の名前。Mac OS X v10.0 以降で利用できます。

routeLineView初期化またはその他のMKPolylineViewオブジェクトに使用している値を確認してください。1つはおそらくnilです。

于 2012-07-10T16:53:56.530 に答える