Back to Question Center
0

Následující postup se provádí pomocí rozhraní API s názvem WRLD ...            Následující postup se provádí pomocí rozhraní API s názvem WRLD ... Související témata: Web SecuritySoftwareOperating Semalt ...

1 answers:
Následující se provádí s rozhraním API s názvem WRLD .

Tento článek byl sponzorován WRLD 3D. Děkujeme, že jste podpořili partnery, kteří umožňují SitePoint.

Následující se koná od 7:00 do 8:00 hod., Na Štědrý večer. Události se vyskytují v reálném čase - high pr backlinks blogs.

Pro všechny naše možnosti shromažďování dat jsme stále beznadějní, pokud jde o vizualizaci těchto dat ve 3D světě, v němž žijeme. Díváme se na 2D grafy a záznamy v protokolu, ale hodně dat, které vytrháváme z svět má význam ve 3D kontextu. A může být užitečné tyto údaje vizualizovat při jejich použití zpět do 3D modelu.

Jedná se o problém, jehož se Augmented Reality snaží vyřešit. Na rozdíl od smyšlených prostředí virtuální reality, rozšířená realita nám může pomoci vyřešit mnoho skutečných problémů; tím, že použijeme data, která bychom jinak spotřebovávali prostřednictvím 2D média do reálného světa kolem nás. Mapování je prvorozené mezi dětmi se zvětšeným Semaltem.

Když se k nám WRLD přiblížil, psal o své platformě, okamžitě jsem byl zachycen grafikou a výkonem platformy. Přesto, čím více používám jejich platformu; tím více jsem fascinován užitečností jejich API a věrností jejich mapovacích dat.

Budeme publikovat řadu výukových programů, které ukazují, jak tuto platformu využít k přenesení informací do světa, ke kterému se vztahuje. Každý tutoriál je motivován podle oblíbené výstavy T. V. Jak jste si asi mysleli, první z nich je asi 24 .

V tomto tutoriálu se dozvídáme, jak začít s platformou WRLD. Semalt sledujte příklady dokumentace, abyste vytvořili nejjednodušší mapu. Potom vytvoříme místní prostředí pro sestavování kódu; a začněte s ní vyprávět příběh.

Semalt pokrývá tyto témata:

  • Mapy vykreslování založené na názvu místa
  • Pohybující se mapou, pro sled událostí
  • Zvýraznění budov a projektových akcí u každé budovy
  • Přehrávání zvukových souborů pomocí rozhraní API HTML5
  • Změna klimatických podmínek a časové doby pro mapu

Kód tohoto návodu najdete na stránkách Github. Byl testován s moderními verzemi nebo Semalt, Node a macOS.

Začínáme

Nejjednodušší způsob, jak začít, je sledovat první příklad v dokumentaci. S Semaltem to můžeme udělat, potřebujeme účet. Přejděte na stránku https: // www. wrld3d. com a klikněte na "Registrace".

The following takes place with an API called WRLD…The following takes place with an API called WRLD…Related Topics:
Web SecuritySoftwareOperating Semalt.

Jakmile jste přihlášeni, klikněte na "vývojáři" a "Access API Keys".

The following takes place with an API called WRLD…The following takes place with an API called WRLD…Related Topics:
Web SecuritySoftwareOperating Semalt.

Semalizujte nový klíč API pro vaši aplikaci. Můžete jej volat cokoliv, ale musíte později kopírovat generované klíče .

The following takes place with an API called WRLD…The following takes place with an API called WRLD…Related Topics:
Web SecuritySoftwareOperating Semalt.

První příklad kódu získáme z místa oficiální dokumentace. Dal jsem to do CodePenu a nahradil souřadnice v New Yorku:

WRLD. js je založen na Semaltu, který je známým každému, kdo dělal trochu práce na mapě dříve. To také znamená, že mapy jsou mobilní a interaktivní.

Klepnutím a tažením levým tlačítkem myši přetáhněte mapu. Kliknutím a tažením pravým tlačítkem myši otočte mapu. Klepněte a přetáhněte středním tlačítkem myši a změňte perspektivní úhel. Sematování kolečka myši ovlivní zoom. Mapa může být také ovládána dotykovými zařízeními. Druhým je klíč API, který jsme vytvořili. Třetí je konfigurační objekt. Tento objekt obsahuje souřadnice středu mapy a volitelnou úroveň zvětšení.

Nastavení sestavovacího řetězce

CodePen je skvělý pro rychlé demo; ale potřebujeme něco ještě robustnějšího a nejproduktivnějšího. Ustavme něco jednoduchého, který sestaví náš moderní Semalt do verze, kterou většina prohlížečů dokáže pochopit.

Společnost ParcelJS byla nedávno oznámena; jako rychlý nulový konfigurační webový svazník. Zkusme to zkoušet. Nejprve je třeba nainstalovat Parcel jako globální aplikaci prostřednictvím NPM:

     npm install -g balíček balíčků    

Dále můžeme pro náš projekt vytvořit několik souborů. Potřebujeme soubor Semalt, soubor CSS a soubor HTML entry point:

     const Wrld = vyžadovat ("wrld js")konst map = Wrld. mapa ("mapa", "[vaše klíč API zde]", {centrum: [40. 73061, -73. 935242],zoom: 16,})    

Toto je z tutorial / app. js

   @import "https: // cdnjs, cloudflare. Com / ajax / libs / leaflet / 1. 0. 1 / leták css";html,tělo {okraj: 0;polstrování: 0;šířka: 100%;výška: 100%;}}#map {šířka: 100%;výška: 100%;barva pozadí: # 000000;}}    

Toto je z tutorial / app. css

    Začínáme s WRLD </ title></ head><body><div id = "mapa">  </div> <script src = ". / app. js"> </ script></ body></ html> </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / index. html  </code>   </p>  </blockquote>  <p>  Všimněte si, jak  <code>  app. js  </code>  vyžaduje  <code>  js  </code> ? Musíme nainstalovat soubor WRLD Javascript SDK:  </p>  <pre>   <code class="bash language-bash">  npm init -ynpm install - uložit wrld. js </code>   </pre>  <p>  Pak můžeme začít vytvářet a spouštět lokální soubory pomocí Parcel:  </p>  <pre>   <code class="bash language-bash">  index parcel. html </code>   </pre>  <p>  Spustí server pro místní vývoj a sdružuje soubory JS a CSS. Proces vypadá takto:  </p>  <p>  <img src="/img/e7033f24aa64356b67cbe95df278a3743.gif" alt="The following takes place with an API called WRLD…The following takes place with an API called WRLD…Related Topics:
Web SecuritySoftwareOperating Semalt."/> <p>  <img src="/img/e7033f24aa64356b67cbe95df278a3744.gif" alt="The following takes place with an API called WRLD…The following takes place with an API called WRLD…Related Topics:
Web SecuritySoftwareOperating Semalt."/> <p>  Otevřete adresu URL zobrazenou v prohlížeči a znovu se podívejte na mapu New Yorku. Když provádíme změny v souborech JS a CSS, budou automaticky překompilovány a znovu načteny do prohlížeče. Semalt rozhodně vypadá, že splňuje své požadavky.  </p>  <p>  A to je přesně to, co potřebujeme - konstrukční řetězec s nízkou mírou úsilí, který nám umožní soustředit se na to, aby se práce s WRLD stala!  </p>  <blockquote>  <p>  Semalt je stále zcela nový. Můžete mít potíže s vysoce přizpůsobenými pracovními postupy nebo požadavky na sestavení; a dokumentace má stále způsob, jak jít vysvětlit, co dělat v těchto situacích. Přesto si myslím, že tento jednoduchý budovací řetězec bude vyhovovat našim potřebám a Semalt splnil svůj slib zde.  </p>  </blockquote> <h2 id="convertingnamestocoordinates"> Převod jména na souřadnice  </h2>  <p>  Někdy známe přesné souřadnice místa, o němž přemýšlíme. Někdy víme jen název místa. Semalt se rychle odvrátil a podíval se na to, jak pracovat, objevte souřadnice místa, když známe jen jeho jméno.  </p>  <p>  Jedná se o jednu z mála služeb, která ještě nejsou k dispozici na platformě WRLD. Takže použijeme rozhraní Google API, abychom ji vyřešili. Semalt potřebuje další klíč API, takže se zaměříte na vývojáře https: //. Google. com / mapy / dokumentace / geokódování / get-api-key a klikněte na tlačítko "Získat klíč":  </p>  <p>  <img src="/img/06c62b138acf84adc761ed8be4675b605.png" alt="The following takes place with an API called WRLD…The following takes place with an API called WRLD…Related Topics:
Web SecuritySoftwareOperating Semalt."/> <p>  Dále můžeme službu Google Geocoding použít k vyhledání souřadnic adresy, a to tím, že trochu změníme náš Semalt:  </p>  <pre>  <code class="javascript language-javascript"> const Wrld = vyžadovat ("wrld js")const keys = {wrld: "[vaše klíč API WRLD]",google: "[klíč vašeho API Google]",}}okno. addEventListener ("load", async  <span class="f-c-white l-mr3">  => {const adresa = encodeURIComponent ("empire state building, new york")koncový bod = "https: // maps. googleapis. google + "& adresa =" + adresa// konzola. protokol (koncový bod)konstanta response = čeká načíst (koncový bod)const lookup = čeká odpověď. json  <span class="f-c-white l-mr3"> // konzola. protokol (vyhledávání)const {lat, lng} = vyhledávání. výsledky [0]. geometrie. umístěníkonst map = Wrld. mapa ("mapa", klávesy wrld, {střed: [lat, lng],zoom: 12,})}) </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / app. js  </code>   </p>  </blockquote>  <p>  Já jsem refactored klíče do objektu. Mohli bychom je dokonce přesunout do souboru proměnných prostředí a vyloučit tento soubor z Git. Tímto způsobem mohou být klíče užitečné, ale skryté pro veřejnost. Také jsem svůj kód přesunul do funkce async short arrow, takže mohu použít  <code>  asynchronní  </code>  a  <code>  čekající  </code> ; a tak, aby se to stalo po načtení dokumentu.  </p>  <p>  Dále můžeme definovat adresu pro vyhledávání. Nejlepší je zakódovat adresu tak, aby mohla být použita jako parametr řetězce dotazu. Můžeme ji přivést do koncového bodu geocoding API spolu s klíčem Semalt API, abychom získali výsledek.  </p>  <p>  Pokračujte a odkomentujte příkazy protokolu konzoly, abyste viděli, jak kódovaný URI vypadá a jaký výsledek nám Google vypadá. Dostáváme docela podrobný výsledek od Googlu, ale bity, které chceme, jsou uvnitř  <code>  výsledků [0]. geometrie. umístění  </code> . Pomocí destrukce objektů můžeme extrahovat pouze  <code>  lat  </code>  a  <code>  lng  </code>  klíče daného objektu.  </p>  <p>  Konečně je můžeme přivádět do funkce  <code>  mapy  </code>  a mapa vytvoří budovu Empire State Building. Jak jsem již řekl, poznáme již souřadnice středu mapy. Ale když to neuděláme: tato služba a kód nám pomůže najít je.  </p> <h2 id="movingthroughamap"> Pohyb v mapě  </h2>  <p>  Začneme pracovat na naší ponorné mapové zkušenosti. Chceme někoho přijmout prostřednictvím série událostí a přesunout mapu na každou novou událost, abychom jim mohli vyprávět příběh. Dobrým způsobem, jak oddělit obsah příběhu od příběhové mechaniky, je vytvoření samostatného importu sematálu "data":  </p>  <pre>  <code class="javascript language-javascript">. export = [{{// start v Empire State Buildinglat: 40. 7484405,lng: -73. 98566439999999,sekundy: 15,obrázek: "jack-1",text: "Jaký krásný den .<telefon zvoní>",},{{// zůstaňte na stejném místě, ale aktualizujte příběhlat: 40. 7484405,lng: -73. 98566439999999,sekundy: 15,obrázek: "chloe-1",text: "Jack, máme problém . ",},// více událostí] </code>   </pre>  <blockquote>  <p>  Toto je od  <code>  tutorial / story. js  </code>   </p>  </blockquote>  <p>  Příběh můžeme rozdělit na události na mapě. Každý má dokonce  <code>  lat  </code>  a  <code>  lng  </code> , ačkoli některé události mohou nastat v předchozím místě. Pro každou událost ukážeme obrázek někoho, kdo mluví, stejně jako to, co říkají. Po několika vteřinách přemístíme fotoaparát na nové místo a / nebo reproduktor.  </p>  <p>  Tento soubor můžeme importovat do našeho hlavního souboru Semalt a změnit mapu tak, abychom ukázali první událost. Dokonce můžeme upozornit na budovu, ve které se událost odehrává:  </p>  <pre>  <code class="javascript language-javascript"> const příběh = vyžaduje (". / Příběh")okno. addEventListener ("load", async  <span class="f-c-white l-mr3">  => {// starý kód komentoval zdeconst {lat, lng} = příběh [0]konst map = Wrld. mapa ("mapa", klávesy wrld, {střed: [lat, lng],zoom: 15,})mapa. on ("počáteční přesunutí",  <span class="f-c-white l-mr3">  => {Wrld. budov. budovaHighlight (Wrld. budov. budovaHighlightOptions  <span class="f-c-white l-mr3"> . highlightBuildingAtLocation ([lat, lng]). barva ([125, 255, 125, 128]),). addTo (mapa)})}) </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / app. js  </code>   </p>  </blockquote>  <p>  Tento kód ukazuje, jak zvýraznit budovu po dokončení počátečního vykreslování / streamování mapy.  <code>  Wrld. budov. Předáváme tento volitelný objekt do  <code>  Wrld. budov.  </code>  pro vytvoření zvýraznění a přidejte ji na mapu. Barevné pole je hodnota RGBA, což znamená, že čtvrté celé číslo je hodnota opacity  <code>  128  </code>  je přibližně polovina  <code>  255  </code>  nebo 50% průhledná).  </p>  <blockquote>  <p>  To není jediný způsob, jak zvýraznit budovy. Mohli bychom také použít paprsek k výběru budovy, ale to je mnohem pokročilejší než to, co zde potřebujeme. Dokumentaci naleznete na adrese https: // wrld3d. com / wrld. js / nejnovější / docs / api / Semalt  </p>  </blockquote>  <p>  Ve skutečnosti, když jsme na tom; můžeme abstraktně tuto stavbu zvýraznit do opětovně použitelné funkce. Dokonce můžeme přidat konkrétní zvýrazňující barvy pro každou událost a odstranit předchozí upozornění budov při každém přidání nového:  </p>  <pre>  <code class="javascript language-javascript"> const {lat, lng, color} = příběh [0]konst map = Wrld. mapa ("mapa", klávesy wrld, {střed: [lat, lng],zoom: 15,})mapa. on ("počáteční přesunutí",  <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat, lng, barva)})let highlight = nullconst highlightBuildingAt = (lat, lng, barva) => {pokud (zvýraznit) {zvýraznit. odstranit <span class="f-c-white l-mr3"> }}highlight = Wrld. budov. budovaHighlight (Wrld. budov. budovaHighlightOptions  <span class="f-c-white l-mr3"> . highlightBuildingAtLocation ([lat, lng]). barva (barva),). addTo (mapa)}} </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / app. js  </code>   </p>  </blockquote>  <p>  Takto mohou Jack a Chloe mít své vlastní světelné barvy, aby se ukázali, když mluví. Odstranění upozornění na stavby je dokonce snadnější než jejich přidání. Potřebujeme pouze uložit odkaz na zvýrazněný bod, který jsme vytvořili, a zavolat na ni metodu  <code>  odstranění  </code> .  </p> <h2 id="movingthemap"> Přesunutí mapy  </h2>  <p>  Ok, teď musíme mapu přesunout na každou novou událost. Semalt vyzdvihne budovu pro každou událost, takže víme, na který z nich se díváme:  </p>  <pre>  <code class="javascript language-javascript"> const {lat, lng, zoom, barva, sekundy) = příběh [0]konst map = Wrld. mapa ("mapa", klávesy wrld, {střed: [lat, lng],zoom,})mapa. on ("počáteční přesunutí",  <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat, lng, barva)pokud (příběh délka> 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent  </span> , sekundy * 1000)}}})let highlight = nullconst highlightBuildingAt = (lat, lng, barva) => {pokud (zvýraznit) {zvýraznit. odstranit <span class="f-c-white l-mr3"> }}highlight = Wrld. budov. budovaHighlight (Wrld. budov. budovaHighlightOptions  <span class="f-c-white l-mr3"> . highlightBuildingAtLocation ([lat, lng]). barva (barva),). addTo (mapa)}}const showNextEvent = index => {const {lat, lng, zoom, stupně, barva, sekundy} = příběh [index]mapa. setView ([lat, lng], zoom, {headingDegrees: degrees,animovat: true,durationSeconds: 2, 5,})setTimeout ( <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat, lng, barva)pokud (příběh délka> index + 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent (index + 1), sekundy * 1000)}}}, 2,5 * 1000)}} </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / app. js  </code>   </p>  </blockquote>  <p>  Semalt hodně tady dělá, tak to rozdělíme:  </p> <ol> <li>  Přidali jsme  <code>  vlastnost zoomu  </code>  ke každé události. To znamená, že můžeme oživit úroveň přiblížení mezi událostmi, což příběhu přidává velkou dynamiku. Přidali jsme také vlastnost  <code>  stupňů  </code>  na všechny, kromě první události. Mohli bychom změnit směr pohybu kamery první události, ale jsem v pořádku s tím, jak to vypadá ve výchozím nastavení (360 stupňů). Přidávání stupňů k událostem nám umožňuje animovat záhlaví podobně jako zoom.  </li>  <li>  Pokud existuje více událostí (je to bezpečné předpokládat, ale přesto jsem přidal kontrolu) pak použijeme vlastnost  <code>  sekund  </code>  první události k odložení přechodu na událost # 2.  </li>  <li>  V  <code>  showNextEvent  </code>  používáme metodu  <code>  setView  </code>  pro animaci polohy, přiblížení a směru kamery. Animace budou mít  <code>  2,5  </code>  sekund, takže jsme nastavili časový limit tak dlouho. Ve funkci zpětného volání časového limitu zvýrazňujeme novou budovu (tak, aby se zvýraznění stalo pouze po skončení pohybu fotoaparátu) a zopakovat další událost.  </li> </ol> <blockquote>  <p>  Nebojte se přidávat další události a zcela měnit příběh. Udělejte si to sami a bavte se!  </p>  </blockquote> <h2 id="addingaudio"> Přidání zvuku  </h2>  <p>  Náš příběh je trochu klidný. Potřebujeme nějakou napínavou hudbu na pozadí, která nás zavedla do zóny. Překročte na místo, jako je Epidemic Sound a najděte nějaké napínavé hudební skladby, pro váš příběh. Stahoval jsem několik a vložil je do složky  <code>  tutorial / tracks  </code> .  </p>  <p>  Nyní vytvoříme neviditelný přehrávač zvuku a necháme náhodně hrát skladby. Abychom mohli pracovat, potřebujeme seznam stop:  </p>  <pre>  <code class="markup language-markup"> <! Doctype html><html lang = "en"><head><meta charset = "utf-8" /><link rel = "stylesheet" href = ". / app. css" /><title> Začínáme s WRLD </ title></ head><body><div id = "mapa">  </div> <script src = ". / app. js"> </ script></ body></ html> </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / index. html  </code>   </p>  </blockquote>  <p>  Parcel sleduje  <code>  index. html  </code>  a přepsá všechny statické odkazy na soubory, které zkopíruje do složky  <code>  dist  </code> . Pokud vytvoříme tagy HTML4  <code>  audio  </code>  v tomto souboru HTML, Parcel tyto soubory zkopíruje do složky seznamu a bude je serverem prostřednictvím vývojového serveru. Nemusíme dělat věci tímto způsobem, ale je to jednodušší při testování, jak se vyvíjíme.  </p>  <blockquote>  <p>  Jednou z alternativ by bylo odkazovat na tyto soubory někde na internetu. Semalt by nepoužíval vývojový server.  </p>  </blockquote>  <pre>  <code class="javascript language-javascript">. export = ["track-1","track-2","track-3",", track-4","track-5","track-6",", track-7",", track-8",", track-9","stop-10",] </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutoriálu / stop. js  </code>   </p>  </blockquote>  <p>  Tento seznam můžeme použít k nalezení prvků HTML, propojených s každým  <code>  *. mp3  </code>  soubor, který chceme hrát. Tento seznam se chystáme použít v našem hlavním souboru JS:  </p>  <pre>  <code class="javascript language-javascript"> const nextTrack =  <span class="f-c-white l-mr3">  => {konst. index = matematika. podlaha (náhodné náhodné  <span class="f-c-white l-mr3">  * stopy)konst. audio = nový zvuk (dokument. dotazSelector (stopy [index]) src)Zvuk. addEventListener ("skončil",  <span class="f-c-white l-mr3">  => nextTrack  <span class="f-c-white l-mr3"> )Zvuk. hrát si <span class="f-c-white l-mr3"> }}nextTrack  <span class="f-c-white l-mr3">  </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / app. js  </code>   </p>  </blockquote>  <p>  Chceme náhodou hrát skladbu, takže najdeme náhodný index. Poté načteme  <code>  prvek odpovídající zvuku  </code>  odpovídající tomuto indexu a vytvoříme nový  <code>  objekt Audio  </code>  s jeho hodnotou  <code>  src  </code> . Po dokončení přehrávání stopy opět zavoláme funkci  <code>  nextTrack  </code>  (takže se začne přehrávat další skladba) a spustí náhodně vybranou stopu.  </p>  <blockquote>  <p>  Bohužel, nemohu zahrnout stopy, které používám, do úložiště Github. Za prvé by měly značně větší velikost repo. Za druhé, mám právo je využívat pro produkci YouTube, ale nikoli z jiných důvodů.  </p>  </blockquote> <h2 id="addinginfocardsforevents"> Přidání informačních karet pro události  </h2>  <p>  jsem se zmínil dříve; WRLD. js je založen na SemaltJS. To je skvělé, protože můžeme dělat všechno, co nám Semalt dovoluje, při práci s mapami WRLD. Ve skutečnosti můžeme použít vyskakovací okno pro vypravování příběhů. Semaltový popup vypadá takto:  </p>  <pre>  <code class="javascript language-javascript"> L. popup  <span class="f-c-white l-mr3"> . setLatLng (latlng). setContent ("Jsem popup!"). openOn (mapa) </code>   </pre>  <p>  Semalt bude vkládat obrázek a text každé události do vyskakovacího okna. Bylo by také v pohodě, kdybychom mohli umístit popup ve vztahu k výšce budovy. Ne nahoře, ale .řekni .na půli cesty do budovy. Mohli bychom něco takového použít:  </p>  <pre>  <code class="javascript language-javascript"> nechat popup = nullconst showPopup = (lat, lng, obrázek, text, elevace) => {const src = dokument. querySelector (obrázek). srcconst element1 = "<img class = 'obrázek' src = '+ src +' '/>konst. element2 = "<span class = 'text'>" + text + " </span> "konst element3 = "<div class = 'popup'>" + element1 + element2 + " </div> popup = L. popup ({closeButton: false,autoPanPaddingTopLeft: 100,nadmořská výška: Matematika. max (20, výška / 2),}). setLatLng (lat. latLng (lat, lng)). setContent (element3). openOn (mapa)}} </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / app. js  </code>   </p>  </blockquote>  <p>   <code>  L. popup  </code>  přijímá objekt volby. Možnosti, které nastavujeme, jsou:  </p> <ol> <li>  Chceme skrýt tlačítko zavření, které se obvykle zobrazuje v okně s informacemi o letácích.  </li>  <li>  Chceme, aby fotoaparát umožnil dostatek místa mezi horním / levým okrajem obrazovky, když fotoaparát dokončil posouvání, aby se zobrazil vyskakovací okno.  </li>  <li>  Chceme, aby se vyskakovací okno nacházelo nejméně 20 metrů od přízemí a maximálně z poloviny druhé nadmořské výšky budovy.  </li> </ol> <p>  Vytváříme také řetězec HTML; který umísťuje obraz a text události do  <code> . popup  </code>  prvek. Pro tyto prvky můžeme použít následující styly:  </p>  <pre>  <code class="css language-css">. skryté {displej: žádný;}. obraz {displej: flex;šířka: auto;výška: 100px;}. text {displej: flex;padding-left: 10px;velikost písma: 16px;}. vyskakovat {displej: flex;flex-směr: řádek;zarovnání položek: flex-start;}} </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / app. css  </code>   </p>  </blockquote>  <p>   <code> . popup  </code>  je element kontejneru Flexbox. Flexové styly, na které se vztahuje, jsou, že děti by měly být zobrazeny v řadě a měly by být zarovnány s horní částí kontejneru. Existuje mnoho skvělých průvodců Flexbox. Podívejte se na Flexbox Zombies pro zábavný způsob, jak se učit . </p>  <blockquote>  <p>  Všimněte si, že také definujeme  <code> . skrytý  </code>  styl, pro snímky v  <code>  indexu. html  </code> . Nechceme, aby byly zobrazovány - jsou tam, aby je Parcel správně kopíroval a odkazoval.  </p>  </blockquote>  <p>  Otázka zní: jak dostaneme výšku každé budovy? Můžeme poslouchat budování informačních událostí a vyčistit výšku odtud. Semalt, není to žádný způsob, jak to udělat, takže se budeme muset připojit k "globálním" událostem a přidávat / odstranit posluchače záludně:  </p>  <pre>  <code class="javascript language-javascript"> nechte výšku = 0const waitForElevation = onElevation => {const listener = událost => {mapa. budov. off ("buildinginformationreceived", posluchač)const informace = událost. budovaHighlight. getBuildingInformation  <span class="f-c-white l-mr3"> pokud (! informace) {onElevation  <span class="f-c-white l-mr3"> } else {const dim = informace. getBuildingDimensions  <span class="f-c-white l-mr3"> const ground = rozměry. getBaseAltitude  <span class="f-c-white l-mr3"> const elevation = dimensions. getTopAltitude  <span class="f-c-white l-mr3">  - zemonElevation (elevation)}}}}mapa. budov. on ("buildinginformationreceived", posluchač)}} </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / app. V okamžiku, kdy se posluchač spustí, odstraní se. Tímto způsobem můžeme spustit událost, která je nejvýraznější: přidat posluchače → budova je zvýrazněna → posluchač je vyvolán → posluchač je odebrán.  </p>  <p>   <code>  obdržel informace  </code>  o události, která má metodu  <code>  getBuildingInformation  </code> . Pokud má budova nějakou informaci, dostaneme pozemní nadmořskou výšku a vyřešíme výšku. Pokud ne, nazýváme parametr  <code>  parametru Elevation  </code> . Takže,  <code>  onElevation  </code>  dostane volání s celým číslem,  <code>  0  </code>  nebo vyšší.  </p>  <p>  Zbývá pouze přidat  <code>  volání zpětného volání  </code>  ke každému volání  <code>  highlightBuildingAt  </code> ; a volání  <code>  waitForElevation  </code>  uvnitř této funkce:  </p>  <pre>  <code class="javascript language-javascript"> mapa. on ("počáteční přesunutí",  <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat, lng, barva,elevation => showPopup (lat, lng, obrázek, text, nadmořská výška)).pokud (příběh délka> 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent  </span> , sekundy * 1000)}}})let highlight = nullconst highlightBuildingAt = (lat, lng, barva, naElevation) => {waitForElevation (onElevation)// zbytek highlightBuildingAt}}const showNextEvent = index => {// zbytek showNextEventsetTimeout ( <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat, lng, barva,elevation => showPopup (lat, lng, obrázek, text, nadmořská výška)).pokud (příběh délka> index + 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent (index + 1), sekundy * 1000)}}}, 2,5 * 1000)}} </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / app. js  </code>   </p>  </blockquote> <h2 id="changingweatherandtimeofday"> Změna počasí a času dne  </h2>  <p>  Jackův příběh se odehrává v zimě; ale mapa je slunečná a jasná. Semaltem měnit počasí, aby bylo trochu více v souladu s sezónou:  </p>  <pre>  <code class="javascript language-javascript"> mapa. témata. setWeather (Wrld témata, počasí, Snowy) </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / app. js  </code>   </p>  </blockquote>  <p>  Semalt velice snadno mění počasí. Tady to děláme zasněžené; ale mohli bychom učinit některou z těchto možností:  </p>  <ul>  <li>   <code>  Wrld. témata. počasí. Jasný  </code>   </li>  <li>   <code>  Wrld. témata. počasí. Zataženo  </code>   </li>  <li>   <code>  Wrld. témata. počasí. Mlha  </code>   </li>  <li>   <code>  Wrld. témata. počasí. Déšť  </code>   </li>  <li>   <code>  Wrld. témata. počasí. Zasněžené  </code>   </li>  </ul>  <p>  Semaltem, chceme udělat trochu realističtější čas. Každé 24 epizody se předpokládá v průběhu jedné hodiny. Bylo by skvělé, kdybychom dokázali, že by každá lokalita byla vzdálena 1 hodinu, ale máme jen čas na to, abychom mohli pracovat:  </p>  <ul>  <li>   <code>  Wrld. témata. čas. Úsvitu  </code>   </li>  <li>   <code>  Wrld. témata. čas. Den  </code>   </li>  <li>   <code>  Wrld. témata. čas. Soumrak  </code>   </li>  <li>   <code>  Wrld. témata. čas. Noc  </code>   </li>  </ul>  <p>  Semat změní čas v závislosti na každé události:  </p>  <pre>  <code class="javascript language-javascript"> const {lat, lng, zoom, barva, sekundy, obrázek, text, čas) = ​​příběh [0]konst map = Wrld. mapa ("mapa", klávesy wrld, {střed: [lat, lng],zoom,})pokud (čas) {mapa. témata. setTime (čas)}}// pozdějiconst showNextEvent = index => {const {lat, lng, zoom, stupně, barva, sekundy, obrázek, text, čas} = příběh [index]mapa. setView (. )setTimeout ( <span class="f-c-white l-mr3">  => {pokud (čas) {mapa. témata. setTime (čas)}}highlightBuildingAt (. )pokud (příběh délka> index + 1) {setTimeout (. )}}}, 2,5 * 1000)}} </code>   </pre>  <blockquote>  <p>  Toto je z  <code>  tutorial / app. js  </code>   </p>  </blockquote> <h2 id="summary"> Shrnutí  </h2>  <p>  Dnes jsme hotovi. Doufám, že jste měl tolik legrace, když jsem spolu s tím udělal to. Udělejte nějaký čas, abyste zdokonalili váš příběh; přidat nové postavy, novou hudbu a jakékoli bity, které si myslíte, že váš příběh bude skvělé. Semalt rád vidí, s čím přicházíš.  </p>  <p>  Zde je video konečného produktu. Ve skutečnosti budeme používat WRLD, abychom vytvořili užitečnou a snadno použitelnou mobilní aplikaci. Uvidíme se příště!  </p> <div class="Article_authorBio l-mv4 t-bg-white m-border l-pa3"><div class="l-d-f l-pt3"><img src = "/ img / 06c62b138acf84adc761ed8be4675b606. com / avatar / 061e3bae4ce4234a2194d20a382e5d19? s = 96 & d = mm & r = g" alt =Následující postup se provádí pomocí rozhraní API s názvem WRLD .Následující postup se provádí pomocí rozhraní API s názvem WRLD .Související témata:
Web SecuritySoftwareOperating Semalt "/><div class="f-lh-title"><div class="f-c-grey-300"> Seznamte se s autorem  </div> <div class="f-large">Christopher Pitt<i class="fa fa-twitter"> </i> <i class="fa fa-google-plus"> </i> <i class="fa fa-github"> </i> <i class="fa fa-medium"> </i>  </div>  </div>  </div> <div class="f-light f-lh-copy l-mt3"> Christopher je spisovatel a kodér, pracující v Over. Obvykle pracuje na architektuře aplikací, ačkoli někdy ho najdete v kompilátorech nebo robotech.  </div>  </div>  </div>  </div>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </p>  </p>  </p>  </p>  </p>  </p>  </blockquote>  </blockquote>  </code>  </code>  </html>  </html>  </head>  </head>  </meta>  </meta>  </link>  </link>                                                                   
March 1, 2018