Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹ с мноТСством ΠΌΠ΅Ρ‚ΠΎΠΊ β€” это стандарт Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ для соврСмСнных досок объявлСний, сСрвисов Π°Ρ€Π΅Π½Π΄Ρ‹ нСдвиТимости ΠΈ логистичСских ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ открываСтся ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° с Ρ„ΠΎΡ‚ΠΎ ΠΈ Ρ†Π΅Π½ΠΎΠΉ, Π° ΠΏΡ€ΠΈ Π·ΡƒΠΌΠ΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² Π³Ρ€ΡƒΠΏΠΏΡ‹, Π½Π΅ создавая Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΡˆΡƒΠΌΠ°. РСализация Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания Ρ€Π°Π±ΠΎΡ‚Ρ‹ с гСопространствСнными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ API картографичСских сСрвисов.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ Авито НСдвиТимости ΠΈΠ»ΠΈ ΠΊΠ°Ρ€Ρ‚Π°ΠΌ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ². ΠœΡ‹ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅ΠΌ вопросы Π²Ρ‹Π±ΠΎΡ€Π° поставщика ΠΊΠ°Ρ€Ρ‚, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ кластСризации тысяч ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π»Π΅Ρ‚Ρƒ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° DOM-элСмСнтов. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΈΡ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π² дСсятки тысяч ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

Основной ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ здСсь являСтся Π½Π΅ просто ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚Ρ‹, Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм интСрфСйса. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΊΠ°Ρ€Ρ‚Ρƒ, систСма Π΄ΠΎΠ»ΠΆΠ½Π° ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ (bounds) ΠΈ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ запросов ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² сСрвСра β€” ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ рассмотрим Π½ΠΈΠΆΠ΅.

Π’Ρ‹Π±ΠΎΡ€ картографичСского Π΄Π²ΠΈΠΆΠΊΠ° ΠΈ API

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ являСтся Π²Ρ‹Π±ΠΎΡ€ тСхнологичСской основы. Для российского сСгмСнта Ρ€Ρ‹Π½ΠΊΠ° Π±Π΅Π·Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Π»ΠΈΠ΄Π΅Ρ€ΠΎΠΌ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ЯндСкс.ΠšΠ°Ρ€Ρ‚Ρ‹ API благодаря Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Однако для ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ спСцифичСских Π·Π°Π΄Π°Ρ‡ часто Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Google Maps Platform ΠΈΠ»ΠΈ open-source Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²Ρ€ΠΎΠ΄Π΅ Leaflet с Ρ‚Π°ΠΉΠ»Π°ΠΌΠΈ OpenStreetMap.

КаТдоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности лицСнзирования ΠΈ Π»ΠΈΠΌΠΈΡ‚ΠΎΠ². НапримСр, бСсплатныС Ρ‚Π°Ρ€ΠΈΡ„Ρ‹ часто ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ количСство запросов Π² сутки ΠΈΠ»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‚ коммСрчСскоС использованиС Π±Π΅Π· ΠΎΠΏΠ»Π°Ρ‚Ρ‹. Π’Π°ΠΆΠ½ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ ΡΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ взаимодСйствиС с ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ (pan, zoom) Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ запросов.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании бСсплатных вСрсий API ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π»ΠΈΠΌΠΈΡ‚Ρ‹ запросов Π½Π° сторонС вашСго бэкСнда, ΠΈΠ½Π°Ρ‡Π΅ счСт Π·Π° сСрвис ΠΌΠΎΠΆΠ΅Ρ‚ нСприятно ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ мСсяца.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°"ΠΊΠ°ΠΊ Π½Π° Авито" критичСски Π²Π°ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° кластСризации"ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ". Π’ ЯндСкс.ΠšΠ°Ρ€Ρ‚Ρ‹ для этого сущСствуСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒ clusterer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΈΠ·Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΊΠΈ. Π’ Google Maps Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‡Π΅Ρ€Π΅Π· MarkerClusterer, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

πŸ“Š Какой картографичСский сСрвис Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?
ЯндСкс.ΠšΠ°Ρ€Ρ‚Ρ‹ API
Google Maps API
OpenStreetMap (Leaflet)
2GIS API
Π”Ρ€ΡƒΠ³ΠΎΠ΅

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ структура JSON

ЭффСктивная Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠ°Ρ€Ρ‚Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° являСтся JSON. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠ΅Ρ‚ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ максимально лСгковСсной, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° содСрТит ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, ΠΏΡ€Π΅Π²ΡŒΡŽ изобраТСния ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

НС стоит ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ HTML-ΠΊΠΎΠ΄ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ JSON-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ прСдставлСния. Π›ΡƒΡ‡ΡˆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ raw-Π΄Π°Π½Π½Ρ‹Π΅ (ID Ρ‚ΠΎΠ²Π°Ρ€Π°, Ρ†Π΅Π½Ρƒ, адрСс), Π° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ HTML-шаблона Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (frontend) с использованиСм ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ€ΠΎΠ΄Π΅ Handlebars ΠΈΠ»ΠΈ встроСнных ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² React / Vue.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ структуры Π΄Π°Π½Π½Ρ‹Ρ… для ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΈ:

{

"id": 12345,

"lat": 55.751244,

"lon": 37.617722,

"price":"12 500 000 β‚½",

"title":"2-ΠΊ. ΠΊΠ²., 54 ΠΌΒ²",

"image":"/img/apt_123_thumb.jpg",

"isFavorite": false

}

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ тяТСлыС рСсурсы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΊΠ° становится Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ Π² области просмотра ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎ сущСствСнно ускоряСт ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ страницы.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ WebP для ΠΏΡ€Π΅Π²ΡŒΡŽ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΌΠ΅Ρ‚ΠΊΠ°Ρ… β€” это ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ ΠΈΡ… вСс Π½Π° 30-40% Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ качСства Π½Π° экранах высокой плотности.

РСализация кластСризации ΠΌΠ΅Ρ‚ΠΎΠΊ

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ β€” это процСсс объСдинСния сосСдних ΠΌΠ΅Ρ‚ΠΎΠΊ Π² ΠΎΠ΄Π½Ρƒ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΏΡ€ΠΈ ΠΌΠ°Π»ΠΎΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹. На Авито это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ блСстящС: вмСсто тысяч Ρ‚ΠΎΡ‡Π΅ΠΊ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹Π΅ ΠΊΡ€ΡƒΠΆΠΊΠΈ с Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ. ΠŸΡ€ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ (zoom in) кластСры"Ρ€Π°ΡΠΏΠ°Π΄Π°ΡŽΡ‚ΡΡ" Π½Π° мСньшиС Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π² Yandex Maps API ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ класс ymaps.Clusterer. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΎΠΏΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ кластСра ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π’Π°ΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ gridSize, Ρ‡Ρ‚ΠΎΠ±Ρ‹ кластСры Π½Π΅ Π±Ρ‹Π»ΠΈ слишком большими ΠΈΠ»ΠΈ ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ.

  • πŸ”Ή НастройтС ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π·ΡƒΠΌ, начиная с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ кластСризация ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ.
  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ кастомныС ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹ (layouts) для кластСров, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π»ΠΈΡΡŒ ΠΎΡ‚ стандартных синих ΠΊΡ€ΡƒΠΆΠΊΠΎΠ² ΠΈ соотвСтствовали Π±Ρ€Π΅Π½Π΄ΠΈΠ½Π³Ρƒ.
  • πŸ”Ή Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ Π»ΠΎΠ³ΠΈΠΊΡƒ"супСр-кластСризации": Ссли Π² кластСрС всСго ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ сразу Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΊΡƒ, Π° Π½Π΅ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта.

Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ кластСризатора строится Π½Π° Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹ Π½Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ячСйки. ВсС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ Π² ΠΎΠ΄Π½Ρƒ ячСйку, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ. ΠŸΡ€ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹ ячСйки ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эффСктивный ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ дСсятки тысяч Ρ‚ΠΎΡ‡Π΅ΠΊ Π±Π΅Π· Π»Π°Π³ΠΎΠ².

β˜‘οΈ Π§Π΅ΠΊ-лист настройки кластСризации

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

ΠšΠ°ΡΡ‚ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΈ Π±Π°Π»ΡƒΠ½ΠΎΠ²

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅"Π±ΡƒΠ»Π°Π²ΠΊΠΈ" картографичСских сСрвисов выглядят скучно ΠΈ Π½Π΅ нСсут ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. На Авито ΠΌΠ΅Ρ‚ΠΊΠ° сразу ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ Ρ„ΠΎΡ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ повСдСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Custom Placemark ΠΈΠ»ΠΈ собствСнныС ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹ (custom layouts).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ HTML ΠΈ CSS прямо Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΌΠ΅Ρ‚ΠΊΠΈ. Π­Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС интСрфСйсы: ΠΊΠ½ΠΎΠΏΠΊΠΈ"Π˜Π·Π±Ρ€Π°Π½Π½ΠΎΠ΅", слайдСры Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ статуса прямо Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅. Однако стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ каТдая такая ΠΌΠ΅Ρ‚ΠΊΠ° β€” это DOM-элСмСнт, ΠΈ ΠΈΡ… ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€.

Π’ΠΈΠΏ ΠΌΠ΅Ρ‚ΠΊΠΈ Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ВлияниС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Бтандартная (Icon) Низкая МинимальноС ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ интСрСса
HTML-ΠΌΠ°ΠΊΠ΅Ρ‚ (Layout) БрСдняя Π‘Ρ€Π΅Π΄Π½Π΅Π΅ ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Ρ†Π΅Π½Ρ‹
Canvas/SVG Ρ€Π΅Π½Π΄Π΅Ρ€ Высокая ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ для тысяч ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π’Π΅ΠΏΠ»ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹, слоТныС Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ
3D-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠžΡ‡Π΅Π½ΡŒ высокая ВысокоС Π‘ΠΏΠ΅Ρ†ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, визуализация Π·Π΄Π°Π½ΠΈΠΉ

ΠŸΡ€ΠΈ создании Π±Π°Π»ΡƒΠ½Π° (Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅) Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ Π²Π½Π΅ области ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΈ. Π’Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ являСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ истории посСщСнных ΠΌΠ΅Ρ‚ΠΎΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ"Назад".

Π‘Π΅ΠΊΡ€Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ HTML-ΠΌΠ΅Ρ‚ΠΎΠΊ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ CSS-свойство contain: strict для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠΊ. Π­Ρ‚ΠΎ сообщаСт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ содСрТимоС ΠΌΠ΅Ρ‚ΠΊΠΈ Π½Π΅ влияСт Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ страницы, Ρ‡Ρ‚ΠΎ позволяСт Π΄Π²ΠΈΠΆΠΊΡƒ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ пСрСрисовку.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Lazy Loading

Когда Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ отобраТаСтся Π±ΠΎΠ»Π΅Π΅ 1000 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ трудности. Основная Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° лоТится Π½Π° DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈ JavaScript-ΠΏΠΎΡ‚ΠΎΠΊ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°Ρ€Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° ΠΏΠ»Π°Π²Π½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Lazy Loading (Π»Π΅Π½ΠΈΠ²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ).

Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° проста: Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠΉ области, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²ΠΈΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ (viewport). ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹ (событиС boundschange) отправляСтся запрос Π½Π° сСрвСр с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Π‘Π΅Ρ€Π²Π΅Ρ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² этот ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π½Π° бэкСндС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π³Π΅ΠΎ-индСксы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PostGIS для PostgreSQL ΠΈΠ»ΠΈ Π³Π΅ΠΎ-поиск Π² Elasticsearch. Запрос выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ: Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡ΡŒΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ находятся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ области.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ пиксСльном сдвигС ΠΊΠ°Ρ€Ρ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ дСбаунса (debounce) ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΎΡ‚Ρ‚Π»ΠΈΠ½Π³Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ запрос Π½Π΅ Ρ‡Π°Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π° Π² 300-550 мс послС окончания двиТСния.

Π’Π°ΠΊΠΆΠ΅ стоит Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запросов Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ вСрнСтся Π² ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ ΠΈΠ· памяти, Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ сСти. Π­Ρ‚ΠΎ создаст ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ интСрфСйса.

πŸ’‘

ЛСнивая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² сочСтании с сСрвСрной Π³Π΅ΠΎ-индСксациСй β€” СдинствСнный способ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠ°Ρ€Ρ‚Ρ‹ с ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Π΅Π· Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΎΠ².

Мобильная адаптация ΠΈ UX

На ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах пространство экрана ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ, Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Π»ΡŒΡ†Π΅ΠΌ ΠΌΠ΅Π½Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅, Ρ‡Π΅ΠΌ ΠΌΡ‹ΡˆΡŒΡŽ. ΠšΠ°Ρ€Ρ‚Π°"ΠΊΠ°ΠΊ Π½Π° Авито" Π΄ΠΎΠ»ΠΆΠ½Π° идСально Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° смартфонах. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ Ρ‚Π°Ρ‡-Π·ΠΎΠ½Ρ‹ для ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π±Π°Π»ΡƒΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ вСсь экран.

Часто Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: слСва (ΠΈΠ»ΠΈ свСрху) находится список ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° справа (ΠΈΠ»ΠΈ снизу) β€” ΠΊΠ°Ρ€Ρ‚Π°. ΠŸΡ€ΠΈ скроллС списка ΠΊΠ°Ρ€Ρ‚Π° автоматичСски прокручиваСтся ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠ΅Ρ‚ΠΊΠ΅, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ синхронизации состояния списка ΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹.

  • πŸ“± Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅"ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠ΅" ΠΊΠ½ΠΎΠΏΠΊΠΈ управлСния Π·ΡƒΠΌΠΎΠΌ ΠΈ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠ΅ΠΉ, доступныС ΠΏΠΎΠ΄ большим ΠΏΠ°Π»ΡŒΡ†Π΅ΠΌ.
  • πŸ“± Π‘ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ лишниС Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠΊ Π½Π° малСньком Π·ΡƒΠΌΠ΅, оставляя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ Π½ΠΎΠΌΠ΅Ρ€ Π΄ΠΎΠΌΠ°.
  • πŸ“± ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΡŒΡ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ свайпов для закрытия ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ крСстик Π½Π° малСньком экранС Π½Π°ΠΆΠ°Ρ‚ΡŒ слоТно.

Π’Π°ΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² сСтях 3G/4G с Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ сигналом. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΉΠ»Ρ‹ ΠΊΠ°Ρ€Ρ‚ ΠΈ сТатыС JSON-ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ сСрвСра ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π΄Π°ΠΆΠ΅ Ссли связь ΡƒΡ…ΡƒΠ΄ΡˆΠΈΡ‚ΡΡ.

ВСстированиС Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… устройствах ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Эмуляторы Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π½Π΅ всСгда ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚Π°Ρ‡-интСрфСйсов ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ отрисовки Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… GPU.

ΠšΠ°ΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для React/Vue?

Для React ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ являСтся @react-google-maps/api для Google Maps ΠΈΠ»ΠΈ @pbe/react-yandex-maps для ЯндСкса. Они ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΊΠ°Ρ€Ρ‚Ρ‹. Для Vue ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, vue-yandex-maps.

МоТно Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ бСсплатно?

ВСхничСски Π΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ OpenStreetMap ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Leaflet. Однако Π²Π°ΠΌ потрСбуСтся свой сСрвСр Ρ‚Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ использованиС ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… (Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ). Для коммСрчСского ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с высокими трСбованиями ΠΊ надСТности Π»ΡƒΡ‡ΡˆΠ΅ Π·Π°Π»ΠΎΠΆΠΈΡ‚ΡŒ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ Π½Π° API ЯндСкс ΠΈΠ»ΠΈ Google.

Как ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Ссли API ΠΊΠ°Ρ€Ρ‚ нСдоступСн?

ВсСгда прСдусматривайтС fallback-Ρ€Π΅ΠΆΠΈΠΌ. Если скрипт ΠΊΠ°Ρ€Ρ‚Ρ‹ Π½Π΅ загрузился (Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡΠ΅Ρ‚ΡŒΡŽ), ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ статичноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠ»ΠΈ просто список адрСсов с тСкстовыми ссылками, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» сайта Π½Π΅ ломался ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ.