将所有MKMapRects合并为单个MKPolygon

时间:2013-04-03 06:50:18

标签: iphone ios objective-c mapkit mkmaprect

enter image description here我想使用Mapkit在MKMap上使用MKPolygon绘制 corridor 。我有一条从A站到B的路线。

我在绘制走廊的路线上有MKMapRects。现在我想合并单个Polygon中的所有矩形,这是我的Corridor和路线。 如何连接单个多边形中的所有矩形。

矩形编号:160

这里我附上了表示我需要的样本图像。

以下是代码段。

for(int i=0;i<[self.boundingRectsArr count];i++) {

            lat1 = [[[self.boundingRectsArr objectAtIndex:i] valueForKey:@"xLT"] doubleValue];
    long1 = [[[self.boundingRectsArr objectAtIndex:i] valueForKey:@"yLT"] doubleValue];

    lat2 = [[[self.boundingRectsArr objectAtIndex:i] valueForKey:@"xRT"] doubleValue];
    long2 = [[[self.boundingRectsArr objectAtIndex:i] valueForKey:@"yRT"] doubleValue];
            lat3 = [[[self.boundingRectsArr objectAtIndex:i] valueForKey:@"xRB"] doubleValue];
    long3 = [[[self.boundingRectsArr objectAtIndex:i] valueForKey:@"yRB"] doubleValue];
    lat4 = [[[self.boundingRectsArr objectAtIndex:i] valueForKey:@"xLB"] doubleValue];
    long4 = [[[self.boundingRectsArr objectAtIndex:i] valueForKey:@"yLB"] doubleValue];

            CLLocationCoordinate2D rect[5];
            rect[0] = CLLocationCoordinate2DMake(lat1, long1);
    rect[1] = CLLocationCoordinate2DMake(lat2, long2);
    rect[2] = CLLocationCoordinate2DMake(lat3, long3);
    rect[3] = CLLocationCoordinate2DMake(lat4, long4);
            rect[4] = CLLocationCoordinate2DMake(lat1, long1);

    MKPolygon* polyCorridor = [MKPolygon polygonWithCoordinates:rect count:5];
    polyCorridor.title = @"Colorado";
    [self.map addOverlay:polyCorridor]; 
}

先谢谢。欢迎您的回答。

此致,Sagar P. enter image description here

2 个答案:

答案 0 :(得分:0)

所以,要快点:

  • 绘制corrigor :绘制第二条粗线。
  • 突出显示道路中的对象:计算它们时不使用多边形联合,但使用距离到路径方法。

您可以在叠加实现中绘制两条线,一条用于路线,一条用于路线,一条用于走廊 - thiiick和半透明,您可以尝试使用MKMapView提供的数据计算点到公里比率并计算粗线宽度。对于你想突出显示的地图上的物体 - 你可以使用不同的方法,有很多算法可以找到曲线附近的点或直线。你甚至可以相当简单:将路线分成直线并检查所有物体的距离 - 这将是非常缓慢的,但它会起作用(确定你需要谷歌为那些复杂的算法)。

答案 1 :(得分:0)

简单,首先将MKMapRects转换为MKPolygons,然后使用此库创建所有MKPolygons的并集: https://github.com/SunGard-Labs/MKPolygon-GPC遗憾的是,它不是免费的。