私はサーバーから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>
MKMapViewDelegateを宣言しましたか? –
@TejaNandamuriはい、私は自分の投稿に宣言を追加しました。 – gamda
はストーリーボードで作成されたマップビューですか?その場合は、ストーリーボードにもデリゲートを設定します。 –