从两个相交的多边形创建一个新的MKPolygon

时间:2013-05-14 15:48:52

标签: ios intersection mkpolyline mkpolygon

我知道有一个具体的问题可以解释这个问题,但它有点老了,如果可能的话,我想更多地了解它。

首先看一下这个截图:https://www.dropbox.com/s/f94q3qaxrog0ec9/intersections.png

我想要发生的事情就是说“我看到它们相交的地方和发生的地方我不想绘制多边形的那些'部分'”。在这种情况下,我想绘制两个多边形,但不绘制橙色多边形内的黄色多边形的“路径”。这不仅包括线条,还包括填充颜色。

显然这很棘手,因为你并不总是沿着每个多边形的路径有精确的点,这些点与另一个多边形路径上的其他点完全相交。正如你从这个截图中看到的那样,为了使这成为可能,我认为,我需要将它们返回到相交的位置。

在那之后并假设我可以这样做,我不知道是否有办法使用CGPathRef类来做我需要做的事情。显然我将重新创建一个多边形,但根据文档你不能填写它,除非它是一个封闭的路径。那么如何在不关闭路径的情况下填充不相互影响的多边形?

我唯一能想到的就是“隐藏”相交的多边形部分,但不确定如何做到这一点。任何人都可以对这个问题提供任何帮助/见解吗?

3 个答案:

答案 0 :(得分:2)

你走了。我在Alan的GPC库周围编写了一个Objective-C包装器。查看MKPolygon-GPC

答案 1 :(得分:0)

好的伙计们!好吧,我开始创建自己的MKPolygon类别来解决我需要解决的问题。我希望它对其他人也有用!

github链接是:https://github.com/geeksweep/MKPolygon-GSPolygonIntersections

答案 2 :(得分:0)

经过几天的调查,这是我为 Swift 4 找到的解决方案:

1)转到here并克隆项目

2)将以下内容拖放到您的项目中:

-MKPolygon + GPC.m

-MKPolygon + GPC.h

-gpc232(文件夹)

3)创建桥接标头(here is a tutorial

4)打开桥接头文件并添加以下内容:

#import "MKPolygon+GPC.h"

5)在您的 View Controller 中,使用此方法合并两个多边形:

let mergedPolygon = polygon1.fromUnion(with:polygon2) 

注意:当前库中发生了崩溃,我已修复它,但我正在等待我的请求请求进行审查。感谢SunGard-Labs提供的框架!