ios - 如何在 HERE Maps iOS 路由中添加超过 20 个禁止区域?

标签 ios objective-c here-api

我正在测试通过 HERE iOS SDK 将一组禁止区域添加到我的 route 。 (我使用的是 iOS Premium SDK)。然而我注意到,在 20 次 AddBannedArea 调用之后,所有附加信息都被丢弃。禁区的数量有硬性限制吗?如果是这样,我将如何添加更多内容?

这是我使用的测试代码片段。在 19 处,最后一个地理多边形在布线时仍然可以识别并避开。但是,如果我将循环增加到 20,则最后一个 geopolygon 以及所有后续 geopolygon 都将被忽略。

NMADynamicPenalty *penalty = [[NMADynamicPenalty alloc] init];
for (int w = 0; w < 19; w++){
      float latitude = 29 + (w / 5) + (arc4random_uniform(100) / 100.0);
      float longitude = -66 - w - (arc4random_uniform(100) / 100.0);
      NMAGeoCoordinates *topRight = [[NMAGeoCoordinates alloc] initWithLatitude:latitude longitude:longitude];
      NMAGeoCoordinates *topLeft = [[NMAGeoCoordinates alloc] initWithLatitude:latitude longitude:(longitude - 0.25)];
      NMAGeoCoordinates *bottomRight = [[NMAGeoCoordinates alloc] initWithLatitude:(latitude - 0.25) longitude:longitude];
      NMAGeoCoordinates *bottomLeft = [[NMAGeoCoordinates alloc] initWithLatitude:(latitude - 0.25) longitude:(longitude - 0.25)];
      NMAGeoPolygon *polygon = [[NMAGeoPolygon alloc] init];
      [polygon addPoint:topRight];
      [polygon addPoint:topLeft];
      [polygon addPoint:bottomLeft];
      [polygon addPoint: bottomRight];
      NMAMapPolygon *mapPolyGon = [[NMAMapPolygon alloc] initWithPolygon:polygon];
      [penalty addBannedArea:mapPolyGon];
    }
    NMAGeoCoordinates *topRight = [[NMAGeoCoordinates alloc] initWithLatitude:40.147209 longitude:-74.648863];
    NMAGeoCoordinates *topLeft = [[NMAGeoCoordinates alloc] initWithLatitude:40.145059 longitude:-74.726632];
    NMAGeoCoordinates *bottomRight = [[NMAGeoCoordinates alloc] initWithLatitude:40.074601 longitude:-74.649898];
    NMAGeoCoordinates *bottomLeft = [[NMAGeoCoordinates alloc] initWithLatitude:40.079852 longitude:-74.735551];
    NMAGeoPolygon *polygon = [[NMAGeoPolygon alloc] init];
    [polygon addPoint:topRight];
    [polygon addPoint:topLeft];
    [polygon addPoint:bottomLeft];
    [polygon addPoint: bottomRight];
    NMAMapPolygon *mapPolyGon = [[NMAMapPolygon alloc] initWithPolygon:polygon];
    [penalty addBannedArea:mapPolyGon];

编辑:更多信息

我正在从多佛特拉华(纬度:39.1582,经度:-75.5244)飞往纽约市(纬度:40.7128,经度:74.0060)。

我设置了19个随机禁区,以及一个测试禁区,其中一个盒子由以下组成

    NMAGeoCoordinates *topRight = [[NMAGeoCoordinates alloc] initWithLatitude:40.147209 longitude:-74.648863];
    NMAGeoCoordinates *topLeft = [[NMAGeoCoordinates alloc] initWithLatitude:40.145059 longitude:-74.726632];
    NMAGeoCoordinates *bottomRight = [[NMAGeoCoordinates alloc] initWithLatitude:40.074601 longitude:-74.649898];
    NMAGeoCoordinates *bottomLeft = [[NMAGeoCoordinates alloc] initWithLatitude:40.079852 longitude:-74.735551];

此框创建 I-97 上曼斯菲尔德 TWP 以北的区域。

如果低于 20,那么我可以正确躲避这一点。

Under 20 bannedAreas

但是,超过20,所以将循环设置为21+,并且该点完全被忽略,导致这种情况。

Over 20

最佳答案

SDK 不支持一次路线请求中超过 20 个禁区。文档将在下一版本中更新。

关于ios - 如何在 HERE Maps iOS 路由中添加超过 20 个禁止区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55852345/

相关文章:

ios - 调用 `reloadItems(at:)` 导致程序崩溃

ios - Swift如何访问嵌套结构中的信息?

objective-c - NSArray:检测并删除不存在的对象(文件)

ios - 在 Here-API 中,我们如何在 MapView 中显示下载的区域包 NMAMapLoader?

javascript - 在 Nokia/Here Maps Javascript API 中使用 ClusterProvider,无效的簇号

ios - Swift Metal Compute Shaders 提供意想不到的混合结果

iOS:Xcode:架构:armv7 与 armv6

ios - 如何知道拖放结束时的最后一个 x 和 y 值?

ios - 单击按钮时如何设置 TextView 的打开和关闭?

android - 在here-api android中获取特定路线的到达/旅行时间