/ / Algoritmus pre lazy-načítanie anotácií mapy - ios, mapy, mkmapview

Algoritmus pre lazy-loading anotácie mapy - ios, mapy, mkmapview

Pracujem na aplikácii Map, ktorá načíta miestaz rozhrania API. Mám kód vyvíjaný tak, že používateľ má veľkú vzdialenosť, rozhranie API je vyhľadávané pre lokality v rozmedzí x kilometrov a anotácie sú nahradené.

I "m kódovanie pre iOS, ale to by sa vzťahovalo na akúkoľvek mapu aplikácie.

Všetko funguje v tomto bode, ale som nespokojný s mojim algoritmom o tom, čo je významná vzdialenosť a aký je polomer miesta na načítanie Niekoľko vecí, ktoré som premýšľal -

  • Zobrazenie mapy je obdĺžnik, vyšší ako je široký.
  • Načítanie umiestnení v rozmedzí x kilometrov vám dáva kruh
  • Používatelia môžu priblížiť a oddialiť
  • Používatelia môžu posúvať N, S, E, W
  • Opätovné načítanie pri každej malej zmene pohľadu spôsobí zlé užívateľské skúsenosti - musí existovať prahová hodnota
  • Mali by existovať miesta mimo pohľadu, takže používatelia môžu do určitej miery posunúť a priblížiť sa ešte pred opätovným načítaním
  • Vzhľadom na obdĺžnik vnútri kruhu sa používatelia posúvajúci hore alebo dole dostanú na okraje kruhu skôr, než keď sa posúvajú vpravo a vľavo
  • Ak chcete šetriť zdroje, nie sú zobrazené všetky polohy, keď je priblíženie príliš široké, takže priblíženie môže odhaliť nové polohy
  • Oddialením sa odhalia nové miesta

Akékoľvek návrhy na aký druh algoritmu by som mal robiť? Hľadám určiť nasledujúce premenné -

  • Polomer polôh na načítanie danej šírky obrazovky
  • Prah zmeny (posúvanie a zväčšenie) pred načítaním bodov

odpovede:

1 pre odpoveď č. 1

Spoločným riešením pre rastrové mapy je zníženieobraz do dlaždíc a načítať tie "blízko", kde je divák. Môžete to urobiť pre svoje údaje tým, že načítate ďalšie body po posúvaní / priblížení bez odstránenia toho, čo je tam. Ak je váš kód na získavanie nových bodov spustený v pozadí, používateľ si nevšimne a pri každej paneli vždy skončí na mieste, ktoré už má pre ne údaje a keď sa pozrie na to, že idete a načítať ďalšie dáta pre ich ďalšiu panvu, budete musieť zistiť, ako ďaleko môžu ísť v jednom kroku. Zemepisná dĺžka je jednoduchá, stačí pozdĺžny rozdiel (tj vpravo-vľavo) a to, ako ďaleko môžu pretiahnuť prst a teda aj mapu.Takže ak je váš mapový pohľad šírka 1 stupňa, mali by ste už mať údaje od jedného stupňa k mapa je pravá a jeden stupeň na ľavej strane mapy.Latitude je ťažšie, pretože sa mení, keď sa pohybujete od rovníka.Hore dolu je iné meranie, ak sa pozeráte na Škótsko. Princíp je rovnaký. Zistite, do akej miery by sa používateľ mohol posúvať v jednom ťahu a mať predinštalované dáta. Ak si myslíte o 3x3 mriežke ako telefónne podložky. Zobrazenie mapy je na 5 tlačidlách a musíte mať predbežne nainštalované všetky priestorové tlačidlá. Zobrazenie mapy sa pretiahne na stranu, takže sa teraz pozeráte na štvorcový štvorec, ktorý musíte načítať v ďalšom štvorci nad rámec bez toho, aby ste stratili údaje, ktoré sú na obrazovke. Mohli by ste uskutočniť tri hovory vpravo, hore a vpravo, vpravo a vpravo pod. alebo uskutočnite jedno hovory a získajte všetky nové údaje v jednom hovore.

Samozrejme, ak je vaša výzva na získanie nových údajov abit pomaly a používateľ by mohol posunúť dvakrát predtým, než dostanete odpoveď, možno budete musieť vyzdvihnúť väčšiu plochu. Takže by ste boli v strede mriežky 5x5 a keď sa pohľad posunie smerom k okraju, musíte načítať ďalší riadok alebo stĺpec.

Dúfam, že to pomôže.