ios - 来自数组的多个多边形叠加

标签 ios mkmapview mkoverlay mkpolygon mkpolygonview

我有一个数组,其中的多边形是从一个数据文件创建的,每个多边形都有坐标。

所以当我在我的 map 上绘制它们时,我使用:

[mapView addOverlays:polygonArray];

在我的 viewForOverlay 中:

if ([overlay isKindOfClass:[MKPolygon class]]) {
    MKPolygonView *polyView = [[MKPolygonView alloc] initWithPolygon:overlay];
    polyView.fillColor = [[UIColor redColor] colorWithAlphaComponent:0.1];
    polyView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.1];
    polyView.lineWidth = 1;
    return polyView;
  }
else {
  return nil;
}

问题是关于我的“colorWithAlphaComponent”,代码似乎为每个多边形重用和重新创建多边形 View 。因此,第一个是 alpha 0.1,第二个是 2x,依此类推。所以最后几个多边形不再“透明”。

这是它的样子:

enter image description here

最佳答案

根据问题描述和图片,听起来您多次添加相同的多边形,因此它会与自身重叠。

当叠加层重叠时, map View 会将它们的颜色混合在一起,从而产生更暗的外观。


如果 polygonArray 本身包含独特的多边形,但 addOverlays 被多次调用,如果现有 map 上的多边形已包含在 polygonArray 中。


另一种可能性是 polygonArray 本身包含重复的多边形。
即使只调用一次 addOverlays, map 也会添加同一多边形的多个实例,导致这些叠加层自身重叠,使它们的颜色比预期的更深。

要解决此问题,您应该消除 polygonArray 中的重复项。

关于ios - 来自数组的多个多边形叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17434858/

相关文章:

ios 8 UIIMagePickerController 在 iPhone 6 中交替显示黑色预览屏幕

objective-c - MKAnnotation 未在 MKMapView 上显示标注

ios - MKMapView 重新加载问题

iphone - 重绘MKAnnotationView

Swift 2 MKMapViewDelegate rendererForOverlay 编译警告

ios - 如何在 Origami Studio 上导出代码

iphone - iTunes App 被拒绝

ios - objective C下划线变量和自变量不同

ios - 如何在委托(delegate)函数中处理多个 MKOverlays