地图框。 layerForAnnotation 未被调用。绘图形状

MapBox. layerForAnnotation not being called. Drawing shape

我正在尝试使用给定的坐标为用户绘制一条从 A 点到 B 点的路径。

添加注释后

LayerForAnnotation 没有被调用。我是 MapBox SDK 的新手,并不知道我做错了什么。我在 MapBox 文档中查找了有关添加形状的说明。我尝试更改为 RMPointAnnotation 但没有工作并且不应该根据此:Issue GitHub RMAnnotation.

我检查了是否有任何关于此委托的实现的信息,但在 MapBox 文档页面上没有找到很多信息。我从这里下载了说明注释的示例项目:Weekend Picks sample.

这是我使用的代码:

 - (void) makeRoutingAnnotations
{
    // Translate updated path with new coordinates.
    NSInteger numberOfSteps = _path.count;

    NSMutableArray *coordinates = [[NSMutableArray alloc] init];
    for (NSInteger index = 0; index < numberOfSteps; ++index) {
        CLLocation *location = [_path objectAtIndex:index];
        [coordinates addObject:location];
    }
    RMAnnotation *startAnnotation = [[RMAnnotation alloc] initWithMapView:mapView coordinate:((CLLocation *)[coordinates objectAtIndex:0]).coordinate andTitle:@"Start"];

    startAnnotation.userInfo = coordinates;
    [startAnnotation setBoundingBoxFromLocations:coordinates];

    [mapView addAnnotation:startAnnotation];

}

   - (RMMapLayer *)mapView:(RMMapView *)mView layerForAnnotation:(RMAnnotation *)annotation
{
    if (annotation.isUserLocationAnnotation)
        return nil;

    RMShape *shape = [[RMShape alloc] initWithView:mView];

    // set line color and width
    shape.lineColor = [UIColor colorWithRed:0.224 green:0.671 blue:0.780 alpha:1.000];
    shape.lineWidth = 8.0;

    for (CLLocation *location in (NSArray *)annotation.userInfo)
        [shape addLineToCoordinate:location.coordinate];

    return shape;

}

我可能会遗漏什么?我在 layerForAnnotation 方法上做了一个放置点,但它没有被调用。

我发现了我没有正确实现 RMMapViewDelegate 的问题。由于未正确实施,因此未被调用。

在头文件中添加并在代码中赋值即可。

mapView.delegate = self;