由于偶数填充规则,具有重叠interiorPolygons的MKPolygon显示不正确

时间:2014-08-07 01:34:00

标签: ios iphone mapkit

我正在尝试为地图设置“战争迷雾”类型效果。

我正在使用带有一个interiorPolygons数组的MKPolygon类(灰色区域)来显示剪切部分。

var points = [MKMapPointMake(centerPoint.x - (accuracy * squareOffset), centerPoint.y - (accuracy * squareOffset)),
            MKMapPointMake(centerPoint.x + (accuracy * squareOffset), centerPoint.y - (accuracy * squareOffset)),
            MKMapPointMake(centerPoint.x + (accuracy * squareOffset), centerPoint.y + (accuracy * squareOffset)),
            MKMapPointMake(centerPoint.x - (accuracy * squareOffset), centerPoint.y + (accuracy * squareOffset))]

var polygon = MKPolygon(points: &points, count: 4, interiorPolygons: cutouts)

现在,我的搜索结果如下:

https://www.dropbox.com/s/hk94jmybc4iqti0/Screen%20Shot%202014-08-06%20at%209.31.29%20PM.png

问题是interiorPolygons中重叠的MKPolgyons默认回到原始的灰色。

应该是正确的行为(我在油漆中做得不完善):

https://www.dropbox.com/s/izc8umm28t4ggf9/Screen%20Shot%202014-08-06%20at%209.07.27%20PM.png

我的第一个问题:如何将interiorPolygons的重叠颜色设置为透明?

第二个问题:对于interiorPolygons,有没有办法使用MKCircle而不是MKPolygons?我认为效果会像圆圈而不是矩形一样好看。

修改 我在文档中挖了更多,发现了这个:

“创建多边形时,可以通过指定一个或多个内部多边形来遮罩多边形的某些部分。对于您指定的多边形,此类使用奇偶填充规则来确定最终占用区域。如果重叠多边形,此规则可能会导致特定区域被掩盖掉(从而从总占用区域中移除)。有关如何将填充规则应用于路径的更多信息,请参阅“Quartz 2D编程指南”中的路径。“

这使我得到了说:

的文档

CGContextFillPath 使用非零绕组编号规则填充当前路径。

我需要使用非零绕组数规则而不是奇数,但我不是100%确定如何做到这一点。

谢谢! 乔恩

0 个答案:

没有答案