我有一个数组,其中包含从具有每个多边形坐标的数据文件创建的多边形。
因此,当我在地图上绘制它们时,我使用:
[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”了。
以下是它的外观:
答案 0 :(得分:1)
根据问题描述和图片,听起来好像是多次添加相同的多边形,因此它会与自身重叠。
当叠加层重叠时,地图视图会将它们的颜色混合在一起,从而产生更暗的外观。
如果polygonArray
本身包含唯一多边形但多次调用addOverlays
,则如果地图上现有的多边形已包含在removeOverlays
中,则应在addOverlays
之前调用polygonArray
}。
另一种可能性是polygonArray
本身包含重复的多边形
即使只调用addOverlays
一次,地图也会添加同一多边形的多个实例,导致这些叠加重叠,使它们的颜色比预期的颜色更深。
要解决此问题,您应该消除polygonArray
中的重复。