2012-01-07 61 views
0

我有一個MKMapView,其上有一些引腳。我用MKPolyline視圖連接引腳。但是MKPolyline僅在我移動地圖時(MapView更新時)纔會顯示。我想從一開始就看到MKPolyline僅在移動地圖時顯示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; 
} 

對於測試問題我已在法-(void)plotSnapPosition設置MKPolyline的顏色爲紅色。在代表中,我將其設置爲藍色。在移動地圖後,只顯示藍色。

有人可以幫我解決這個問題嗎?我認爲這只是一個小錯誤。謝謝。

這裏是截圖:

the two pins

移動地圖後:

the path after moving the map

回答

2

確保您在之前設置了mapView的代理,並添加了疊加層。所以,在你的情況下,

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

非常感謝。這是解決方案。 – Holger 2012-01-08 21:39:29

0

您是否嘗試過加入[OverlayView的setNeedsDisplay]呼叫完成在畫什麼?

+0

謝謝你的回覆。但它沒有幫助我。對不起,setNeedsDisplay方法不適用於mapView或polylineView。根本沒有顯示路徑。只有在移動地圖後。 – Holger 2012-01-07 23:51:28

相關問題