MapBox折线未在地图上显示

时间:2014-04-10 12:18:08

标签: ios objective-c mapbox

尝试在地图上添加折线时出现问题。 我从MKDirections获取路线,并创建一个RMPolylineAnnotation,但它不会出现在地图上。
正如我所看到的,当地图出现时,只调用一次以下方法:

- (RMMapLayer *)mapView:(RMMapView *)mapView layerForAnnotation:(RMAnnotation *)annotation 

以下是我正在使用的代码:

- (void)getRoute {
CLLocation *source = [[CLLocation alloc] initWithLatitude:self.mapView.userLocation.coordinate.latitude longitude:self.mapView.userLocation.coordinate.longitude];

CLLocation *destination = [[CLLocation alloc] initWithLatitude:self.mapView.selectedAnnotation.coordinate.latitude longitude:self.mapView.selectedAnnotation.coordinate.longitude];

[AppleDirectionManager getDirectionsFromPoint:source toPoint:destination transportType:MKDirectionsTransportTypeAutomobile withCompletion:^(MKDirectionsResponse *result) {

    self.routeStepsArray = [[result.routes firstObject] steps];
    for (MKRoute *route in result.routes) {
        NSMutableArray *points = [NSMutableArray array];
        for (int i = 0; i < route.polyline.pointCount; i++) {
            MKMapPoint point = route.polyline.points[i];

            CLLocation *location = [[CLLocation alloc] initWithLatitude:point.x longitude:point.y];
            [points addObject:location];
        }
        dispatch_async(dispatch_get_main_queue(), ^{
            NSArray *arr = [points copy];
            RMPolylineAnnotation *polyline = [[RMPolylineAnnotation alloc] initWithMapView:self.mapView points:arr];
            [self.mapView addAnnotation:polyline];
        });
    }
}];
}

- (RMMapLayer *)mapView:(RMMapView *)mapView layerForAnnotation:(RMAnnotation *)annotation {

if (annotation.isUserLocationAnnotation)
    return nil;

RMMarker *marker = [[RMMarker alloc] initWithUIImage:[UIImage imageNamed:@"blabla.png"]];

[marker setCanShowCallout:YES];

[marker setName:@"blabla"];

return marker;

}

此外,我无法显示RMPointAnnotation的自定义标注。

1 个答案:

答案 0 :(得分:1)

对于RMPointAnnotation,它很容易。

 _polylineAnnotation = [[RMPolylineAnnotation alloc] initWithMapView:_mapView points:@[Location,Location]];
 _polylineAnnotation.lineColor = [UIColor redColor];
 _polylineAnnotation.lineWidth = 10.0f;
 [_mapView addAnnotation:_polylineAnnotation];