【问题标题】:Creating a new MKPolygon from two intersecting polygons从两个相交的多边形创建一个新的 MKPolygon
【发布时间】:2013-05-14 15:48:51
【问题描述】:

我知道有一个具体的问题在讨论这个问题,但它有点老了,如果可能的话,我想获得更多的技术知识。

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

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

显然这会变得很棘手,因为您并不总是会在每个多边形的路径上找到与另一个多边形路径上的其他点完全相交的精确点。正如您从这个屏幕截图中看到的那样,为了使这成为可能,我认为,我需要将点恢复到它们相交的位置。

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

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

【问题讨论】:

标签: ios intersection mkpolyline mkpolygon


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      经过几天的调查,这是我为 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 的框架!

      【讨论】:

      • 不需要这些步骤。你只需要在你的 podfile 中添加相关的 pod,更新 pod 并将库导入到你的 swift 文件中。我刚刚测试过它,它可以工作。
      猜你喜欢
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 2017-01-20
      • 2017-07-05
      • 2018-03-09
      • 1970-01-01
      相关资源
      最近更新 更多