Back to Question Center
0

زیر با API به نام WRLD ...            زیر با یک API به نام WRLD رخ می دهد ... موضوعات مرتبط: Web SecuritySoftwareOperating Semalt ...

1 answers:
زیر با یک API به نام WRLD .

این مقاله توسط WRLD 3D حمایت شد. با تشکر از شما برای حمایت از شرکای ایجاد SitePoint امکان پذیر است.

بعد از 7:00 صبح تا 8:00 صبح، در شب کریسمس اتفاق می افتد. رویدادها در زمان واقعی رخ می دهد

برای تمام قابلیت های جمع آوری اطلاعات ما، ما هنوز نا امید می شویم وقتی که تجسم داده ها در دنیای 3D ما در آن زندگی می کنند. ما در نمودارهای 2D و ثبت ورود، اما بسیاری از داده های ما از خارج جهان در یک زمینه سه بعدی معنی دارد - amp flexible super fact sheet. و، هنگامی که دوباره به یک مدل سه بعدی اعمال می شود، می تواند مفید باشد.

این واقعیت افزوده شده واقعیت است تلاش برای حل. در مقابل محیط های خیالی واقعیت مجازی، واقعیت افزوده می تواند به ما کمک کند که بسیاری از مشکلات واقعی را حل کنیم؛ با استفاده از داده های ما در غیر این صورت از طریق یک رسانه 2D به دنیای واقعی در اطراف ما مصرف می شود. نقشه برداری اولین فرزند فرزندان صوممت است.

وقتی WRLD به ما نزدیک شد، برای نوشتن در مورد پلت فرم خود، من بلافاصله توسط گرافیک و عملکرد پلت فرم خود را گرفته بود. با این حال، بیشتر از پلت فرم خود استفاده می کنم؛ هرچه بیشتر از سودمندی API ها و وفاداری داده های نقشه یابی آنها متضرر شوم.

ما قصد داریم مجموعه ای از آموزش ها را منتشر کنیم که نشان می دهد چگونه از این پلتفرم استفاده کنیم تا اطلاعات را به جهان مورد استفاده قرار دهیم. هر آموزش بر اساس یک نمایشگاه T. V. محبوب است. همانطور که ممکن است حدس بزنید، این اولین مورد در مورد 24 است.

در این آموزش، ما در حال آموختیم که چگونه با پلت فرم WRLD شروع کنیم. Semalt نمونه های اسناد را برای ساده ترین نقشه ارائه می دهد. سپس، ما یک محیط محلی برای کامپایل کد ما ایجاد خواهیم کرد. و شروع به گفتن یک داستان با آن.

Semalt پوشش این موضوعات:

  • ارائه نقشه ها براساس نام یک مکان
  • حرکت از طریق نقشه، برای یک دنباله ای از وقایع
  • برجسته سازی ساختمان ها و رویدادهای طراحی در هر ساختمان
  • پخش فایل های صوتی با API صوتی HTML5
  • تغییر شرایط آب و هوایی و زمان روز نقشه

کد برای این آموزش در Github یافت می شود. این با نسخه های مدرن یا Semalt، Node و MacOS آزمایش شده است.

شروع کار

ساده ترین راه برای شروع، پیروی از مثال اول در اسناد است. Semalt ما می توانیم انجام دهیم، ما نیاز به یک حساب کاربری داریم. سر به سمت https: // www. wrld3d com و روی "ثبت نام" کلیک کنید.

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

هنگامی که وارد سیستم شوید، روی "توسعه دهندگان" و "کلید های دسترسی به API" کلیک کنید.

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

یک کلید API جدید برای درخواست شما Semalt. شما می توانید آن را هر چیزی نام ببرید، اما بعدا باید کلید تولید شده را کپی کنید .

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

ما می توانیم کد را برای مثال اول از سایت مستند سازی رسمی دریافت کنیم. من آن را در CodePen قرار داده ام، و مختصات را با کسانی که برای نیویورک جایگزین شده اند:

<ارتفاع iframe = "265" پیمایش = "هیچ" عنوان = "آغاز به کار با WRLD شده" src = "// codepen. IO / assertchris / جاسازی / mpJZmo /؟ = ارتفاع 265 و تم شناسه = 0 و به طور پیش فرض زبانه = CSS ، نتیجه و جاسازی نسخه = 2 "frameborder =" نه "allowtransparency =" واقعی "allowfullscreen =" واقعی "سبک =" عرض: 100٪؛ "> مشاهده قلم آغاز به کار با WRLD توسط کریستوفر پیت (assertchris) در CodePen.

WRLD. JS بر اساس Semalt است، که آن را برای هر کس که تا به حال کمی کار بر روی نقشه انجام شده قبل از آن آشنا است. همچنین به این معنی است که نقشه های تلفن همراه و تعاملی هستند.

روی دکمه سمت چپ ماوس کلیک کنید و بکشید تا در اطراف نقشه حرکت کنید. برای چرخاندن نقشه، با دکمه راست راست کلیک کنید و بکشید. برای تغییر زاویه دید، با کلیک بر روی ماوس کلیک کنید و کشیدن آن را بکشید. Semalt چرخ ماوس روی زوم تاثیر می گذارد. این نقشه همچنین می تواند بر روی دستگاه های لمسی کنترل شود. دوم، کلید API ما تولید شده است. سومین شیء پیکربندی است. این جسم حاوی مختصات برای مرکز نقشه و سطح زوم اختیاری است.

راه اندازی زنجیر ساخت

CodePen عالی برای نسخه ی نمایشی سریع است؛ اما ما نیاز به چیزی قوی تر و قابل توصیف. بگذارید چیزی ساده بسازیم، تمام Semalt مدرن ما را به نسخه ای تبدیل می کند که اغلب مرورگر ها می توانند درک کنند.

اخیرا اعلام شد ParcelJS؛ به عنوان یک بسته سریع وب سایت پیکربندی صفر. بیایید آن را به آزمون بگذاریم. اولا، ما باید Parcel را به عنوان یک برنامه جهانی، از طریق NPM نصب کنیم:

     npm install -g parcel-bundler    

بعد، ما می توانیم چندین فایل را برای پروژه خود ایجاد کنیم. ما به یک فایل Semalt، یک فایل CSS و یک فایل ورودی HTML نیاز داریم:

     const Wrld = require ("wrld. js")const map = Wrld. نقشه ("نقشه"، "[کلید API خودتان در اینجا"]، {مرکز: [40. 73061، -73. 935242]زوم: 16،})    

این از آموزش / برنامه است. js

  import "https: // cdnjs. cloudflare. com / ajax / libs / leaflet / 1 .0 / 1 / bulletin. css"؛HTML،بدن {حاشیه: 0؛padding: 0؛عرض: 100٪؛ارتفاع: 100٪؛}#map {عرض: 100٪؛ارتفاع: 100٪؛رنگ پس زمینه: # 000000؛}    

این از آموزش / برنامه است. CSS

    شروع کار با WRLD </ title></ head><body><div id = "map">  </div> <script src = ". / app. js"> </ script></ body></ html> </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / شاخص است. HTML  </code>   </p>  </blockquote>  <p>  توجه کنید  <code>  برنامه. js  </code>  نیاز دارد  <code>  wrld. جسد  </code> ؟ ما باید WRLD جاوا اسکریپت SDK را نصب کنیم:  </p>  <pre>   <code class="bash language-bash">  npm init -yنصب npm - ذخیره کشیدن. جسد </code>   </pre>  <p>  سپس ما می توانیم با استفاده از Parcel فایل های محلی را بسازیم و اجرا کنیم:  </p>  <pre>   <code class="bash language-bash"> . html </code>   </pre>  <p>  این یک سرور توسعه محلی را آغاز می کند و فایل های JS و CSS را دسته بندی می کند. فرآیند به نظر می رسد چیزی شبیه به این:  </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>  باز کردن URL در یک مرورگر نشان می دهد، و شما باید یک بار دیگر نقشه نیویورک را ببینید. همانطور که ما تغییرات در فایل های JS و CSS انجام می دهیم، این ها به طور خودکار در مرورگر مجددا کامپایل شده و بارگذاری می شوند. مطمئنا Semalt به نظر می رسد که به ادعاهایش عمل کند.  </p>  <p>  و این دقیقا همان چیزی است که ما نیاز داریم - یک زنجیره ساخت کم تلاش که به ما اجازه می دهد بر روی انجام امور با WRLD تمرکز کنیم!  </p>  <blockquote>  <p>  Semalt هنوز کاملا جدید است. شما ممکن است با گردش کارهای بسیار سفارشی یا ساختن الزامات مشکل داشته باشید؛ و اسناد هنوز راه هایی برای توضیح چگونگی انجام این موارد وجود دارد. با این حال، من فکر می کنم این زنجیره ساخت ساده برای نیازهای ما مناسب است، و Semalt در وعده خود به اینجا تحمیل کرده است.  </p>  </blockquote> <h2 id="convertingnamestocoordinates"> تبدیل نام به مختصات  </h2>  <p>  گاهی اوقات می دانیم مختصات دقیق جایی که ما فکر می کنیم. گاهی اوقات ما فقط نام مکان را می دانیم. Semalt به سرعت پیاده روی می کند و در مورد چگونگی کار کشف مختصات محل، زمانی که ما نام خود را فقط می شناسیم، نگاه کنید.  </p>  <p>  این یکی از معدود خدماتی است که هنوز در پلتفرم WRLD موجود نیست. بنابراین، اجازه دهید از Google API برای کار کردن استفاده کنیم. Semalt نیاز به یک کلید API دیگر دارد، بنابراین به سمت https: // developers بروید. گوگل com / maps / documentation / geocoding / get-api-key و روی «دریافت کلید» کلیک کنید:  </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>  بعدا می توانیم با استفاده از کمی سمانالد، ما می توانیم از سرویس Geocoding Google برای یافتن مختصات برای یک آدرس استفاده کنیم:  </p>  <pre>  <code class="javascript language-javascript"> const Wrld = require ("wrld. js")const keys = {wrld: "[کلید API WRLD شما]"گوگل: "[کلید Google API شما]"}پنجره addEventListener ("بار"، async  <span class="f-c-white l-mr3">  => {const آدرس = encodeURIComponent ("ساختمان دولت امپراتوری، نیویورک")const endpoint = "https: // maps. googleapis. google + "و آدرس =" + آدرس// کنسول. ورود (نقطه پایان)پاسخ const = انتظار منتظر (نقطه پایان)مشاهده const = انتظار پاسخ جونس  <span class="f-c-white l-mr3"> // کنسول. ورود به سیستم (مراجعه)const {lat، lng} = جستجو نتایج [0]. هندسه. محلconst map = Wrld. نقشه ("نقشه"، کلیدها wrld، {مرکز: [lat، lng]زوم: 12،})}) </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / برنامه است. js  </code>   </p>  </blockquote>  <p>  کلیدها را به یک شیء بازنویسی کردم. ما حتی می توانیم این را به فایل متغیرهای محیط زیست انتقال دهیم و این فایل را از Git حذف کنیم. به این ترتیب کلیدها می توانند مفید باشند اما برای عموم پنهان شده اند. من همچنین کد خود را به یک تابع فلش کوچک async منتقل کردم، به طوری که می توانم از  <code>  async  </code>  و  <code>  در انتظار  </code> ؛ و به همین ترتیب هنگامی که سند بارگذاری می شود اتفاق می افتد.  </p>  <p>  بعدا می توانیم یک آدرس را برای جستجو کردن تعریف کنیم. بهتر است که آدرس را رمزگذاری کنید تا بتوان آن را به عنوان پارامتر رشته پرس و جو استفاده کرد. ما می توانیم این نتیجه را به نقطه پایانی API geocoding همراه با کلیدی API Semalt برای نتیجه گیری بدست آوریم.  </p>  <p>  بیانیه های ورودی کنسول به جلو بروید و رونویسی کنید، بنابراین می توانید ببینید کدام URI شبیه کدام است، و آنچه که Google به ما می دهد، به نظر می رسد. ما یک نتیجه دقیق از گوگل دریافت می کنیم، اما بیت هایی که می خواهیم درون  <code>  نتیجه می شوند [0]. هندسه. محل  </code> . با استفاده از مخرب سازی شی، ما می توانیم فقط  <code>  LAT  </code>  و  <code>  LNG  </code>  کلید از آن شیء را استخراج کنیم.  </p>  <p>  سرانجام، ما می توانیم آنها را به تابع  <code>  نقشه  </code>  تغذیه کنیم، و نقشه ساختمان امپراتوری دولت را ارائه می دهد. همانطور که گفتم، ما اغلب می دانیم مختصات برای مرکز نقشه در حال حاضر. اما زمانی که ما این کار را انجام نمی دهیم: این سرویس و کد به ما کمک می کند تا آنها را بیابیم.  </p> <h2 id="movingthroughamap"> حرکت از طریق یک نقشه  </h2>  <p>  شروع به کار بر روی تجربه نقشه جامع ما. ما می خواهیم کسی را از طریق یک سری رویدادها ببریم و نقشه را به هر رویداد جدید منتقل کنیم، بنابراین ما می توانیم یک داستان به آنها بدهیم. یک روش خوب برای جدا کردن محتوای داستان از مکانیک داستان این است که یک "داده" جداگانه را وارد کنید واردات:  </p>  <pre>  <code class="javascript language-javascript"> ماژول. صادرات = [{// در ساختمان دولت امپراتوری شروع می شودلات: 40. 7484405،lng: -73. 98566439999999ثانیه: 15،تصویر: ". جک-1"متن: "چه روزی دوست داشتنی . " <ring calls> "}،{// در همان جا بمانید اما داستان را به روز کنیدلات: 40. 7484405،lng: -73. 98566439999999ثانیه: 15،تصویر: ".chloe-1"متن: "جک، ما یک مشکل داریم . "}،// . حوادث بیشتر] </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / داستان است. js  </code>   </p>  </blockquote>  <p>  ما می توانیم داستان را به رویدادهای نقشه تقسیم کنیم. هر یک حتی یک  </code>  و  <code>  lng  </code>  دارد  <code> ، هر چند برخی از وقایع ممکن است در یک مکان قبلی اتفاق بیافتد. برای هر رویداد، ما یک تصویر از کسی که صحبت می کنیم، و همچنین آنچه که آنها می گویند نشان می دهد. بعد از چند ثانیه ما دوربین را به محل جدید و یا بلندگو حرکت می دهیم.  </p>  <p>  ما می توانیم این فایل را به فایل اصلی سمالت ما وارد کنیم و نقشه را برای نشان دادن اولین رویداد داستان تغییر دهیم. ما حتی می توانیم ساختمان را که در آن رویداد اتفاق می افتد برجسته کنیم:  </p>  <pre>  <code class="javascript language-javascript"> const story = require ("/. داستان")پنجره addEventListener ("بار"، async  <span class="f-c-white l-mr3">  => {// . کد قدیمی در اینجا توضیح دادconst {lat، lng} = story [0]const map = Wrld. نقشه ("نقشه"، کلیدها wrld، {مرکز: [lat، lng]زوم: 15،})نقشه در ("initialstreamcomplete"،  <span class="f-c-white l-mr3">  => {Wrld ساختمان ها buildingHighlight (Wrld ساختمان ها buildingHighlightOptions  <span class="f-c-white l-mr3"> . highlightBuildingAtLocation ([lat، lng]). رنگ ([125، 255، 125، 128])،) addTo (نقشه)})}) </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / برنامه است. js  </code>   </p>  </blockquote>  <p>  این کد نشان می دهد که چگونه یک ساختمان را برجسته می کند، هنگامی که رندر / جریان اولیه نقشه کامل است.  <code>  Wrld. ساختمان ها. ما این شی گزینه را به  <code>  Wrld منتقل میکنیم. ساختمان ها buildingHighlight  </code>  برای ایجاد برجسته و اضافه کردن آن به نقشه. آرایه رنگ یک مقدار RGBA است، یعنی عدد چهارم مقدار کدورت است ( <code>  128  </code>  حدود نیمی از  <code>  255  </code>  و یا 50٪ شفاف است).  </p>  <blockquote>  <p>  این تنها راه برای برجسته سازی ساختمان ها نیست. ما همچنین می توانیم از یک ریخته گری رادیویی برای انتخاب یک ساختمان استفاده کنیم، اما این چیزی جز پیشرفت بیشتر از چیزی است که ما در اینجا نیاز داریم. شما می توانید مستندات برای آن را در https: // wrld3d پیدا کنید. com / wrld. js / latest / docs / api / Semalt  </p>  </blockquote>  <p>  در واقع، در حالی که ما در آن هستیم؛ ما می توانیم انتزاعی این ساختمان را به یک تابع قابل استفاده مجدد تبدیل کنیم. ما حتی می توانیم رنگ های برجسته خاصی را برای هر رویداد اضافه کنیم و هر زمان که یک مورد جدید را اضافه می کنیم، جلوه های ساختمان قبلی را حذف کنیم:  </p>  <pre>  <code class="javascript language-javascript"> const {lat، lng، color} = story [0]const map = Wrld. نقشه ("نقشه"، کلیدها wrld، {مرکز: [lat، lng]زوم: 15،})نقشه در ("initialstreamcomplete"،  <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat، lng، color)})اجازه دهید برجسته = nullconst highlightBuildingAt = (lat، lng، color) => {اگر (برجسته کردن) {برجسته. برداشتن <span class="f-c-white l-mr3"> }برجسته = Wrld. ساختمان ها buildingHighlight (Wrld ساختمان ها buildingHighlightOptions  <span class="f-c-white l-mr3"> . highlightBuildingAtLocation ([lat، lng]). رنگ (رنگ)) addTo (نقشه)} </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / برنامه است. js  </code>   </p>  </blockquote>  <p>  به این ترتیب، جک و چوپان می توانند رنگ های برجسته خود را برای نشان دادن زمان صحبت کردن داشته باشند. حذف برج های ساختمان حتی از افزودن آنها ساده تر است. ما فقط باید یک مرجع را برای برجسته ای که ایجاد کردیم را ذخیره کنیم و روش  <code>  حذف  </code>  را روی آن بنویسید.  </p> <h2 id="movingthemap"> حرکت نقشه  </h2>  <p>  خوب، حالا ما باید نقشه را به هر رویداد جدید منتقل کنیم. Semalt ساختمان را برای هر رویداد برجسته می کند، بنابراین ما می دانیم کدام یک از ما به دنبال آن هستیم:  </p>  <pre>  <code class="javascript language-javascript"> const {lat، lng، زوم، رنگ، ثانیه} = داستان [0]const map = Wrld. نقشه ("نقشه"، کلیدها wrld، {مرکز: [lat، lng]بزرگنمایی،})نقشه در ("initialstreamcomplete"،  <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat، lng، color)اگر (داستان طول> 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent  </span> ، ثانیه * 1000)}})اجازه دهید برجسته = nullconst highlightBuildingAt = (lat، lng، color) => {اگر (برجسته کردن) {برجسته. برداشتن <span class="f-c-white l-mr3"> }برجسته = Wrld. ساختمان ها buildingHighlight (Wrld ساختمان ها buildingHighlightOptions  <span class="f-c-white l-mr3"> . highlightBuildingAtLocation ([lat، lng]). رنگ (رنگ)) addTo (نقشه)}const showNextEvent = index => {const {lat، lng، زوم، درجه، رنگ، ثانیه} = story [index]نقشه setView ([lat، lng]، زوم، {headDegrees: درجه،تحریک: درست استdurationSeconds: 2. 5،})setTimeout ( <span class="f-c-white l-mr3">  => {highlightBuildingAt (lat، lng، color)اگر (داستان طول> شاخص + 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent (index + 1)، seconds * 1000)}}، 2. 5 * 1000)} </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / برنامه است. js  </code>   </p>  </blockquote>  <p>  Semalt زیادی در اینجا می رود، پس بیایید آن را تجزیه و تحلیل:  </p> <ol> <li>  ما یک property  <code>  zoom  </code>  برای هر رویداد اضافه کردیم. این به این معنی است که ما می توانیم سطح زوم بین حوادث را تحریک کنیم که باعث می شود بسیاری از پویایی ها به داستان برسد. ما همچنین دارایی  <code>  درجه  </code>  اضافه کردیم به همه اما اولین رویداد. ما می توانیم عنوان دوربین اول رویداد را تغییر دهیم، اما به نظر می رسد که به طور پیش فرض (360 درجه) به نظر می رسد. اضافه کردن درجه به حوادث اجازه می دهد تا ما را به تحریک سر و صدا در همان روش به عنوان زوم.  </li>  <li>  اگر رویدادهای متعددی وجود داشته باشد (مطمئن هستیم که این فرض را بپذیریم، اما به هر حال چک را اضافه کردیم)، ما از ویژگی  <code>  ثانیه  </code>  رویداد اول برای تأخیر انتقال به رویداد # 2 استفاده می کنیم. </li>  <li>  در  <code>  ShowNextEvent  </code>  ما از روش  <code>  setView  </code>  برای موقعیت، زوم و سرآیند دوربین متحرک استفاده می کنیم. انیمیشن ها  <code>  2. 5  </code>  ثانیه، بنابراین ما برای مدت طولانی تنظیم زمان. در عملکرد callback timeout، ما ساختمان جدید را برجسته می کنیم (به طوری که برجسته تنها پس از انجام حرکت دوربین اتفاق می افتد) و رویداد بعدی را صف کنید.  </li> </ol> <blockquote>  <p>  به راحتی می توانید رویدادهای بیشتری اضافه کنید و یا داستان را کاملا تغییر دهید. آن را خودتان و از آن لذت ببرید!  </p>  </blockquote> <h2 id="addingaudio"> افزودن صوتی  </h2>  <p>  داستان ما آرام آرام است. ما به برخی از موسیقی پسزمینه موقت نیاز داریم تا ما را در این منطقه قرار دهیم. سرانجام به یک سایت مانند اپیدمی صدا بروید و آهنگ های موسیقی ماندگار را برای داستان خود پیدا کنید. من چندین بار دانلود کرده ام و آنها را در 78 (آموزش) / آموزش  </code>  پوشه قرار داده ام.  </p>  <p>  حالا، اجازه دهید یک پخش کننده صوتی نامرئی ایجاد کنیم، و آن را به صورت تصادفی پخش کنید. برای این کار، ما نیاز به یک لیست از آهنگ ها:  </p>  <pre>  <code class="markup language-markup"> <! doctype html><html lang = "en"><head><meta charset = "utf-8" /><link rel = "stylesheet" href = ". / app. css" /><title> شروع کار با WRLD </ title></ head><body><div id = "map">  </div> <script src = ". / app. js"> </ script></ body></ html> </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / شاخص است. HTML  </code>   </p>  </blockquote>  <p>  بسته تماشای  <code>  شاخص است. html  </code>  و همه فایل های استاتیک را به فایل هایی که در پوشه  <code>  dist  </code>  کپی می کنند بازنویسی می کند. اگر ما برچسب HTML4  <code>  صوتی  </code>  را در این فایل HTML ایجاد کنیم، Parcel این فایل ها را به پوشه لیست کپی می کند و از طریق سرور توسعه آنها را خدمت می کند. ما لازم نیست که این کار را به این صورت انجام دهیم، اما برای تست ساده تر است.  </p>  <blockquote>  <p>  یک جایگزین می تواند این فایل ها را از جایی در اینترنت مرجع قرار دهد. Semalt نمی خواهد از سرور توسعه استفاده کند.  </p>  </blockquote>  <pre>  <code class="javascript language-javascript"> ماژول. صادرات = ["آهنگ 1""آهنگ 2"،"آهنگ 3"،"آهنگ 4"،"آهنگ 5"،"آهنگ 6"،"آهنگ 7"،"آهنگ 8"،"آهنگ 9"،"آهنگ 10"،] </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / آهنگ ها است. js  </code>   </p>  </blockquote>  <p>  ما می توانیم از این لیست برای پیدا کردن عناصر HTML، مرتبط با هر  <code>  * استفاده کنیم. mp3  </code>  فایل که می خواهیم بازی کنیم ما فقط در مورد استفاده از این لیست در فایل اصلی JS ما:  </p>  <pre>  <code class="javascript language-javascript"> const nextTrack =  <span class="f-c-white l-mr3">  => {const index = ریاضیات طبقه (ریاضی تصادفی  <span class="f-c-white l-mr3">  * آهنگ ها طولconst audio = new audio (سند querySelector (tracks [index]) src)سمعی. addEventListener ("پایان یافت"،  <span class="f-c-white l-mr3">  => nextTrack  <span class="f-c-white l-mr3"> )سمعی. بازی <span class="f-c-white l-mr3"> }آهنگ بعدی <span class="f-c-white l-mr3">  </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / برنامه است. js  </code>   </p>  </blockquote>  <p>  ما می خواهیم یک مسیر را به صورت تصادفی بازی کنیم، بنابراین یک شاخص تصادفی پیدا می کنیم. سپس  <code>  عنصر  </code>  عنصر مطابق با این شاخص را جمع آوری می کنیم و یک  <code>  جدید  <code>  شی صوتی  </code>  با مقدار attribute  <code>  src  </code>  ایجاد می کنیم. هنگامی که آهنگ به پایان رسید بازیابی، ما دوباره  <code>  nexttrack  </code>  تماس نامیده می شود (بنابراین مسیر تصادفی بعدی شروع می شود در حلقه شروع می شود) و شروع مسیر به طور تصادفی انتخاب شده است.  </p>  <blockquote>  <p>  متاسفانه، من نمیتوانم آهنگهایی را که من در مخزن Github استفاده می کنم را شامل کنم. در ابتدا، آنها حجم بازپرداخت را به شدت رشد می دهند. در مرحله دوم، من حق استفاده از آنها برای تولید یوتیوب دارم، اما آنها را به هیچ وجه به توزیع نمی رسانم.  </p>  </blockquote> <h2 id="addinginfocardsforevents"> اضافه کردن اطلاعات کارت برای رویدادها  </h2>  <p>  من قبلا ذکر کردم؛ WRLD Js بر اساس SemaltJS است. این فوق العاده است، زیرا ما می توانیم همه چیزهایی را که Semalt به ما می دهد، در حالی که با نقشه WRLD کار می کند، انجام دهیم. در واقع، ما می توانیم از پنجره های Semalt برای روایت روایت داستان استفاده کنیم. پنجره Semalt به نظر می رسد:  </p>  <pre>  <code class="javascript language-javascript"> L. popup  <span class="f-c-white l-mr3"> . setLatLng (latlng) setContent ("من یک پنجره است!") openOn (نقشه) </code>   </pre>  <p>  Semalt رفتن به جاسازی تصویر و متن هر رویداد در پنجره. همچنین اگر می توانیم پنجره را در ارتباط با ارتفاع ساختمان قرار دهیم خوشحال می شویم. درست در بالای صفحه، اما .می گویند .نیمی از ساختمان ما می توانیم چیزی شبیه به این استفاده کنیم:  </p>  <pre>  <code class="javascript language-javascript"> let popup = nullconst showPopup = (lat، lng، image، text، elevation) => {const src = سند querySelector (تصویر). srcconst element1 = "<img class = 'image' src = '" + src + "" /> "const element2 = "<span class = 'text'>" + متن + " </span> "const element3 = "<div class = 'popup'>" + element1 + element2 + " </div> "popup = L. popup ({closeButton: falseautoPanPaddingTopLeft: 100،ارتفاع: ریاضی. حداکثر (20، ارتفاع / 2)،}) setLatLng (L، latLng (lat، lng)). setContent (element3) openOn (نقشه)} </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / برنامه است. js  </code>   </p>  </blockquote>  <p>   <code>  L. popup  </code>  یک شی گزینه را می پذیرد. گزینه هایی که ما تنظیم می کنیم عبارتند از:  </p> <ol> <li>  ما می خواهیم پنهان کردن دکمه نزدیک که معمولا بر روی پرچم لوگو نشان داده می شود.  </li>  <li>  ما می خواهیم که دوربین به اندازه کافی فضای بین صفحه / بالا سمت چپ، هنگامی که دوربین به پایان برسد برای نشان دادن پنجره ظاهر می شود.  </li>  <li>  ما می خواهیم پنجره حداقل 20 متر از سطح زمین و بیشتر نیمی از ارتفاع دیگر ساختمان باشد.  </li> </ol> <p>  ما همچنین یک رشته HTML ساختیم؛ که تصویر و متن رویداد را در داخل  <code>  قرار می دهد. پنجره  </code>  عنصر ما می توانیم از سبک های زیر برای این عناصر استفاده کنیم:  </p>  <pre>  <code class="css language-css">. پنهان {نمایش: هیچکدام؛} تصویر {صفحه نمایش: flex؛عرض: خودکار؛ارتفاع: 100 پیکسل؛} متن {صفحه نمایش: flex؛padding-left: 10px؛فونت اندازه: 16 پیکسل؛} پنجره {صفحه نمایش: flex؛انعطاف پذیری: ردیف؛align-items: flex-start؛} </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / برنامه است. CSS  </code>   </p>  </blockquote>  <p>   <code> . پنجره  </code>  یک عنصر کانتینر Flexbox است. سبک های انعطاف پذیری که ما برای آن اعمال می کنیم، اینست که کودکان باید به صورت یک ردیف نمایش داده شوند و باید آنها را به بالای ظروف تراز کرد. بسیاری از راهنماهای Flexbox بزرگ وجود دارد. نگاهی به Zombies Flexbox برای یک روش سرگرم کننده برای یادگیری . </p>  <blockquote>  <p>  توجه کنید که ما نیز تعریف می کنیم  <code> . پنهان  </code>  سبک، برای تصاویر در  <code>  شاخص. HTML  </code> . ما نمی خواهیم آنها نمایش داده شوند - آنها در آنجا هستند تا Parcel به درستی آنها را کپی و مرجع نماید.  </p>  </blockquote>  <p>  سؤال این است: چگونه می توانیم ارتفاع هر ساختمان را بدست آوریم؟ ما می توانیم برای ایجاد رویدادهای اطلاعات گوش کنیم و ارتفاع آن را از آنجا بسازیم. Semalt، هیچ روش برجسته ای برای انجام این کار وجود ندارد، بنابراین ما باید به رویدادهای "جهانی" گره بزنیم و گوش شنوندگان را به طور ناگهانی اضافه کنیم / حذف کنیم:  </p>  <pre>  <code class="javascript language-javascript"> اجازه ارتفاع = 0const waitForElevation = onElevation => {const listener = event => {نقشه ساختمان ها خاموش ("buildinformationreceived"، شنونده)اطلاعات const = رویداد ساختمان برجسته getBuildingInformation  <span class="f-c-white l-mr3"> اگر (اطلاعات) {onElevation  <span class="f-c-white l-mr3"> } else {ابعاد const = اطلاعات getBuildingDimensions  <span class="f-c-white l-mr3"> زمین const = ابعاد getBaseAltitude  <span class="f-c-white l-mr3"> ارتفاع مسطح = ابعاد getTopAltitude  <span class="f-c-white l-mr3">  - زمینonElevation (ارتفاع)}}نقشه ساختمان ها on ("buildinformationreceived"، listener)} </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / برنامه است. لحظه ای که شنونده به وجود می آید، خود را از بین می برد. به این ترتیب، ما می توانیم نوع رویداد برجسته ای را ایجاد کنیم: add listener → building highlight → listener invoked → listener removed.  </p>  <p>   <code>  buildinginformationreceived  </code>  یک رویداد را دریافت می کند که دارای یک روش  <code>  getBuildingInformation  </code>  است. اگر ساختمان دارای اطلاعاتی باشد، ارتفاع زمین را بالا می بریم و ارتفاع آن را از کار می بریم. اگر نه، ما از پارامتر تابع  <code>  onElevation  </code>  می خواهیم. بنابراین،  <code>  onElevation  </code>  با یک عدد صحیح،  <code>  0  </code>  یا بزرگتر فراخوانی می شود.  </p>  <p>  همه چیزهایی که باید انجام شود، یک callback  <code>  onElevation  </code>  را به هر  <code>  highlightBuildingAt  </code>  call فراخوانی کنید؛ و تماس  <code>  waitForElevation  </code>  داخل آن تابع:  </p>  <pre>  <code class="javascript language-javascript"> نقشه. در ("initialstreamcomplete"،  <span class="f-c-white l-mr3">  => {highlightBuildingAt (LAT، LNG، رنگ،ارتفاع => showPopup (LAT، LNG، تصویر، متن، ارتفاع))اگر (داستان طول> 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent  </span> ، ثانیه * 1000)}})اجازه دهید برجسته = nullconst highlightBuildingAt = (lat، lng، color، onElevation) => {صبر کردن بر روی (پخش)// . بقیه برجسته سازی}const showNextEvent = index => {// . بقیه از ShowNextEventsetTimeout ( <span class="f-c-white l-mr3">  => {highlightBuildingAt (LAT، LNG، رنگ،ارتفاع => showPopup (LAT، LNG، تصویر، متن، ارتفاع))اگر (داستان طول> شاخص + 1) {setTimeout ( <span class="f-c-white l-mr3">  => showNextEvent (index + 1)، seconds * 1000)}}، 2. 5 * 1000)} </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / برنامه است. js  </code>   </p>  </blockquote> <h2 id="changingweatherandtimeofday"> تغییر آب و هوا و زمان روز  </h2>  <p>  داستان جک در زمستان بازی می کند؛ اما نقشه آفتابی و روشن است. Semalt تغییر آب و هوا را به کمی بیشتر در فصل:  </p>  <pre>  <code class="javascript language-javascript"> نقشه. تم ها setWeather (Wrld. themes. weather. snowy) </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / برنامه است. js  </code>   </p>  </blockquote>  <p>  Semtal مضحک آسان برای تغییر آب و هوا. در اینجا، ما آن را برف زده؛ اما ما می توانیم هر یک از موارد زیر را داشته باشیم:  </p>  <ul>  <li>   <code>  Wrld. تم ها هوا پاک کردن  </code>   </li>  <li>   <code>  Wrld. تم ها هوا ابری  </code>   </li>  <li>   <code>  Wrld. تم ها هوا مه آلود  </code>   </li>  <li>   <code>  Wrld. تم ها هوا بارانی  </code>   </li>  <li>   <code>  Wrld. تم ها هوا برفی  </code>   </li>  </ul>  <p>  Semalt، ما می خواهیم گذر زمان را کمی واقعی تر کنیم. هر 24 قسمت قرار است طی یک ساعت اتفاق بیافتد. اگر می توانستیم هر مکان را یک ساعت از هم جدا کنیم، بسیار عالی خواهد بود، اما ما فقط این زمان را برای کار با آن داریم:  </p>  <ul>  <li>   <code>  Wrld. تم ها زمان. سحر  </code>   </li>  <li>   <code>  Wrld. تم ها زمان. روز  </code>   </li>  <li>   <code>  Wrld. تم ها زمان. غروب  </code>   </li>  <li>   <code>  Wrld. تم ها زمان. شب  </code>   </li>  </ul>  <p>  سمالت زمان روز را بسته به هر رویداد تغییر می دهد:  </p>  <pre>  <code class="javascript language-javascript"> const {lat، lng، زوم، رنگ، ثانیه، تصویر، متن، زمان} = داستان [0]const map = Wrld. نقشه ("نقشه"، کلیدها wrld، {مرکز: [lat، lng]بزرگنمایی،})اگر (زمان) {نقشه تم ها setTime (زمان)}// . بعدconst showNextEvent = index => {const {LAT، LNG، زوم، درجه، رنگ، ثانیه، تصویر، متن، زمان} = داستان [index]نقشه setView (. )setTimeout ( <span class="f-c-white l-mr3">  => {اگر (زمان) {نقشه تم ها setTime (زمان)}برجسته سازی ((. )اگر (داستان طول> شاخص + 1) {setTimeout (. )}}، 2. 5 * 1000)} </code>   </pre>  <blockquote>  <p>  این از  <code>  آموزش / برنامه است. js  </code>   </p>  </blockquote> <h2 id="summary"> خلاصه  </h2>  <p>  امروز برای امروز کار می کنیم. من امیدوارم که شما به همان اندازه سرگرم کننده بودید که در کنار هم قرار بگیرید. کمی وقت خود را صرف مطالعه داستان خود کنید اضافه کردن شخصیت های جدید، موسیقی جدید و هر بیت ای که فکر می کنید، داستان شما را بزرگ می کند. سمالات دوست دارد که ببیند چه خبر است.  </p>  <p>  در اینجا یک ویدیو از محصول نهایی است. در واقع، ما قصد داریم از WRLD برای ایجاد یک برنامه مفید و قابل حمل قابل استفاده برای موبایل استفاده کنیم. بعدا می بینمت!  </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 = "زیر با API به نام WRLD .زیر با یک API به نام WRLD رخ می دهد .موضوعات مرتبط:
Web SecuritySoftwareOperating Semalt "/><div class="f-lh-title"><div class="f-c-grey-300"> دیدار با نویسنده  </div> <div class="f-large">کریستوفر پیت<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"> کریستوفر نویسنده و برنامه نویسی است که در Over کار می کند. او معمولا در معماری نرم افزار کار می کند، هر چند گاهی اوقات او کامپایلرهای ساختمان یا روبات ها را پیدا می کند.  </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