所以我有一个函数需要两个MKMapRect,第二个函数与第一个相交。因此该函数创建了一个MKPolygon,它是没有相交部分的第一个矩形:
-(void) polygons:(MKMapRect)fullRect exclude:(MKMapRect)excludeArea{
NSLog(@"Y is: %f height: %f",excludeArea.origin.y,excludeArea.size.height);
double top = excludeArea.origin.y - fullRect.origin.y;
double lft = excludeArea.origin.x - fullRect.origin.x;
double btm = (fullRect.origin.y + fullRect.size.height) - (excludeArea.origin.y + excludeArea.size.height);
double rgt = (fullRect.origin.x + fullRect.size.width) - (excludeArea.origin.x + excludeArea.size.width);
double ot = fullRect.origin.y, it = (ot + top);
double ol = fullRect.origin.x, il = (ol + lft);
double ob = (fullRect.origin.y + fullRect.size.height), ib = (ob - btm);
double or = (fullRect.origin.x + fullRect.size.width), ir = (or - rgt);
MKMapPoint points[11] = {{ol,it}, {ol,ot}, {or,ot}, {or,ob}, {ol,ob}, {ol,it}, {il,it}, {ir,it}, {ir,ib}, {il,ib}, {il,it}};
MKPolygon *polygon = [MKPolygon polygonWithPoints:points count:11];
}
现在我的问题是如何从这个MKPolygon获得最少数量的MKMapRects?我做了一些谷歌搜索以及浏览论坛,但没有找到任何东西。
编辑: 所以目标如下: 我有一个MKMapRect rect1,然后我有一个矩形列表,rectList,这是与rect1相交的MKMapRects,我想要做的是创建一个直线的MK1olygon,从rect1中删除rectList中所有MKMapRects的表面,然后创建来自创建的直线MKPolygon的最小MKMaprects数。
现在问题如下:我从rect1中删除一个MKMapRect时能够创建一个多边形,但我不知道如何从rect1中删除以下maprects,我不知道如何从中删除最小的MkMapRects集合多边形创建。
祝你好运 窥
答案 0 :(得分:0)
我不确定这是你正在寻找的,还是我完全理解了这个问题,但如果您需要知道的是多边形中通过从另一个中减去一个矩形而创建的矩形的最小数量应该能够通过检查第一个矩形中包含的第二个矩形中的角点数来实现。在伪代码中:
int minNumRects(MKRect r1, MKRect r2) {
int numPointsContained = 0;
for (Point p in r2) {
if (MKMapRectContainsPoint(r1, p)) {
numPointsContained++;
}
}
if (numPointsContained == 1) {
return 2;
} else if (numPointsContained == 2) {
return 3;
} else if (numPointsContained == 4) {
return 4;
} else {
return 0;
}
}
P.S。 - 这假设矩形是轴对齐的,但据我所知,MKRects就是这种情况