我正在开发一个简单的iOS应用程序,它从服务器检索GeoJSON并将其显示在地图视图中。除了最后一部分,一切正常。我检索GeoJSON,解析它以创建MKPolyline,将行放到我的视图(这是地图的委托),然后我将该行添加到我的mapView,但它没有显示。我对可能出现的问题没有想法。
我有一个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;
}
}
从不记录&#34;嗨&#34;到控制台!我甚至尝试添加已弃用的方法
- (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 :(得分:0)
此代码工作正常。该线正在地图上正确绘制,问题是解析坐标并创建线的代码。它将纬度和经度设置为向后,因此该线位于世界其他地方,对于我的缩放水平是不可见的。