2016-04-28 51 views
0

我正在研究一個簡單的iOS應用程序,它從服務器檢索GeoJSON並將其顯示在地圖視圖中。除了最後一部分,一切都在運轉。我檢索GeoJSON,解析它以創建一個MKPolyline,將該行賦予我的視圖(這是地圖的委託),然後將該行添加到我的mapView,但不顯示。我對可能出錯的想法不知情。MKPolyline不會在地圖視圖中顯示

我有一個networking類從服務器檢索數據,我的視圖控制器是它的代表。它收到這樣的行:

-(void) receiveRoutePolyline:(MKPolyline *)routeLine { 
    NSLog(@"Received line"); 
    NSLog(@"%@", self.mapView.delegate); 
    NSLog(@"%@", self); 
    self.routeLine = routeLine; 
    if (self.routeLine == nil) { 
     NSLog(@"Nil duh!"); 
    } 
    NSLog(@"%lu", (unsigned long)[self.routeLine pointCount]); 
    [self.mapView addOverlay:self.routeLine level:MKOverlayLevelAboveLabels]; 
    NSLog(@"Set line on map"); 
} 

正如你所看到的,我一直在打印信息以發現任何錯誤。下面是函數的輸出:

2016-04-28 12:09:40.472 SinTraficoRouteAPIDemo[43189:1400965] Received line 
2016-04-28 12:09:40.473 SinTraficoRouteAPIDemo[43189:1400965] <MapViewController: 0x78f37a90> 
2016-04-28 12:09:40.474 SinTraficoRouteAPIDemo[43189:1400965] <MapViewController: 0x78f37a90> 
2016-04-28 12:09:40.475 SinTraficoRouteAPIDemo[43189:1400965] 121 
2016-04-28 12:09:40.475 SinTraficoRouteAPIDemo[43189:1400965] Set line on map 

視圖控制器已設置爲MapView類的代表,但是,對於渲染方法:

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay { 
    NSLog(@"hi"); 
    if ([overlay isKindOfClass:[MKPolyline class]]) { 
     MKPolyline *route = overlay; 
     MKPolylineRenderer *routeRenderer = [[MKPolylineRenderer alloc] initWithPolyline:route]; 
     routeRenderer.strokeColor = [UIColor blueColor]; 
     routeRenderer.lineWidth = 10; 
     return routeRenderer; 
    } 
    else { 
     return nil; 
    } 
} 

從未登錄「嗨」到控制檯!我甚至嘗試添加已棄用的方法

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay { 
    MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay]; 
    polylineView.strokeColor = [UIColor redColor]; 
    polylineView.lineWidth = 10; 
    return polylineView; 
} 

看看也許它會工作,但沒有運氣。任何幫助表示讚賞,謝謝。

編輯: 視圖控制器聲明

@interface MapViewController : UIViewController <MKMapViewDelegate, OptionsDelegate, RouteNetworkDelegate> 
+0

你是否聲明MKMapViewDelegate? –

+0

@TejaNandamuri是的,我添加了聲明到我的文章。 – gamda

+0

是在故事板中創建的地圖視圖?如果是這樣,請在故事板中設置委託。 –

回答

0

此代碼是工作的罰款。該線被正確地繪製在地圖上,問題在於解析座標並創建線條的代碼。它將經緯度設置爲倒退,因此線條位於世界的其他地方,在我的縮放級別上不可見。