Попытка заставить работать оверлей MKPolygon - PullRequest
3 голосов
/ 19 августа 2010

Пытаюсь выяснить, работает ли этот МК Полигон.Я создал целую кучу MKMapPoints и поместил их в массив.Затем я делаю из них полигон с помощью:

[MKPolygon polygonWithPoints:pointArr count:sqlite3_column_int(countStatement, 0)];

и добавляю его в массив для последующего получения.

Позже я перебираю массив и добавляю каждый объект (MKPolygon)map с:

[mapView addOverlay:[overlays objectAtIndex:i]];

И это, согласно журналам, работает нормально.

Затем я реализую mapView: viewForOverlay: примерно так

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MKOverlayView *theOverlayView = nil;
for (MKPolygon *theOverlay in overlays) {
    if (theOverlay == overlay) {
        MKPolygonView *thePolygonView = [[[MKPolygonView alloc] initWithPolygon:theOverlay] autorelease];
        theOverlayView = thePolygonView;

    }
}
return theOverlayView;
}

Насколько я вижуэто должно технически работать.Но это не так, приложение просто аварийно завершает работу, когда попадает в область карты, на которой, как мне кажется, он включен (точки могут быть неправильными из-за ошибки смешения длинных позиций или конверсии, но это другое дело)

Яотсутствует какое-то свойство, которое мне нужно установить, или неправильные точки могут вызвать сбой?Или я упускаю это полностью?

Приветствия за любую помощь.

1 Ответ

3 голосов
/ 16 сентября 2010

Это было на самом деле правильно, но я допустил ошибку, вложив в оверлеи больше, чем запомнил, - это был фактически массив словарей, в котором хранились MKPolygon и строка.Исправив это, оно заработало.

...