我有一个数组,其中的多边形是从一个数据文件创建的,每个多边形都有坐标。
所以当我在我的 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,依此类推。所以最后几个多边形不再“透明”。
这是它的样子:
最佳答案
根据问题描述和图片,听起来您多次添加相同的多边形,因此它会与自身重叠。
当叠加层重叠时, map View 会将它们的颜色混合在一起,从而产生更暗的外观。
如果 polygonArray
本身包含独特的多边形,但 addOverlays
被多次调用,如果现有 map 上的多边形已包含在 polygonArray
中。
另一种可能性是 polygonArray
本身包含重复的多边形。
即使只调用一次 addOverlays
, map 也会添加同一多边形的多个实例,导致这些叠加层自身重叠,使它们的颜色比预期的更深。
要解决此问题,您应该消除 polygonArray
中的重复项。
关于ios - 来自数组的多个多边形叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17434858/