Несколько наложений полигонов из массива

У меня есть массив с полигонами, созданными из файла данных с координатами на полигон.

Поэтому, когда я рисую их на своей карте, я использую:

[mapView addOverlays:polygonArray];

и на мой взгляд ForOverlay:

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" код, похоже, повторно использует и воссоздает polyView для каждого Polygon. Поэтому первый из них имеет альфа 0,1, а второй - 2х и т. Д. Таким образом, последние несколько полигонов больше не являются "сквозными".

Вот как это выглядит:

1 ответ

Решение

Судя по описанию проблемы и изображению, кажется, что вы добавляете один и тот же полигон несколько раз, поэтому он перекрывается с самим собой.

Когда наложения перекрываются, представление карты смешивает их цвета, что приводит к более темному виду.


Если polygonArray содержит уникальные многоугольники, но addOverlays вызывается несколько раз, вы должны позвонить removeOverlays до addOverlays если существующие многоугольники на карте уже включены в polygonArray,


Другая возможность заключается в том, что polygonArray Сам содержит дубликаты полигонов.
Даже если addOverlays вызывается только один раз, карта добавляет несколько экземпляров одного и того же многоугольника, в результате чего эти наложения перекрываются, давая им более темный цвет, чем ожидалось.

Чтобы это исправить, вы должны устранить дублирование в polygonArray,

Другие вопросы по тегам