2012-01-07 9 views
0

私はMKMapViewにピンがいくつかあります。ピンをMKPolylineビューで接続します。しかし、MKPolylineはマップを移動すると表示されます(MapViewが更新されたときのみ)。私は最初からMKPolylineが見たいです。私は赤にする方法-(void)plotSnapPositionMKPolylineの色を設定したテストの問題については地図が移動したときにMKPolylineのみが表示されます

-(void)plotSnapPosition { 
    for (id<MKAnnotation> annotation in myMapView.annotations) { 
     [myMapView removeAnnotation:annotation]; 
    } 
    for (id<MKOverlay> overlay in myMapView.overlays) { 
     [myMapView removeOverlay:overlay]; 
    } 
    NSArray *snaps = self.entry.snapsArray; 
    CLLocationCoordinate2D *locations = malloc(sizeof(CLLocationCoordinate2D) * snaps.count); 
    NSInteger counter = 0; 
    for (Snap *snap in snaps) { 
     locations[counter] = [snap coordinates]; 
     CLLocationCoordinate2D c = [snap coordinates]; 
     CAHAnnotation *annotation = [[CAHAnnotation alloc] initWithDate:snap.timeAsString coordinate:c counter:counter]; 
     [myMapView addAnnotation:annotation]; 
     counter++; 
    } 
    MKPolyline *polyline = [MKPolyline polylineWithCoordinates:locations count:snaps.count]; 
    MKPolylineView *routeLineView = [[MKPolylineView alloc] initWithPolyline:polyline]; 
    routeLineView.fillColor = [UIColor redColor]; 
    routeLineView.strokeColor = [UIColor redColor]; 
    routeLineView.lineWidth = 5; 

    [myMapView setVisibleMapRect:polyline.boundingMapRect]; 
    [self.myMapView addOverlay:polyline]; 
} 

-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay { 
    if ([overlay isKindOfClass:[MKPolyline class]]) { 
     MKPolylineView *routeLineView = [[MKPolylineView alloc] initWithPolyline:overlay]; 
     routeLineView.fillColor = [UIColor blueColor]; 
     routeLineView.strokeColor = [UIColor blueColor]; 
     routeLineView.lineWidth = 3; 
     return routeLineView; 
    } 

    return nil; 
} 

次のコードを点検してください。デリゲートで私はそれを青にしました。地図を移動した後、青いものだけが表示されます。

誰かが私を助けることができますか?私はそれがちょっとした間違いだと思う。ありがとうございました。ここ

はスクリーンショットです:

the two pins

マップを移動した後:

the path after moving the map

答えて

2

オーバーレイを追加する前に、の前にmapviewのデリゲートを設定してください。したがって、お客様の場合

mapView.delegate = self; 
[self plotSnapPosition]; 
+0

ありがとうございます。それが解決策でした。 – Holger

0

はあなたが描画を終了するとき[overlayView setNeedsDisplay]を呼び出して追加しようとしたことがありますか?

+0

ありがとうございます。しかし、それは私を助けなかった。 setNeedsDisplayメソッドは、mapViewまたはpolylineViewのどちらでも動作しません。パスはまったく表示されません。地図を移動した後にのみ。 – Holger

関連する問題