在Mapbox iOS上使用缩放级别更新SymbolLayer iconImageName

时间:2018-05-01 14:14:13

标签: ios objective-c mapbox

平台:iOS

Mapbox SDK版本:4.0.0

如何在最新版本中更新iconImageName

在旧版本中,我使用以下代码:

symbolLayer.iconImageName = [MGLStyleValue valueWithInterpolationMode:MGLInterpolationModeInterval
      cameraStops:@{
                    @8: [MGLStyleValue valueWithRawValue:imageNameOne],
                    @10: [MGLStyleValue valueWithRawValue:imageNameTwo]                            }
          options: nil];

但在版本4.0.0中,我尝试使用此代码:

    NSDictionary *cameraStops = @{
                              @8: [NSExpression expressionWithFormat:imageNameOne],
                              @10: [NSExpression expressionWithFormat:imageNameTwo]
                            };

symbolLayer.iconImageName = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'interval', nil, %@)", cameraStops];

但是收到错误

  

由于未捕获的异常而终止应用   ' NSInvalidArgumentException',原因:'无效的属性值:[1] [0]:   未知插值类型间隔'。

1 个答案:

答案 0 :(得分:2)

mgl_interpolate:withCurveType:parameters:stops:的曲线类型参数有3个主要参数:linearexponentialcubicBezier。这样的事情有用吗?

   NSDictionary *cameraStops = @{
                          @8: imageNameOne,
                          @10: imageNameTwo
                        };
   symbolLayer.iconImageName = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, nil, %@)", cameraStops];

您可能还会在更新代码时发现此migration guide有用。