因此,我有一个函数需要两个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中获取最小数量的MKMapRect?我已经进行了一些谷歌搜索以及浏览了论坛,但没有发现任何东西。

编辑:
因此,目标如下:
我有一个MKMapRect rect1,然后有一个矩形列表rectList,这是与rect1相交的MKMapRects,我想做的是创建一个rect1的直线MKPolygon,从rect1中删除rectList中所有MKMapRects的表面,然后创建rect1。从创建的直线MKPolygon中最小的MKMaprects。

现在的问题如下:从rect1中删除一个MKMapRect时,我可以创建一个多边形,但是我不知道如何从rect1中删除以下maprects,而且我不知道如何从创建的多边形中提取最小的MkMapRects。

最好的祝福
窥视

最佳答案

我不确定这是您要查找的内容还是我完全理解这个问题,但是如果您所需要知道的是通过从一个矩形中减去另一个矩形而创建的多边形中的最小矩形数,那么您应该能够为此,请检查第一个矩形中包含的第二个矩形中的角点数量。用伪代码:

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;
    }
}


附言-这假设矩形是轴对齐的,但据我所知,MKRects就是这种情况

10-08 12:07