如何在HERE Maps iOS路由中添加20多个bannedArea?

时间:2019-04-25 15:02:03

标签: ios objective-c here-api

我正在测试通过HERE iOS SDK将一组bannedAreas添加到我的路线中。 (我正在使用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];

编辑:更多信息

我要从多佛尔DE(纬度: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的Mansfield TWP的北部创建区域。

如果未满20岁,那么我就可以正确避开它。

Under 20 bannedAreas

但是,超过20,因此将循环设置为21+,并完全忽略了该点,因此。

Over 20

1 个答案:

答案 0 :(得分:0)

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