Я суміш 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 або вбудовування коду в контролер перегляду, може бути простіше використовувати це в декількох контролерах перегляду, і це також може бути простіше для модульного тесту.