我想使用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.
答案 0 :(得分:0)
所以,要快点:
您可以在叠加实现中绘制两条线,一条用于路线,一条用于路线,一条用于走廊 - thiiick和半透明,您可以尝试使用MKMapView提供的数据计算点到公里比率并计算粗线宽度。对于你想突出显示的地图上的物体 - 你可以使用不同的方法,有很多算法可以找到曲线附近的点或直线。你甚至可以相当简单:将路线分成直线并检查所有物体的距离 - 这将是非常缓慢的,但它会起作用(确定你需要谷歌为那些复杂的算法)。
答案 1 :(得分:0)
简单,首先将MKMapRects转换为MKPolygons,然后使用此库创建所有MKPolygons的并集: https://github.com/SunGard-Labs/MKPolygon-GPC遗憾的是,它不是免费的。