2016-04-28 2 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; 
} 

посмотреть, возможно, это сработает, но не повезло. Любая помощь приветствуется, спасибо.

EDIT: Посмотреть контроллер декларации

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

сделал u объявляет MKMapViewDelegate? –

+0

@TejaNandamuri Да, я добавил объявление на свой пост. – gamda

+0

- это карта, созданная в раскадровке? Если это так, установите делегат в раскадровку. –

ответ

0

Этот код работает отлично. Строка была правильно нарисована на карте, проблема была в коде, который анализировал координаты и создал линию. Он устанавливал широту и долготу назад, поэтому линия находилась где-то в другом месте, невидимая для моего уровня масштабирования.

Смежные вопросы