5. Задача
• Анімована кластеризація об'єктів на карті
додатку
• Реалізація кластеризації з підтримкою
GooglMapsSDK.
6. Існуючі рішення в iOS
• Superpin - швидкий і платний, без анімації
• Kingpin - безкоштовний, з підтримкою анімації,
але повільний і трохи глючний
• DTClusterMaker - також платний
Основна проблема: відсутність
підтримки GoogleMapsSDK
7. Методи кластеризації
• Метод k-середніх (групування по мінімальному
сумарному квадратичному відхиленню від
центру кластеру)
• Групування по сітці (розбиття видимої області
на регіони, формування кластерів з їх вмісту)
9. Метод k-середніх
• На практиці повільний
• Складність виконання анімації, маркерів
10. Кластериація за допомогою
групування об'єктів по сітці
• Формування нових кластерів при переміщенні
карти.
• Анімація кластерів
• Видалення старих кластерів
розкажу про відображення великої кількості маркерів на картах мобільного додатку.
до 500 маркерів - норм
якщо більше - будуть тупняки. картою з 5 тисячами об'єктів користуватись вже зовсім не мжливо навіть на найновіших моделях телефонів.
Отже головним партнером даної презентації є
За для демонстрації кластеризації всі користуються списком всіх аеропортів у світі. Я вирішив відобразити на карті всі макдональдси найбільших 256 міст америки. ЇХ виявилось близько 10 тисяч. Отже перший приклад без кластеризації для тих хто ще не до кінця зрозумів її сенс.
Почалось це трохи більше року тому
k-means
Необхідність прив'язки сітки не до видмої області екрану а до глобальної системи координат.
Вкладені цикли.
Ми проходим список маркерів 49 разів.
При 10 тис маркерів це близбко 500тис. перевірок.
Схожим чином була реалізована вибірка кластерів на KingPin.
Цим методом можна користуватись коли на карті до 5 тис маркерів.
Словник (колекція ключ-значення)
Для кожного (видомого) маркера визначаєм рядок і стовбець в сітці
Таким чином можна більш менш комфортно користуватись картою з 10 тис маркерів.
Хоча при нафігацій при найбільш віддаленому зумі все одно трошки відчувається пригальмовування
Перебираєм всі нові і старі кластери. В цьому циклі шукаєм відповідності.
Три варіанта:
кластери еквівалентні (тоді нічого не робимо)