gpt4 book ai didi

iphone - 将所有 MKMapRects 合并到单个 MKPolygon

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:49 26 4
gpt4 key购买 nike

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

我在绘制走廊的路线周围有 MKMapRects。现在我想将所有矩形合并为一个多边形,这就是我的走廊和路线。 如何将所有矩形连接成一个 Polygon 。

矩形数: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

最佳答案

所以,要快:

  • Draw corrigor:画第二条粗线。
  • 突出显示走廊中的对象:在没有多边形联合的情况下计算它们,但使用距离到路线的方法。

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

关于iphone - 将所有 MKMapRects 合并到单个 MKPolygon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15780653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com