MKPolygon带孔

5
我在互联网上搜索了一下,但是没有找到答案。是否可以在MKPolygon中画一个洞?就像这样的东西:
我记得我看到过类似的东西,但我不确定它是否与iOS有关。是否可以实现这个功能(如果可以),我应该如何开始?
谢谢
2个回答

8
为了正确地完成这个任务,你应该仔细查看MKPolygoninteriorPolygons部分。

2
正如 @incanus 指出的那样,您可以定义一个 interiorPolygons 数组。例如:
NSUInteger interiorCount = 5;
CLLocationCoordinate2D interiorCoordinates[interiorCount];

interiorCoordinates[0] = CLLocationCoordinate2DMake(...);
interiorCoordinates[1] = CLLocationCoordinate2DMake(...);
interiorCoordinates[2] = CLLocationCoordinate2DMake(...);
interiorCoordinates[3] = CLLocationCoordinate2DMake(...);
interiorCoordinates[4] = CLLocationCoordinate2DMake(...);

MKPolygon* interiorPolygon = [MKPolygon polygonWithCoordinates:interiorCoordinates
                                                         count:interiorCount];
interiorPolygon.title = @"interior polygon";

NSUInteger count = 5;
CLLocationCoordinate2D  coordinates[count];

coordinates[0] = CLLocationCoordinate2DMake(...);
coordinates[1] = CLLocationCoordinate2DMake(...);
coordinates[2] = CLLocationCoordinate2DMake(...);
coordinates[3] = CLLocationCoordinate2DMake(...);
coordinates[4] = CLLocationCoordinate2DMake(...);

MKPolygon* polygon = [MKPolygon polygonWithCoordinates:coordinates
                                                 count:count
                                      interiorPolygons:@[interiorPolygon]];

polygon.title = @"exterior polygon";
[self.mapView addOverlay:polygon];

那样会得到: 内部多边形叠加 感谢 @incanus!

有没有办法添加一个圆角孔? - Andrespch
当然,你可以用一个多边形代替interiorPolygon。如果它有足够的面(例如60、90、120等),我认为它在视觉上将与圆形难以区分。但是,不,我看不到使用MKCircle来代替interiorPolygons的方法。 - Rob
你能让内部的多边形有颜色吗?反转你所做的操作? - Igal Flegmann
@pudm - 只需为中心添加另一个多边形即可。 - Rob
@Rob 我的意思是只在一个主多边形内部放置多边形,就像孔洞一样,除了多边形以外的所有东西都要删除。 - Igal Flegmann
我不明白你的意思。你应该创建一个图形表示来阐述你的想法,然后发表自己的问题,而不是在这里评论问。 - Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接