Back to Question Center
0

Berikut ini berlaku dengan API yang dipanggil WRLD ...            Berikut ini berlaku dengan API yang disebut WRLD ... Topik Berkaitan: Keselamatan WebSoftwareOperating Semalt ...

1 answers:
Berikut ini berlaku dengan API yang disebut WRLD .

Artikel ini ditaja oleh WRLD 3D. Terima kasih kerana menyokong rakan kongsi yang membuat SitePoint mungkin - acessar banco de dados wordpress.

Berikut adalah antara 7:00 pagi hingga 8:00 pagi, pada malam Krismas. Peristiwa berlaku dalam masa nyata.

Untuk semua keupayaan pengumpulan data kami, kami masih tidak mempunyai harapan ketika memvisualisasikan data tersebut di dunia 3D yang kami jalani. Kami menatap carta 2D dan entri log, tetapi banyak data yang kami bawa dari dunia mempunyai makna dalam konteks 3D. Dan, boleh berguna untuk memvisualisasikan data ini apabila ia diterapkan kembali ke model 3D.

Ini adalah masalah Augmented Reality bertujuan untuk menyelesaikannya. Berbeza dengan persekitaran fiksyen Realiti Maya, Reality Dipertingkatkan dapat membantu kita menyelesaikan banyak masalah nyata; dengan menggunakan data yang akan kita gunakan melalui medium 2D ke dunia sebenar di sekeliling kita. Pemetaan adalah anak sulung di kalangan kanak-kanak Semalt yang diperkaya.

Apabila WRLD menghampiri kami, untuk menulis tentang platform mereka, saya segera diambil oleh grafik dan prestasi platform mereka. Namun, semakin saya menggunakan platform mereka; semakin saya tertarik dengan kegunaan API dan kesetiaan data pemetaan mereka.

Kami akan menerbitkan beberapa siri tutorial, yang menunjukkan cara menggunakan platform ini untuk membawa maklumat ke dalam dunia yang diterapkannya. Setiap tutorial bertemakan mengikut persembahan T. V. yang popular. Seperti yang mungkin anda fikirkan, yang pertama adalah kira-kira 24 .

Dalam tutorial ini, kita akan belajar bagaimana untuk memulakan dengan platform WRLD. Semalt ikuti contoh dokumentasi untuk menjadikan peta paling mudah. Kemudian, kami akan mewujudkan persekitaran setempat untuk menyusun kod kami; dan mula memberitahu cerita dengannya.

Perlindungan semalat topik-topik ini:

  • Menampilkan peta berdasarkan nama tempat
  • Bergerak melalui peta, untuk urutan peristiwa
  • Menyerlahkan bangunan dan merancang acara di setiap bangunan
  • Memainkan fail bunyi dengan API Audio HTML5
  • Menukar keadaan cuaca dan waktu siang untuk peta

Kod untuk tutorial ini boleh didapati di Github. Ia telah diuji dengan versi moden atau Semalt, Node, dan macOS.

Bermula

Cara paling mudah untuk memulakan adalah mengikuti contoh pertama, dalam dokumentasi. Semalt kita boleh buat itu, kita perlukan akaun. Teruskan ke https: // www. wrld3d. com dan klik "Daftar".

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

Setelah anda log masuk, klik "pemaju" dan "Kunci API Akses".

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

Sematkan kunci API baru untuk permohonan anda. Anda boleh memanggilnya apa-apa, tetapi anda perlu menyalin kunci yang dihasilkan kemudian .

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

Kita boleh mendapatkan kod itu, untuk contoh pertama, dari laman dokumentasi rasmi. Saya telah memasukkannya ke CodePen, dan menggantikan koordinat dengan mereka untuk New York:

WRLD. js berdasarkan Semalt, yang menjadikannya biasa kepada sesiapa sahaja yang telah melakukan sedikit kerja berasaskan peta sebelum ini. Ini juga bermakna peta mudah alih dan interaktif.

Klik dan seret, dengan butang tetikus kiri, untuk mengepit peta. Klik dan seret, dengan butang kanan tetikus, untuk memutar peta. Klik dan seret, dengan butang tengah tetikus untuk menukar sudut perspektif. Sematkan roda tetikus akan menjejaskan zoom. Peta ini juga boleh dikawal pada peranti sentuh. Yang kedua ialah kunci API yang kami hasilkan. Yang ketiga ialah objek konfigurasi. Objek ini mengandungi koordinat untuk pusat peta, dan tahap zum pilihan.

Menetapkan Rantaian Bina

CodePen hebat untuk demo cepat; tetapi kita memerlukan sesuatu yang lebih teguh dan rapi. Mari kita sediakan sesuatu yang mudah, yang akan menyusun semua Semalt moden kita menjadi versi yang boleh difahami oleh kebanyakan penyemak imbas.

ParcelJS baru-baru ini diumumkan; sebagai penyusun web yang pantas dan sifar. Mari letakkan itu untuk ujian. Pertama, kita perlu memasang Parcel sebagai aplikasi global, melalui NPM:

     npm memasang -g paket-bundler    

Seterusnya, kami boleh membuat beberapa fail untuk projek kami. Kami memerlukan fail Semalt, fail CSS, dan fail entry-point HTML:

     const Wrld = memerlukan ("wrld js")const map = Wrld. peta ("peta", "[kunci API anda di sini]", {pusat: [40. 73061, -73. 935242],zum: 16,})    

Ini adalah dari tutorial / aplikasi. js

   @import "https: // cdnjs. Cloudflare com / ajax / libs / leaflet / 1. 0/1 / leaflet css";html,badan {margin: 0;padding: 0;lebar: 100%;ketinggian: 100%;}#map {lebar: 100%;ketinggian: 100%;warna latar belakang: # 000000;}    

Ini adalah dari tutorial / aplikasi. css

    Bermula dengan WRLD </ title></ head><body><div id = "map">  </div> <script src = ". / app js"> </ script></ body></ html> </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / indeks. html  </code>   </p>  </blockquote>  <p>  Perhatikan bagaimana  <code>  aplikasi. js  </code>  memerlukan  <code>  wrld. js  </code> ? Kita perlu memasang SDK Javascript WRLD:  </p>  <pre>   <code class="bash language-bash">  npm panas -ynpm install --save wrld. js </code>   </pre>  <p>  Kemudian, kita boleh mula membina dan menjalankan fail tempatan menggunakan Parcel:  </p>  <pre>   <code class="bash language-bash">  indeks bungkusan. html </code>   </pre>  <p>  Ini memulakan pelayan pembangunan tempatan, dan menggabungkan fail JS dan CSS. Proses ini kelihatan seperti ini:  </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>  Buka URL ditunjukkan dalam pelayar, dan anda sekali lagi harus melihat peta New York. Semasa kami membuat perubahan pada fail JS dan CSS, ini akan secara automatik dikompilasi dan dimuat semula dalam penyemak imbas. Semalt pastinya seolah-olah memenuhi tuntutannya.  </p>  <p>  Dan itu betul-betul apa yang kita perlukan - rantai binaan yang rendah yang akan memberi kita tumpuan untuk mendapatkan barangan yang dilakukan dengan WRLD!  </p>  <blockquote>  <p>  Semalt masih agak baru. Anda mungkin menghadapi kesukaran dengan aliran kerja yang sangat disesuaikan atau keperluan membina; dan dokumentasi masih mempunyai cara untuk menerangkan apa yang perlu dilakukan dalam situasi tersebut. Namun, saya fikir rantaian binaan mudah ini akan memenuhi keperluan kita, dan Semalt telah menyampaikan janjinya di sini.  </p>  </blockquote> <h2 id="convertingnamestocoordinates"> Menukar Nama kepada Koordinat  </h2>  <p>  Kadang kala kita tahu koordinat yang tepat dari tempat yang kita fikirkan. Kadang-kadang kita hanya tahu nama tempat itu. Semalt dengan pantas, dan lihat cara kerja mencari koordinat tempat apabila kita hanya mengetahui namanya.  </p>  <p>  Ini adalah salah satu daripada beberapa perkhidmatan yang belum tersedia di platform WRLD. Jadi, mari kita gunakan Google API untuk mengatasinya. Semalt memerlukan satu lagi kunci API, jadi tunduk kepada https: // pemaju. google. com / peta / dokumentasi / geocoding / get-api-key dan klik "Dapatkan kunci":  </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>  Seterusnya, kami boleh menggunakan perkhidmatan Google Geocoding untuk mencari koordinat untuk alamat, dengan mengubah Semalt kita sedikit:  </p>  <pre>  <code class="javascript language-javascript"> const Wrld = memerlukan ("wrld js")kekunci const = = {wrld: "[kunci API WRLD anda]",google: "[kunci Google API anda]",}tingkap. addEventListener ("beban", async  <span class="f-c-white l-mr3">  => {alamat const = encodeURIComponent ("empayar bangunan negara, new york")const endpoint = "https: // maps. googleapis. google + "& address =" + alamat// konsol. log (titik akhir)jawapan balas = menunggu pengambilan (titik akhir)const lookup = menanti tindak balas. json  <span class="f-c-white l-mr3"> // konsol. log (lookup)const {lat, lng} = lookup. keputusan [0]. geometri. lokasiconst map = Wrld. peta ("peta", kekunci, wrld, {pusat: [lat, lng],zum: 12,})}) </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / aplikasi. js  </code>   </p>  </blockquote>  <p>  Saya telah membetulkan kekunci ke objek. Kita juga boleh memindahkannya ke fail pembolehubah persekitaran, dan tidak termasuk fail dari Git. Dengan cara itu, kunci boleh berguna tetapi tersembunyi kepada orang ramai. Saya juga memindahkan kod saya ke fungsi panah pendek async, supaya saya boleh menggunakan  <code>  async  </code>  dan  <code>  menunggu  </code> ; dan supaya ia berlaku sebaik sahaja dokumen dimuatkan.  </p>  <p>  Seterusnya, kita boleh menentukan alamat untuk mencari. Adalah lebih baik untuk menyandikan alamat supaya ia boleh digunakan sebagai parameter rentetan pertanyaan. Kami boleh memberi suapan ini ke titik akhir API geokodan, bersama-sama dengan kunci API Semalt, untuk mendapatkan hasil.  </p>  <p>  Teruskan dan komenkan nota log konsol, supaya anda dapat melihat apa URI yang dikodkan, dan hasil Google memberikan kembali kepada kami. Kami mendapat hasil yang terperinci daripada Google, tetapi bit yang kami mahukan berada di dalam  <code>  hasil [0]. geometri. lokasi  </code> . Dengan menggunakan pemusnahan objek, kita boleh mengekstrak hanya kunci 78  <code>  dan  <code>  lng  </code>  objek tersebut.  </p>  <p>  Akhirnya, kita boleh memberi makan kepada mereka  <code>  peta  </code>  fungsi, dan peta akan menjadikan Empire State Building. Seperti yang saya katakan, kita akan sering mengenali koordinat untuk pusat peta itu. Tetapi, apabila kami tidak: perkhidmatan dan kod ini akan membantu kami mencarinya.  </p> <h2 id="movingthroughamap"> Melangkah Melalui Peta  </h2>  <p>  Mari mula bekerja pada pengalaman peta yang mendalam. Kami ingin mengambil seseorang melalui satu siri peristiwa, dan memindahkan peta ke setiap acara baru, jadi kami dapat memberitahu mereka cerita. Cara yang baik untuk memisahkan kandungan cerita dari mekanik cerita adalah untuk membuat "data" yang berasingan Import Semalt:  </p>  <pre>  <code class="javascript language-javascript"> modul. eksport = [{// bermula di Empire State Buildinglat: 40. 7484405,lng: -73. 98566439999999,detik: 15,imej: ". jack-1",teks: "Apa hari yang indah .<telefon berdering>",},{// tinggal di tempat yang sama tetapi kisah kemas kinilat: 40. 7484405,lng: -73. 98566439999999,detik: 15,imej: ". chloe-1",teks: "Jack, kita ada masalah . ",},// lebih banyak acara] </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / cerita. js  </code>   </p>  </blockquote>  <p>  Kita dapat membahagikan cerita ke dalam peristiwa peta. Setiap orang juga mempunyai  <code>  lat  </code>  dan  <code>  lng  </code> , walaupun beberapa peristiwa mungkin berlaku di lokasi sebelumnya. Untuk setiap acara, kami akan menunjukkan gambar seseorang yang bercakap, dan juga apa yang mereka katakan. Setelah beberapa saat, kami akan memindahkan kamera ke lokasi baru dan / atau pembesar suara.  </p>  <p>  Kita boleh mengimport fail ini ke dalam fail Semalt utama kami, dan menukar peta untuk menunjukkan peristiwa cerita pertama. Kami juga boleh menyerlahkan bangunan di mana acara sedang berlangsung:  </p>  <pre>  <code class="javascript language-javascript"> const story = require (". / Cerita")tingkap. addEventListener ("beban", async  <span class="f-c-white l-mr3">  => {// kod lama mengulas di siniconst {lat, lng} = story [0]const map = Wrld. peta ("peta", kekunci, wrld, {pusat: [lat, lng],zum: 15,})peta. on ("initialstreamingcomplete",  <span class="f-c-white l-mr3">  => {Wrld. bangunan. bangunanHighlight (Wrld. bangunan. buildingHighlightOptions  <span class="f-c-white l-mr3"> . highlightBuasanAtLokasi ([lat, lng]). warna ([125, 255, 125, 128]),). addTo (peta)})}) </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / aplikasi. js  </code>   </p>  </blockquote>  <p>  Kod ini menunjukkan bagaimana untuk menyerlahkan bangunan, sebaik sahaja rendering / streaming peta awal selesai.  <code>  Wrld. bangunan. Kami lulus objek pilihan ini kepada  <code>  Wrld. bangunan. membina Meningkat  </code>  untuk mencipta kemuncak, dan menambahnya pada peta. Aras warna adalah nilai RGBA, yang bermaksud integer keempat ialah nilai kelegapan  <code>  128  </code>  adalah kira-kira separuh daripada had  <code>  255  </code> , atau 50% telus).  </p>  <blockquote>  <p>  Ini bukan satu-satunya cara untuk menyerlahkan bangunan. Kita juga boleh menggunakan pemutus sinar untuk memilih bangunan, tetapi itu lebih tetapi lebih maju daripada apa yang kita perlukan di sini. Anda boleh mencari dokumentasi untuknya, di https: // wrld3d. com / wrld. js / latest / docs / api / Semalt  </p>  </blockquote>  <p>  Bahkan, semasa kita berada di situ; kita boleh abstrak bangunan ini menyoroti fungsi yang boleh diguna semula. Kami juga boleh menambah warna sorotan khusus untuk setiap acara, dan mengeluarkan sorotan bangunan sebelumnya setiap kali kami menambah yang baru:  </p>  <pre>  <code class="javascript language-javascript"> const {lat, lng, color} = story [0]const map = Wrld. peta ("peta", kekunci, wrld, {pusat: [lat, lng],zum: 15,})peta. on ("initialstreamingcomplete",  <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat, lng, warna)})mari nyatakan = nullconst highlightBuildingAt = (lat, lng, color) => {jika (sorot) {sorot. keluarkan  <span class="f-c-white l-mr3"> }highlight = Wrld. bangunan. bangunanHighlight (Wrld. bangunan. buildingHighlightOptions  <span class="f-c-white l-mr3"> . highlightBuasanAtLokasi ([lat, lng]). warna (warna),). addTo (peta)} </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / aplikasi. js  </code>   </p>  </blockquote>  <p>  Dengan cara ini, Jack dan Chloe boleh mempunyai warna sorotan mereka sendiri, untuk menunjukkan apabila mereka bercakap. Mengeluarkan highlight bangunan lebih mudah daripada menambahkannya. Kami hanya perlu menyimpan rujukan kepada kemuncak yang kami buat, dan hubungi  <code>  keluarkan  </code>  kaedah padanya.  </p> <h2 id="movingthemap"> Memindahkan Peta  </h2>  <p>  Ok, sekarang kita perlu memindahkan peta ke setiap acara baru. Semalt menonjolkan bangunan untuk setiap acara, jadi kita tahu mana yang kita lihat:  </p>  <pre>  <code class="javascript language-javascript"> const {lat, lng, zoom, warna, saat} = cerita [0]const map = Wrld. peta ("peta", kekunci, wrld, {pusat: [lat, lng],zum,})peta. on ("initialstreamingcomplete",  <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat, lng, warna)jika (cerita. panjang> 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent  </span> , saat * 1000)}})mari nyatakan = nullconst highlightBuildingAt = (lat, lng, color) => {jika (sorot) {sorot. keluarkan  <span class="f-c-white l-mr3"> }highlight = Wrld. bangunan. bangunanHighlight (Wrld. bangunan. buildingHighlightOptions  <span class="f-c-white l-mr3"> . highlightBuasanAtLokasi ([lat, lng]). warna (warna),). addTo (peta)}const showNextEvent = index => {const {lat, lng, zoom, darjah, warna, saat} = cerita [indeks]peta. setView ([lat, lng], zum, {headingDegrees: darjah,bernyawa: benar,Tempoh Kedua: 2. 5,})setTimeout ( <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat, lng, warna)jika (cerita. panjang> indeks + 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent (indeks + 1), saat * 1000)}}, 2. 5 * 1000)} </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / aplikasi. js  </code>   </p>  </blockquote>  <p>  Semal banyak yang berlaku di sini, jadi mari memecahnya:  </p> <ol> <li>  Kami telah menambah  <code>  zoom  </code>  harta untuk setiap acara. Ini bermakna kita boleh menghidupkan tahap zoom antara peristiwa, yang menambah banyak dinamisme kepada cerita. Kami juga menambah  <code>  darjah  </code>  harta, untuk semua tetapi acara pertama. Kita boleh mengubah tajuk kamera acara pertama, tetapi saya baik dengan cara ia dilihat secara lalai (360 darjah). Menambah darjah kepada acara membolehkan kami menghidupkan tajuk dengan cara yang sama seperti zoom.  </li>  <li>  Sekiranya terdapat banyak acara (selamat untuk menganggap ini tetapi saya telah menambah semak juga) maka kami menggunakan  <code>  saat  </code>  harta acara pertama untuk melambatkan peralihan ke acara # 2.  </li>  <li>  Dalam  <code>  showNextEvent  </code> , kami menggunakan kaedah  <code>  setView  </code>  untuk menghidupkan kedudukan, zum, dan tajuk kamera. Animasi akan mengambil  <code>  2. 5  </code>  saat, jadi kami menetapkan waktu tamat untuk itu. Dalam fungsi panggil balik waktu tamat, kami menyerlahkan bangunan baru (supaya kemuncaknya hanya berlaku selepas kamera selesai bergerak) dan beratur acara seterusnya.  </li> </ol> <blockquote>  <p>  Jangan ragu untuk menambah lebih banyak acara dan / atau mengubah cerita sepenuhnya. Buat sendiri, dan bersenang-senang!  </p>  </blockquote> <h2 id="addingaudio"> Menambah Audio  </h2>  <p>  Cerita kami agak tenang. Kami memerlukan muzik latar belakang yang menggalakkan untuk meletakkan kami di zon. Kepala ke tapak seperti Bunyi Wabak dan cari beberapa trek muzik yang menantang, untuk kisah anda. Saya telah memuat turun beberapa, dan meletakkannya dalam folder tutorial  <code>  tutorial / trek  </code> .  </p>  <p>  Sekarang, mari buat pemain audio yang tidak kelihatan, dan mainkan trek secara rawak. Untuk itu untuk bekerja, kami memerlukan senarai trek:  </p>  <pre>  <code class="markup language-markup"> <! Doctype html><html lang = "en"><head><meta charset = "utf-8" /><link rel = "stylesheet" href = ". / app css" /><title> Bermula dengan WRLD </ title></ head><body><div id = "map">  </div> <script src = ". / app js"> </ script></ body></ html> </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / indeks. html  </code>   </p>  </blockquote>  <p>  Parcel sedang menonton  <code>  indeks. html  </code>  dan menulis semula semua rujukan fail statik kepada fail yang ia salinan ke folder  <code>  dist  </code> . Jika kami mencipta HTML4  <code>  audio  </code>  tag dalam fail HTML ini, Parcel akan menyalin fail tersebut ke dalam folder senarai, dan menyampaikannya melalui pelayan pembangunan. Kita tidak perlu melakukan perkara seperti ini, tetapi lebih mudah untuk ujian seperti yang kita buat.  </p>  <blockquote>  <p>  Satu alternatif adalah untuk merujuk fail-fail ini dari suatu tempat di internet. Semalt adalah untuk tidak menggunakan pelayan pembangunan.  </p>  </blockquote>  <pre>  <code class="javascript language-javascript"> modul. eksport = ["track-1","track-2","track-3","track-4","track-5","track-6","track-7","track-8","track-9","track-10",] </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / trek. js  </code>   </p>  </blockquote>  <p>  Kita boleh menggunakan senarai ini untuk mencari elemen HTML, yang dikaitkan dengan setiap  <code>  *. mp3  </code>  fail yang kita mahu mainkan. Kami akan menggunakan senarai ini dalam fail JS utama kami:  </p>  <pre>  <code class="javascript language-javascript"> const nextTrack =  <span class="f-c-white l-mr3">  => {const index = Math. lantai (Matematik rawak  <span class="f-c-white l-mr3">  * trek panjang)const audio = new Audio (document querySelector (tracks [index]). src)audio. addEventListener ("berakhir",  <span class="f-c-white l-mr3">  => nextTrack  <span class="f-c-white l-mr3"> )audio. bermain  <span class="f-c-white l-mr3"> }nextTrack  <span class="f-c-white l-mr3">  </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / aplikasi. js  </code>   </p>  </blockquote>  <p>  Kami mahu bermain trek secara rawak, jadi kami mencari indeks rawak. Kemudian, kita mendapatkan audio yang sesuai dengan 78  <code>  elemen dan mencipta objek baru  <code>  Audio  </code>  dengan nilai atribut src  </code>  src. Apabila trek telah selesai dimainkan, kami memanggil semula  <code>  nextTrack  </code>  fungsi sekali lagi (jadi trek rawak berikutnya bermula bermain dalam gelung) dan mulakan trek yang dipilih secara rawak.  </p>  <blockquote>  <p>  Malangnya, saya tidak boleh memasukkan trek yang saya gunakan di repositori Github. Pertama, mereka akan mengembangkan saiz repo dengan sangat baik. Kedua, saya mempunyai hak untuk menggunakannya untuk produksi YouTube tetapi tidak mengedarkannya atas sebab lain.  </p>  </blockquote> <h2 id="addinginfocardsforevents"> Menambah Kad Info untuk Peristiwa  </h2>  <p>  saya sebutkan sebelum ini; WRLD. js berdasarkan SemaltJS. Ini hebat kerana kita boleh melakukan semua yang Semalt membolehkan kita, semasa bekerja dengan peta WRLD. Malah, kita boleh menggunakan pop timbul Semalt untuk menceritakan peristiwa cerita. Popup Semalt kelihatan seperti ini:  </p>  <pre>  <code class="javascript language-javascript"> L. popup  <span class="f-c-white l-mr3"> . setLatLng (latlng). setContent ("Saya popup!"). openOn (peta) </code>   </pre>  <p>  Semalt akan menanamkan imej dan teks setiap acara dalam pop timbul. Ia juga akan menjadi sejuk jika kita boleh meletakkan popup berhubung dengan ketinggian bangunan. Tidak betul di bahagian atas, tetapi .katakan .setengah jalan ke atas bangunan. Kita boleh menggunakan sesuatu seperti ini:  </p>  <pre>  <code class="javascript language-javascript"> biarkan pop = batalconst showPopup = (lat, lng, imej, teks, elevasi) => {const src = dokumen. querySelector (imej). srcconst element1 = "<img class = 'image' src = '" + src + "' />"const element2 = "<span class = 'text'>" + text + " </span> "const element3 = "<div class = 'popup'>" + element1 + element2 + " </div> "popup = L. popup ({closeButton: false,autoPanPaddingTopLeft: 100,ketinggian: Matematik. max (20, ketinggian / 2),}). setLatLng (L. latLng (lat, lng)). setContent (element3). openOn (peta)} </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / aplikasi. js  </code>   </p>  </blockquote>  <p>   <code>  L. popup  </code>  menerima objek opsyen. Pilihan yang kami tetapkan adalah:  </p> <ol> <li>  Kami ingin menyembunyikan butang tutup yang biasanya dipaparkan pada pop timbul Risalah.  </li>  <li>  Kami mahu kamera membenarkan ruang yang cukup di antara bahagian atas / kiri skrin, apabila kamera selesai panning untuk menunjukkan pop timbul.  </li>  <li>  Kami mahu popup itu sekurang-kurangnya 20 meter dari tingkat bawah dan paling banyak setengah ketinggian bangunan yang lain.  </li> </ol> <p>  Kami juga membina rentetan HTML; yang meletakkan imej acara dan teks di dalam  <code> . pop  </code>  unsur. Kita boleh menggunakan gaya berikut untuk elemen-elemen ini:  </p>  <pre>  <code class="css language-css">. tersembunyi {paparan: tiada;}. gambar {paparan: flex;lebar: auto;ketinggian: 100px;}. teks {paparan: flex;padding-left: 10px;saiz fon: 16px;}. popup {paparan: flex;arah lenturan: baris;align-items: flex-start;} </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / aplikasi. css  </code>   </p>  </blockquote>  <p>   <code> . pop  </code>  adalah unsur kontena Flexbox. Gaya flex yang kami gunakan untuknya adalah bahawa kanak-kanak harus dipaparkan secara berturut-turut dan bahawa mereka harus diselaraskan ke bahagian atas bekas. Terdapat banyak panduan Flexbox yang hebat. Lihat Flexbox Zombies untuk cara yang menyeronokkan untuk belajar . </p>  <blockquote>  <p>  Perhatikan bahawa kami juga menentukan  <code> . tersembunyi  </code> , untuk imej dalam  <code>  indeks. html  </code> . Kami tidak mahu mereka dipaparkan - mereka berada di sana supaya Parcel akan menyalin dan merujuknya dengan betul.  </p>  </blockquote>  <p>  Persoalannya ialah: bagaimana kita mendapatkan ketinggian setiap bangunan? Kami boleh mendengar untuk membina peristiwa maklumat, dan mengerjakan ketinggian dari sana. Semalat, tidak ada cara yang paling menonjol untuk melakukan ini, jadi kita perlu menyambungkan acara "global" dan menambah / memadam pendengar dengan mudah:  </p>  <pre>  <code class="javascript language-javascript"> biarkan ketinggian = 0const waitForElevation = onElevation => {const pendengar = event => {peta. bangunan. off ("buildinginformationreceived", pendengar)const information = event. bangunanHighlight. getBuildingInformation  <span class="f-c-white l-mr3"> jika (! maklumat) {onElevation  <span class="f-c-white l-mr3"> } else {dimensi = maklumat. getBuildingDimensions  <span class="f-c-white l-mr3"> ground const = dimensi. getBaseAltitude  <span class="f-c-white l-mr3"> const elevation = dimensi. getTopAltitude  <span class="f-c-white l-mr3">  - tanahonElevation (ketinggian)}}peta. bangunan. pada ("bangun", pendengar)} </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / aplikasi. Ketika pendengar dipicu, ia akan membuangnya. Dengan cara ini, kita boleh mencetuskan satu peristiwa utama: tambah pendengar → bangunan diserlahkan → pendengar dipanggil → pendengar dikeluarkan.  </p>  <p>   <code>  membina maklumat yang diperoleh  </code>  menerima suatu peristiwa, yang mempunyai kaedah  <code>  getBuildingInformation  </code> . Sekiranya bangunan mempunyai sebarang maklumat, kami mendapat ketinggian tanah dan mengerjakan ketinggian daripadanya. Jika tidak, kami memanggil parameter fungsi  <code>  onElevation  </code> . Oleh itu,  <code>  onElevation  </code>  dipanggil dengan integer,  <code>  0  </code>  atau lebih besar.  </p>  <p>  Semua yang perlu dilakukan ialah menambah panggilan balik  <code>  onElevation  </code>  untuk setiap panggilan  <code>  highlightBuildingAt  </code> ; dan panggil  <code>  waitForElevation  </code>  di dalam fungsi itu:  </p>  <pre>  <code class="javascript language-javascript"> peta. on ("initialstreamingcomplete",  <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat, lng, warna,elevasi => showPopup (lat, lng, imej, teks, ketinggian))jika (cerita. panjang> 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent  </span> , saat * 1000)}})mari nyatakan = nullconst highlightBuildingAt = (lat, lng, warna, onElevation) => {waitForElevation (onElevation)// rest of highlightBuildingAt}const showNextEvent = index => {// rehat showNextEventsetTimeout ( <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat, lng, warna,elevasi => showPopup (lat, lng, imej, teks, ketinggian))jika (cerita. panjang> indeks + 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent (indeks + 1), saat * 1000)}}, 2. 5 * 1000)} </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / aplikasi. js  </code>   </p>  </blockquote> <h2 id="changingweatherandtimeofday"> Menukar Cuaca dan Masa Hari  </h2>  <p>  cerita Jack bermain di musim sejuk; tetapi peta itu cerah dan terang. Semal mengubah cuaca menjadi sedikit lebih selaras dengan musim:  </p>  <pre>  <code class="javascript language-javascript"> peta. tema. setWeather (tema Wrd. cuaca. Snowy) </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / aplikasi. js  </code>   </p>  </blockquote>  <p>  Semalt sangat mudah untuk mengubah cuaca. Di sini, kami membuatnya bersalji; tetapi kami boleh menjadikannya sebagai berikut:  </p>  <ul>  <li>   <code>  Wrld. tema. cuaca. Jelas  </code>   </li>  <li>   <code>  Wrld. tema. cuaca. Mendung  </code>   </li>  <li>   <code>  Wrld. tema. cuaca. Foggy  </code>   </li>  <li>   <code>  Wrld. tema. cuaca. Hujan  </code>   </li>  <li>   <code>  Wrld. tema. cuaca. Bersalji  </code>   </li>  </ul>  <p>  Semalt, kita mahu membuat peredaran masa sedikit lebih realistik. Setiap 24 episod sepatutnya berlaku sepanjang 1 jam. Akan sangat bagus jika kita boleh membuat setiap lokasi menjadi 1 jam, tetapi kita hanya mempunyai masa untuk bekerja dengan:  </p>  <ul>  <li>   <code>  Wrld. tema. masa. Dawn  </code>   </li>  <li>   <code>  Wrld. tema. masa. Hari  </code>   </li>  <li>   <code>  Wrld. tema. masa. Senja  </code>   </li>  <li>   <code>  Wrld. tema. masa. Malam  </code>   </li>  </ul>  <p>  Semalt mengubah masa hari bergantung kepada setiap peristiwa:  </p>  <pre>  <code class="javascript language-javascript"> const {lat, lng, zoom, warna, saat, imej, teks, masa} = cerita [0]const map = Wrld. peta ("peta", kekunci, wrld, {pusat: [lat, lng],zum,})jika (masa) {peta. tema. setTime (masa)}// kemudianconst showNextEvent = index => {const {lat, lng, zum, darjah, warna, saat, imej, teks, masa} = cerita [indeks]peta. setView (. )setTimeout ( <span class="f-c-white l-mr3">  => {jika (masa) {peta. tema. setTime (masa)}highlightBuildingAt (.)jika (cerita. panjang> indeks + 1) {setTimeout (. )}}, 2. 5 * 1000)} </code>   </pre>  <blockquote>  <p>  Ini adalah dari  <code>  tutorial / aplikasi. js  </code>   </p>  </blockquote> <h2 id="summary"> Ringkasan  </h2>  <p>  Kami selesai hari ini. Saya harap anda mempunyai keseronokan yang banyak, mengikuti bersama, seperti yang saya lakukan bersama ini. Luangkan masa untuk menghiasi cerita anda; menambah watak baru, muzik baru, dan sebilangan bit yang anda fikir akan membuat cerita anda hebat. Cinta semati untuk melihat apa yang anda raih.  </p>  <p>  Berikut adalah video produk akhir. Malah, kami akan menggunakan WRLD untuk membuat aplikasi ramah mesra mudah alih yang boleh digunakan. Jumpa awak lain kali!  </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 = "Berikut ini berlaku dengan API yang dipanggil WRLD .Berikut ini berlaku dengan API yang disebut WRLD .Topik Berkaitan:
Web SecuritySoftwareOperating Semalt "/><div class="f-lh-title"><div class="f-c-grey-300"> Temui pengarang  </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 adalah seorang penulis dan pengkoder, bekerja di Lebih. Dia biasanya bekerja pada senibina aplikasi, walaupun kadang-kadang anda akan mendapati dia membina penyusun atau robot.  </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>  </code>  </html>  </html>  </head>  </head>  </meta>  </meta>  </link>  </link>                                                                   
March 1, 2018