阵列中的多个多边形叠加层

时间:2013-07-02 20:04:45

标签: ios mkmapview mkoverlay mkpolygon mkpolygonview

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

因此,当我在地图上绘制它们时,我使用:

[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”,代码似乎重用并为每个Polygon重新创建polyView。因此,第一个是alpha 0.1,但第二个是2x,依此类推。所以最后几个多边形不再是“seethrough”了。

以下是它的外观:

enter image description here

1 个答案:

答案 0 :(得分:1)

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

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


如果polygonArray本身包含唯一多边形但多次调用addOverlays,则如果地图上现有的多边形已包含在removeOverlays中,则应在addOverlays之前调用polygonArray }。


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

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