MKPolyline未在地图视图中显示

时间:2016-04-28 17:17:06

标签: ios objective-c mkmapview mkpolyline

我正在开发一个简单的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>

1 个答案:

答案 0 :(得分:0)

此代码工作正常。该线正在地图上正确绘制,问题是解析坐标并创建线的代码。它将纬度和经度设置为向后,因此该线位于世界其他地方,对于我的缩放水平是不可见的。