2016-04-28 8 views
0

私はサーバーからGeoJSONを取得してマップビューに表示する簡単なiOSアプリケーションを開発中です。最後の部分を除いてすべてが機能しています。私は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; 
} 

を追加しようとしたが、ない幸運。どんな助けもありがとう、ありがとう。

EDIT:このコードは正常に動作して ビューコントローラ宣言

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

MKMapViewDelegateを宣言しましたか? –

+0

@TejaNandamuriはい、私は自分の投稿に宣言を追加しました。 – gamda

+0

はストーリーボードで作成されたマップビューですか?その場合は、ストーリーボードにもデリゲートを設定します。 –

答えて

0

。その線は地図上に正しく描かれていましたが、問題は座標を解析して線を作成したコードでした。緯度と経度を後ろに設定していたので、ラインは世界のどこかにあり、私のズームレベルには見えませんでした。

関連する問題