0

こんにちは、次の問題があります。MKMapView に多くのオーバーレイを追加します。たとえば、150 個のオーバーレイを追加しましたが、何らかの理由ですべてが表示されません! 私はそれmapView:viewForOverlay:が150回呼び出されることを知っています。これを追加すると[NSThread sleepForTimeInterval:1]、すべてのオーバーレイが作成されるメソッドにすべてのオーバーレイが表示されることがわかりました。オーバーレイが高速に追加されている可能性がありますか? または何が問題なのですか?

すべてのオーバーレイは、このようなバックグラウンド スレッドで作成されます!

MKPolyline* routeLine;
....
....
dispatch_async(dispatch_get_main_queue(), ^{

    [self.myMKMapView addOverlay:routeLine];

});

そしてこれがmapView:viewForOverlay:

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

    MKPolylineView * rLV = [[[MKPolylineView alloc] initWithPolyline:overlay]autorelease];

    rLV.fillColor = [UIColor blueColor];
    rLV.strokeColor = [UIColor blueColor];
    rLV.lineWidth = 1;
    rLV.alpha =  0.5;

    overlayView = rLV;

    return overlayView;
}
4

1 に答える 1

6

複数回呼び出している (そしてメイン スレッドで数百のブロックをキューに入れている) 場合は、代わりに配列を使用してメソッドをaddOverlay:呼び出した方が良い結果が得られる場合があります。addOverlays:

于 2011-09-10T21:42:18.623 に答える