Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΊΠ°ΡΡΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠ΅ΡΠΎΠΊ β ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π΅-ΡΠ°ΠΊΡΠΎ Π΄Π»Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄ΠΎΡΠΎΠΊ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ, ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π°ΡΠ΅Π½Π΄Ρ Π½Π΅Π΄Π²ΠΈΠΆΠΈΠΌΠΎΡΡΠΈ ΠΈ Π»ΠΎΠ³ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΡΡΠΎΡΠΊΠ° Ρ ΡΠΎΡΠΎ ΠΈ ΡΠ΅Π½ΠΎΠΉ, Π° ΠΏΡΠΈ Π·ΡΠΌΠ΅ ΠΊΠ°ΡΡΡ ΠΌΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² Π³ΡΡΠΏΠΏΡ, Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΌΠ°. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° ΡΡΠ΅Π±ΡΠ΅Ρ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π³Π΅ΠΎΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ API ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΠ²ΠΈΡΠΎ ΠΠ΅Π΄Π²ΠΈΠΆΠΈΠΌΠΎΡΡΠΈ ΠΈΠ»ΠΈ ΠΊΠ°ΡΡΠ°ΠΌ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ². ΠΡ Π·Π°ΡΡΠΎΠ½Π΅ΠΌ Π²ΠΎΠΏΡΠΎΡΡ Π²ΡΠ±ΠΎΡΠ° ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° ΠΊΠ°ΡΡ, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° Π»Π΅ΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° DOM-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΄Π΅ΡΠΆΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π² Π΄Π΅ΡΡΡΠΊΠΈ ΡΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ Π·Π΄Π΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΡ, Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠ°ΡΡΡ, ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°ΡΡ Π²ΠΈΠ΄ΠΈΠΌΡΡ ΠΎΠ±Π»Π°ΡΡΡ (bounds) ΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠ²Π΅ΡΠΎΠ² ΡΠ΅ΡΠ²Π΅ΡΠ° β ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½ΠΈΠΆΠ΅.
ΠΡΠ±ΠΎΡ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° ΠΈ API
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ±ΠΎΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Ρ. ΠΠ»Ρ ΡΠΎΡΡΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΡΡΠ½ΠΊΠ° Π±Π΅Π·Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΌ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ ΠΎΡΡΠ°ΡΡΡΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΡΡ API Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ ΡΠ°ΡΡΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ Google Maps Platform ΠΈΠ»ΠΈ open-source ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠΎΠ΄Π΅ Leaflet Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ OpenStreetMap.
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π»ΠΈΠΌΠΈΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ ΡΠ°ΡΠΈΡΡ ΡΠ°ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΡΡΠΊΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π΅Π· ΠΎΠΏΠ»Π°ΡΡ. ΠΠ°ΠΆΠ½ΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ Π±ΡΠ΄ΠΆΠ΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΊΠ°ΡΡΠΎΠΉ (pan, zoom) Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ².
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ API ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π»ΠΈΠΌΠΈΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Π²Π°ΡΠ΅Π³ΠΎ Π±ΡΠΊΠ΅Π½Π΄Π°, ΠΈΠ½Π°ΡΠ΅ ΡΡΠ΅Ρ Π·Π° ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ ΡΠ΄ΠΈΠ²ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΌΠ΅ΡΡΡΠ°.
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°"ΠΊΠ°ΠΊ Π½Π° ΠΠ²ΠΈΡΠΎ" ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ"ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ". Π Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ clusterer, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³ΡΡΠΏΠΏΠΈΡΡΠ΅Ρ Π±Π»ΠΈΠ·Π»Π΅ΠΆΠ°ΡΠΈΠ΅ ΠΌΠ΅ΡΠΊΠΈ. Π Google Maps Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠ΅ΡΠ΅Π· MarkerClusterer, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΈ ΡΡΡΡΠΊΡΡΡΠ° 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) Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π»ΠΈΡΡ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠΈΠ½ΠΈΡ ΠΊΡΡΠΆΠΊΠΎΠ² ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π±ΡΠ΅Π½Π΄ΠΈΠ½Π³Ρ.
- πΉ Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ Π»ΠΎΠ³ΠΈΠΊΡ"ΡΡΠΏΠ΅Ρ-ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ": Π΅ΡΠ»ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΡΡΠ°Π·Ρ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΊΡ, Π° Π½Π΅ Π³ΡΡΠΏΠΏΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΎΡΠ° ΡΡΡΠΎΠΈΡΡΡ Π½Π° Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠ°ΡΡΡ Π½Π° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ. ΠΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ Π² ΠΎΠ΄Π½Ρ ΡΡΠ΅ΠΉΠΊΡ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ. ΠΡΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΡΡΡ ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ. ΠΡΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΄Π΅ΡΡΡΠΊΠΈ ΡΡΡΡΡ ΡΠΎΡΠ΅ΠΊ Π±Π΅Π· Π»Π°Π³ΠΎΠ².
βοΈ Π§Π΅ΠΊ-Π»ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΡΠΎΠΊ ΠΈ Π±Π°Π»ΡΠ½ΠΎΠ²
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅"Π±ΡΠ»Π°Π²ΠΊΠΈ" ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π²ΡΠ³Π»ΡΠ΄ΡΡ ΡΠΊΡΡΠ½ΠΎ ΠΈ Π½Π΅ Π½Π΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ° ΠΠ²ΠΈΡΠΎ ΠΌΠ΅ΡΠΊΠ° ΡΡΠ°Π·Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅Π½Ρ ΠΈΠ»ΠΈ ΡΠΎΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ 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-ΡΠ΅ΠΆΠΈΠΌ. ΠΡΠ»ΠΈ ΡΠΊΡΠΈΠΏΡ ΠΊΠ°ΡΡΡ Π½Π΅ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΡΡ (Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ ΡΠ΅ΠΊΠ»Π°ΠΌΡ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠ΅ΡΡΡ), ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠ°ΡΠΈΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ Π°Π΄ΡΠ΅ΡΠΎΠ² Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΡΠ°ΠΉΡΠ° Π½Π΅ Π»ΠΎΠΌΠ°Π»ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ.