/ / MKMapView накладання на фіксовані індекси - ios, mkmapview, mkoverlay

Накладання MKMapView на фіксовані індекси - ios, mkmapview, mkoverlay

Я суміш MKCircle, MKPolygon і MKPolyline накладання, які я хочу відображати в певному порядку. Ці накладання не завжди створюються одночасно, але коли вони створюються, вони повинні з'являтися нижче / над іншими накладаннями.

[self.mapview insertOverlay:example1 atIndex:6];

накладає накладення в кінці списку, але не на шар 6, якщо на даний момент це лише 2 накладання.

[self.mapview insertOverlay:example2 atIndex:5];

це один я хочу бути вище example1 але так, що один отримав 3, example2 тепер внизу.

Я думаю про те, які накладки створені, а потім створити масив і натиснути їх усі addOverlays, не впевнений, скільки результатів удару він дасть.

Чи є вони якісь розумні способи, як це можна зробити?

ура, тард

Відповіді:

1 для відповіді № 1

Коли потрібно більше структурованого управлінняанотації або накладання, ви хочете розглянути можливість введення окремого набору структур даних для представлення вашої організаційної моделі (аналогічно тому, як можна керувати джерелом даних UITableView). Об'єкт-помічник або підклас MKMapView може працювати; Я віддаю перевагу першому.

У вашому випадку, можливо, масив масивівроботи. Масив верхнього рівня представляє кожен логічний "шар". Кожен елемент у цьому масиві - це масив накладок на цьому шарі. Ці структури даних повинні належати, як приватні члени вашого допоміжного класу, разом зі слабким посиланням або виходом до об'єкта MKMapView. Надають способи додавання / видалення накладок, наприклад addOverlay:atLayer: і removeOverlay:, або множинні варіанти, які приймають масивинакладання. Допоміжний клас спочатку додасть ці накладання до відповідного підшару "шару". Потім, підсумовуючи підрахунок масивів в інших шарах, він може обчислити правильне значення індексу для використання в insertOverlay:atIndex: повідомлення, яке ви надсилаєте в MKMapView.

Я не думаю, що буде значне враження на продуктивність або використання пам'яті.

Маючи окремий допоміжний клас замість aпідклас MKMapView або вбудовування коду в контролер перегляду, може бути простіше використовувати це в декількох контролерах перегляду, і це також може бути простіше для модульного тесту.