如何在 HERE Maps iOS 路由中添加超过 20 个 bannedAreas?
How to add more than 20 bannedAreas in HERE Maps iOS routing?
我正在测试通过 HERE iOS SDK 在我的路线中添加一组 bannedAreas。 (我正在使用 iOS
高级 SDK)。但是我注意到,在 20 次 AddBannedArea 调用之后,所有附加信息都被丢弃了。禁区的数量是否有硬性限制?如果是这样,我将如何添加更多内容?
这是我使用的测试代码片段。在 19,最后一个地理多边形在路由时仍然被识别和避免。但是,如果我将循环增加到 20,则最后一个 geopolygon 和所有后续的 geopolygons 都将被忽略。
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];
编辑:更多信息
我正在从 Dover 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 上的曼斯菲尔德 TWP 以北创建区域。
如果低于20,那么我得到正确的闪避。
但是超过了20,所以设置循环为21+,点完全忽略,导致了这个。
SDK不支持一个路由请求中的禁区超过20个。文档将在下一版本中更新。
我正在测试通过 HERE iOS SDK 在我的路线中添加一组 bannedAreas。 (我正在使用 iOS
高级 SDK)。但是我注意到,在 20 次 AddBannedArea 调用之后,所有附加信息都被丢弃了。禁区的数量是否有硬性限制?如果是这样,我将如何添加更多内容?
这是我使用的测试代码片段。在 19,最后一个地理多边形在路由时仍然被识别和避免。但是,如果我将循环增加到 20,则最后一个 geopolygon 和所有后续的 geopolygons 都将被忽略。
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];
编辑:更多信息
我正在从 Dover 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 上的曼斯菲尔德 TWP 以北创建区域。
如果低于20,那么我得到正确的闪避。
但是超过了20,所以设置循环为21+,点完全忽略,导致了这个。
SDK不支持一个路由请求中的禁区超过20个。文档将在下一版本中更新。