SlideShare una empresa de Scribd logo
1 de 26
Тисячі об'єктів на карті 
мобільного додатку. 
Кластеризація в iOS.
Навіщо воно мені 
здалось??
Задача 
• Анімована кластеризація об'єктів на карті 
додатку
Задача 
• Анімована кластеризація об'єктів на карті 
додатку 
• Реалізація кластеризації з підтримкою 
GooglMapsSDK.
Існуючі рішення в iOS 
• Superpin - швидкий і платний, без анімації 
• Kingpin - безкоштовний, з підтримкою анімації, 
але повільний і трохи глючний 
• DTClusterMaker - також платний 
Основна проблема: відсутність 
підтримки GoogleMapsSDK
Методи кластеризації 
• Метод k-середніх (групування по мінімальному 
сумарному квадратичному відхиленню від 
центру кластеру) 
• Групування по сітці (розбиття видимої області 
на регіони, формування кластерів з їх вмісту)
Метод k-середніх
Метод k-середніх 
• На практиці повільний 
• Складність виконання анімації, маркерів
Кластериація за допомогою 
групування об'єктів по сітці 
• Формування нових кластерів при переміщенні 
карти. 
• Анімація кластерів 
• Видалення старих кластерів
Визначення розміру видимої 
області
Пошук лівого нижнього кута
Побудова кластерів
Дуже повільно...
Трошки оптимізовуєм
Знову створюєм кластери
Вже швидше!
А якщо ще більше 
об'єктів?!
Квадратичне дерево
Квадратичне дерево
Квадратичне дерево 
• Набагато швидший процес формування 
кластерів при навігації 
• Потрібно більше часу на початку для побудови 
дерева
Анімація маркерів
Новий кластер є частиною 
старого кластера
Старий кластер є частиною 
нового кластера
Дякую за увагу! 
Запитання?
• tiko@stfalcon.com 
• https://github.com/utiko/ClusterTest

Más contenido relacionado

Más de Stfalcon Meetups

Design of the_future_30_05_2019
Design of the_future_30_05_2019Design of the_future_30_05_2019
Design of the_future_30_05_2019Stfalcon Meetups
 
Global sales - a few insights
Global sales - a few insightsGlobal sales - a few insights
Global sales - a few insightsStfalcon Meetups
 
How to build your own startup
How to build your own startupHow to build your own startup
How to build your own startupStfalcon Meetups
 
Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом Stfalcon Meetups
 
Парнерство нидерланды
Парнерство нидерландыПарнерство нидерланды
Парнерство нидерландыStfalcon Meetups
 
Риси гарного менеджера
Риси гарного менеджераРиси гарного менеджера
Риси гарного менеджераStfalcon Meetups
 
Между заказчиком и разработчиком
Между заказчиком и разработчикомМежду заказчиком и разработчиком
Между заказчиком и разработчикомStfalcon Meetups
 
майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”Stfalcon Meetups
 
Kubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CDKubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CDStfalcon Meetups
 
Як ефективно працювати в мережі LinkedIn
Як ефективно працювати в мережі LinkedInЯк ефективно працювати в мережі LinkedIn
Як ефективно працювати в мережі LinkedInStfalcon Meetups
 
HR-правила на кожен день
HR-правила на кожен деньHR-правила на кожен день
HR-правила на кожен деньStfalcon Meetups
 
Не Scrum'ом єдиним: інструменти і фреймворки, які підійдуть під будь-які прое...
Не Scrum'ом єдиним: інструменти і фреймворки, які підійдуть під будь-які прое...Не Scrum'ом єдиним: інструменти і фреймворки, які підійдуть під будь-які прое...
Не Scrum'ом єдиним: інструменти і фреймворки, які підійдуть під будь-які прое...Stfalcon Meetups
 
Юридичні моменти ІСО, криптовалют і майнінгу
Юридичні моменти ІСО, криптовалют і майнінгуЮридичні моменти ІСО, криптовалют і майнінгу
Юридичні моменти ІСО, криптовалют і майнінгуStfalcon Meetups
 

Más de Stfalcon Meetups (20)

Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11
 
Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11
 
Design of the_future_30_05_2019
Design of the_future_30_05_2019Design of the_future_30_05_2019
Design of the_future_30_05_2019
 
2 5404811386729530203
2 54048113867295302032 5404811386729530203
2 5404811386729530203
 
Team evolution
Team evolutionTeam evolution
Team evolution
 
Mobile&Privacy
Mobile&PrivacyMobile&Privacy
Mobile&Privacy
 
Global sales - a few insights
Global sales - a few insightsGlobal sales - a few insights
Global sales - a few insights
 
How to build your own startup
How to build your own startupHow to build your own startup
How to build your own startup
 
Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом
 
Парнерство нидерланды
Парнерство нидерландыПарнерство нидерланды
Парнерство нидерланды
 
Риси гарного менеджера
Риси гарного менеджераРиси гарного менеджера
Риси гарного менеджера
 
Между заказчиком и разработчиком
Между заказчиком и разработчикомМежду заказчиком и разработчиком
Между заказчиком и разработчиком
 
Cv vs resume
Cv vs resumeCv vs resume
Cv vs resume
 
Vue.js
Vue.jsVue.js
Vue.js
 
майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”
 
Kubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CDKubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CD
 
Як ефективно працювати в мережі LinkedIn
Як ефективно працювати в мережі LinkedInЯк ефективно працювати в мережі LinkedIn
Як ефективно працювати в мережі LinkedIn
 
HR-правила на кожен день
HR-правила на кожен деньHR-правила на кожен день
HR-правила на кожен день
 
Не Scrum'ом єдиним: інструменти і фреймворки, які підійдуть під будь-які прое...
Не Scrum'ом єдиним: інструменти і фреймворки, які підійдуть під будь-які прое...Не Scrum'ом єдиним: інструменти і фреймворки, які підійдуть під будь-які прое...
Не Scrum'ом єдиним: інструменти і фреймворки, які підійдуть під будь-які прое...
 
Юридичні моменти ІСО, криптовалют і майнінгу
Юридичні моменти ІСО, криптовалют і майнінгуЮридичні моменти ІСО, криптовалют і майнінгу
Юридичні моменти ІСО, криптовалют і майнінгу
 

Тисячі позначок на карті мобільного додатку. Кластеризація в iOS.

Notas del editor

  1. розкажу про відображення великої кількості маркерів на картах мобільного додатку. до 500 маркерів - норм якщо більше - будуть тупняки. картою з 5 тисячами об'єктів користуватись вже зовсім не мжливо навіть на найновіших моделях телефонів. Отже головним партнером даної презентації є
  2. За для демонстрації кластеризації всі користуються списком всіх аеропортів у світі. Я вирішив відобразити на карті всі макдональдси найбільших 256 міст америки. ЇХ виявилось близько 10 тисяч. Отже перший приклад без кластеризації для тих хто ще не до кінця зрозумів її сенс.
  3. Почалось це трохи більше року тому
  4. k-means
  5. Необхідність прив'язки сітки не до видмої області екрану а до глобальної системи координат.
  6. Вкладені цикли. Ми проходим список маркерів 49 разів. При 10 тис маркерів це близбко 500тис. перевірок.
  7. Схожим чином була реалізована вибірка кластерів на KingPin. Цим методом можна користуватись коли на карті до 5 тис маркерів.
  8. Словник (колекція ключ-значення) Для кожного (видомого) маркера визначаєм рядок і стовбець в сітці
  9. Таким чином можна більш менш комфортно користуватись картою з 10 тис маркерів. Хоча при нафігацій при найбільш віддаленому зумі все одно трошки відчувається пригальмовування
  10. Перебираєм всі нові і старі кластери. В цьому циклі шукаєм відповідності. Три варіанта: кластери еквівалентні (тоді нічого не робимо)
  11. Кластери роз'їжджаються (при приближенні)
  12. Кластери з'їжджаються (при віддаленні)