Autor Zpráva
blaaablaaa
Profil
Ahoj,

mám mapu s X000 markery řešenou přes Leaflet (i když tohle je obecný dotaz). Aktuálně načtu všechny markery (resp. je ještě na serveru podle zvolených parametrů filtruji) a ty mimo aktuální oblast na mapě skryju.
Rád bych mapu ale upravil, aby se markery donačítaly podle zobrazené oblasti. Není problém vzít aktuální oblast a podle ní vybrat příslušná data a při posunu/zoomu načíst nové.

Jak ale nejlépe zařídit to, aby se nenačítaly a neposílaly už zobrazené? Napadá mě jedině si pro každou mapu vygenerovat nějaký hash a k němu si na serveru uložit seznam id, které už má stránka načtené a posílat jen ty nové. Zároveň k tomu si u klienta uložit největší načtenou oblast a kontrolovat, zda zoom nebo posun mapy není jen v rámci této oblasti, abych se serveru nedotazoval zbytečně. Ale nevím, zda je to správný přístup.

Díky
Kajman
Profil
Co kdyby ta známá id posílal klient na server při požadavku na další?
blaaablaaa
Profil
Kajman:
Asi by šlo, ale může jich být řádově tisíce, což je sice jen pár kB dat, ale podle mě zbytečných je tahat s každým dotazem.
Keeehi
Profil
blaaablaaa:
Já bych tohle hlavně řešil až to bude nutné. Přináší to obrovskou komplexitu. Také jsou možné různé postupy a každý bude optimalizovat něco jiného. Takže musíš vědět, zda ti jde datovou velikost u klienta, náročnost výpočtu u klienta, velikost dat při přenosu, počet spojení, frekvence spojení, náročnost ne serveru a tak dále a tak dále. Musíš vědět co chceš řešit a podle toho se dá pak něco navrhnout. Většinou ale optimalizace na jednom místě znamená přidání komplexity na jiném místě. Takže je vhodné mít dobrý důvod proč určitou oblast optimalizovat protože budeš většinou platit v nějaké jiné oblasti. Tak aby se ti to vyplatilo.
blaaablaaa
Profil
Keeehi:
Jde mi o lepší uživatelský zážitek. Aktuálně trvá generování markerů na serveru déle, stejně tak i přenos je v řádu stovek kB (přenáším souřadnice, id a název bodu). Výkon u klienta je přijatelný díky skrývání markerů mimo viditelnou oblast a clusterování, ale mohlo by to být lepší, takže mi přijde zbytečné mít načtené všechny (většina lidí nejde mimo oblast zobrazenou při prvním načtení).
Kajman
Profil
Zkusil bych jako první cachovat vygenerované markery.
blaaablaaa
Profil
Kajman:
Přidám odkaz, ať je jasnější, o čem se bavíme: www.vrcholovka.cz/mapa
Pro přihlášené uživatele jsou personifikované (zobrazuji počet výstupů na daný vrchol) + filtrovatelné. Ale je pravda, že do začátku můžu pro nepřihlášené seznam nacacheovat.
Taps
Profil
blaaablaaa:
a nejde ti spíše u shlukování markerů, viz např. https://api.mapy.cz/view?page=clusters
Keeehi
Profil
blaaablaaa:
Tak celkem primitivní řešení by bylo při prvním načtení načíst jen ten výřez, který se uživateli aktuálně má zobrazit. Jakmile to ta stránka zobrazí, tak si ihned požádá o všechny body. Tudíž až začne uživatel zoomovat, už by mohl mít veškerá data.
blaaablaaa
Profil
Taps:
Viz výše, tohle tam mám.


Keeehi: Díky za nápad, tohle by do začátku mohlo být společně s cachí pro nepřihlášené ono ...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0