ساخت با Geospatial Creator and Places API از Google Maps Platform، ساخت با Geospatial Creator and Places API از Google Maps Platform، ساخت با Geospatial Creator و Places API از Google Maps Platform

1. قبل از شروع

Geospatial Creator in Unity، که توسط ARCore و کاشی‌های سه‌بعدی Photorealistic از پلتفرم نقشه‌های Google ارائه شده است، به شما امکان می‌دهد به سرعت تجربه‌های واقعیت افزوده (AR) را برای طول و عرض جغرافیایی خاص بسازید و تجسم کنید، همه در ویرایشگر Unity. این می‌تواند مدت زمانی را که برای ساختن یک صحنه AR موقعیت‌یافته برای اپلیکیشن شما نیاز دارد تا حد زیادی کاهش دهد، اما اگر بخواهید چندین تجربه مشابه در مکان‌های مختلف ایجاد کنید، چه؟ با استفاده از C# API در Geospatial Creator، می توانید این کار را نیز انجام دهید.

در این لبه کد، کد C# را می نویسید که از Geospatial Creator و Places API از پلتفرم نقشه های گوگل برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه استفاده می کند. تجربیات به دست آمده را می توان قبل از کامپایل شدن در یک برنامه در ویرایشگر Unity بررسی و تنظیم کرد.

کتاب در ارتفاع صحیح قرار دارد

پیش نیازها

چیزی که یاد خواهید گرفت

  • نحوه استفاده از API در Geospatial Creator برای ایجاد و تجسم یک تجربه جغرافیایی در چندین مکان.
  • نحوه استفاده از Places API از پلتفرم نقشه های گوگل برای یافتن مکان مکان ها.
  • چگونه تجربه AR را در دستگاه خود اجرا کنید.

آنچه شما نیاز دارید

2. محیط خود را تنظیم کنید

برای استفاده از Geospatial Creator، باید مجوز دسترسی به کاشی‌های سه‌بعدی Photorealistic، خدمات ARCore در Google Cloud و Places API از پلتفرم Google Maps را تنظیم کنید.

یک پروژه Google Cloud راه اندازی کنید

این آزمایشگاه کد به یک پروژه Google Cloud با فعال بودن صورتحساب برای دسترسی به APIهای سرور Google نیاز دارد. تنظیم صورت‌حساب برای این نرم‌افزار کد الزامی است، اما فقط در صورتی از شما هزینه دریافت می‌شود که پروژه از سهمیه خدمات بدون هزینه خود فراتر رود.

برای راه اندازی یک پروژه در Google Cloud، این مراحل را دنبال کنید:

  1. یک پروژه در کنسول Google Cloud ایجاد کنید. یک پروژه Google Cloud ایجاد کنید
  2. در کادر متنی نام پروژه ، یک نام مناسب مانند ARCore Geospatial Project وارد کنید و سپس هر مکانی را انتخاب کنید.
  3. روی ایجاد کلیک کنید.
  4. در کنسول Google Cloud در صفحه انتخابگر پروژه، روی ایجاد پروژه کلیک کنید.
  5. به فعال کردن صورتحساب مراجعه کنید و قیمت کاشی‌های سه‌بعدی Photorealistic و قیمت‌گذاری Places API (جدید) را بررسی کنید.

Map Tiles API را فعال کنید

Map Tiles API کاشی های سه بعدی Photorealistic را ارائه می دهد که در ویرایشگر Unity قابل مشاهده هستند.

ARCore API را فعال کنید

ARCore API در Google Cloud به شما امکان می دهد به ARC Geospatial API در دستگاه مورد نظر دسترسی داشته باشید.

Places API را فعال کنید

API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید، که از آنها در کدها برای یافتن مکان های مرتبط استفاده خواهید کرد. این API نتایج جستجو و مختصات جغرافیایی مکان ها را ارائه می دهد.

یک کلید API برای پروژه خود ایجاد کنید

برای استفاده از احراز هویت کلید API برای تأیید اعتبار برنامه خود با خدمات Google Cloud راه دور، این مراحل را دنبال کنید:

  1. در کنسول Google Cloud در بخش APIs & services ، اعتبارنامه ها را انتخاب کنید.
  2. در بالای صفحه، روی Create Credentials کلیک کنید و سپس کلید API را انتخاب کنید.
  3. به کلید توجه کنید زیرا برای مراحل بعدی به آن نیاز دارید.

نرم افزار را راه اندازی کنید

برای شروع کار با نرم افزار Geospatial Creator، مراحل زیر را دنبال کنید:

  1. این مخزن را شبیه سازی کنید.
  2. Unity Hub را دانلود کنید و از آن برای نصب نسخه یونیتی 2022.3 استفاده کنید. مطمئن شوید که ابزارهای ساخت اختیاری Android یا iOS را نصب می کنید.
  3. در Unity Hub، Add > Add project from disk را فشار دهید.
  4. در پانل Hierarchy ، AR Geospatial Creator Origin را انتخاب کنید.
  5. در کادر متنی Google Maps Tile API Key ، کلید API را وارد کنید و سپس Enter (یا return در macOS) را فشار دهید. کلید API خود را در Geospatial Creator Origin قرار دهید
  6. در Edit > Project Settings > XR Plug-in Management > ARCore Extensions ، از احراز هویت کلید API برای Android یا iOS استفاده کنید و کلید API را وارد کنید.
  7. در File > Build Settings ، پلتفرم مورد نظر را به Android یا iOS تغییر دهید.

3. اولین لنگر خود را ایجاد کنید

در این کد لبه، شما یک لنگر AR ایجاد می کنید که می تواند در مکان های مختلف استفاده شود. شما از کتابخانه های عمومی در سانفرانسیسکو، کالیفرنیا، به عنوان مثال استفاده می کنید، اما با خیال راحت از مکان های نزدیک خود استفاده کنید.

درباره مؤلفه مبدأ خالق جغرافیایی

هر صحنه یونیتی که با Geospatial Creator ساخته شده است دقیقاً به یک Geospatial Creator Origin نیاز دارد. این شی بازی نقطه مرجع برای تبدیل مقادیر عرض جغرافیایی، طول جغرافیایی و ارتفاع در دنیای واقعی به مختصات بازی Unity است.

پروژه نمونه حاوی یک مبدأ خالق مکانی است که از سزیوم برای رندر کردن کاشی های سه بعدی فوتورئالیستی در نمای Scene ویرایشگر استفاده می کند و به شما امکان می دهد دقیقاً در کجای جهان محتوای AR شما ظاهر شود.

مبدا را حرکت دهید

مبدا Geospatial Creator را به طول و عرض جغرافیایی شعبه کتابخانه اصلی سانفرانسیسکو منتقل کنید.

برای استفاده از ادغام داخلی Geospatial Creator با Places API برای جابجایی خودکار مبدا به مکان صحیح، این مراحل را دنبال کنید:

  1. در پنل Hierarchy ، شی بازی Geospatial Creator Origin را انتخاب کنید.
  2. در پانل بازرس ، روی جستجوی مکان کلیک کنید.
  3. در گفتگوی جستجو، San Francisco Public Library تایپ کنید. اولین نتیجه باید در 100 خیابان لارکین باشد.
  4. روی Apply to objects کلیک کنید تا نتیجه جستجو در مبدا اعمال شود. باید ببینید که طول و عرض جغرافیایی مبدا به مختصات جدید به روز می شود.

ساختمان در دید است

یک لنگر Geospatial Creator به صحنه اضافه کنید

اکنون که یک Origin وجود دارد، با استفاده از GameObject > XR > AR Geospatial Creator Anchor، یک لنگر Geospatial Creator اضافه کنید. به‌طور پیش‌فرض، لنگر با مبدأ قرار می‌گیرد.

از این لنگر برای قرار دادن محتوای 3 بعدی AR خود استفاده کنید. مدل سه بعدی کتاب همراه با نمونه پروژه قرار داده شده است.

برای قرار دادن کتاب در صحنه خود، این مراحل را دنبال کنید:

  1. در پانل Project ، مدل Book را به صفحه نمایش ویرایشگر بکشید.
  2. در پانل سلسله مراتب ، مطمئن شوید که کتاب فرزند لنگری است که قبلا ایجاد کرده‌اید. هر شیء بازی کودک لنگر Geospatial Creator نسبت به لنگر قرار می گیرد.
  3. در پانل سلسله مراتب ، کتاب را انتخاب کنید. مقادیر موقعیت آن را روی 0، 0، 0 قرار دهید.

کتاب به صحنه اضافه شده است

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

در حالی که می‌توانید شی را در ویرایشگر حرکت دهید تا ارتفاع تقریبی WGS84 را بیابید، ترجیح داده می‌شود لنگرهای Geospatial را به‌عنوان لنگر پشت بام در این موقعیت پیکربندی کنید تا ارتفاع آنها به طور خودکار نسبت به سقف سازه‌ای که در بالا قرار دارند ثابت شود.

  • برای انجام این کار، پانل بازرس لنگر را باز کنید و ویژگی Altitude Type روی Rooftop قرار دهید.

هیئت بازرس

پس از انجام این کار، توجه داشته باشید که ارتفاع لنگر در نمای ویرایشگر تغییر نمی کند. این به این دلیل است که ارتفاع لنگر در زمان اجرا زمانی که لنگر برای لنگرهای پشت بام و زمین حل می شود تعیین می شود. برای تجسم لنگر روی پشت بام در نمای Scene ، می‌توانید از دکمه Snap To Tile استفاده کنید. این ارتفاع لنگر را مطابق با کاشی در نمای Scene تنظیم می کند، در حالی که بر ارتفاع لنگر حل شده در زمان اجرا تأثیر نمی گذارد.

  • برای اینکه مدل به جای اینکه روی پشت بام کتابخانه شناور باشد، پارامتر Altitude relative to rooftop تغییر دهید تا 15 متر بالاتر از پشت بام باشد.

مدل اکنون به خوبی بر فراز کتابخانه شناور است!

کتاب در ارتفاع صحیح قرار دارد

پروژه شما اکنون یک صحنه AR جغرافیایی کامل، شامل تمام اجزای سیستم AR مورد نیاز، مبدأ خالق مکانی و یک لنگر با یک مدل پیوست دارد.

سپس، لنگرهای تکراری را در مکان‌های کتابخانه اضافی ایجاد کنید.

4. مکان های لنگر جدید را با Places API پیدا کنید

API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید. در این کد لبه، شما از این API برای یافتن دیگر شاخه‌های کتابخانه‌های عمومی در سانفرانسیسکو استفاده می‌کنید و از آن نتایج برای ایجاد یک لنگر Geospatial Creator برای ده نتیجه جستجوی بعدی استفاده می‌کنید.

  • برای شروع، روی Assets > Scripts > Editor کلیک کنید و سپس فایل AnchorDuplicator.cs را باز کنید. این فایل مقداری کد boilerplate را ارائه می دهد که به شما کمک می کند با Places API شروع کنید و نتایج آن را تجزیه کنید.

با Places API احراز هویت کنید

  1. خط زیر را در کلاس AnchorDuplicator بیابید:
    private const string API_KEY = "<YOUR_API_KEY_HERE>";
    
  2. کلید بدست آمده در مراحل راه اندازی را جایگزین <YOUR_API_KEY_HERE> کنید.

برای عبارت جستجو از API Places پرس و جو کنید

با تکمیل تنظیمات مجوز API Places، می توانید کدی بنویسید که درخواست POST را آغاز می کند.

  • برای انجام این کار، متد CreatePlacesRequest را پیدا کنید و از تعریف متد زیر استفاده کنید:
    string postBody = "{ \"textQuery\": \"" + searchTerm + "\", " + 
                        "   \"locationBias\": { \"circle\": { " +
                        "      \"center\": { \"latitude\": " + lat + ", \"longitude\": " + lon + " }, " +
                        "      \"radius\": 10000 }" +
                        "   }" +
                        "}";
    
    string url = "https://places.googleapis.com/v1/places:searchText";
    
    UnityWebRequest request = UnityWebRequest.Post(url, postBody, "application/json");
    request.SetRequestHeader("X-Goog-Api-Key", apiKey);
    request.SetRequestHeader("X-Goog-FieldMask", "places.displayName,places.location");
    
    return request;
    
    اکنون، زمانی که متد CreatePlacesRequest فراخوانی می شود، درخواستی ارسال می شود که searchTerm در دایره ای با محوریت lat و lon جستجو می کند.

کار خود را تست کنید

قبل از ادامه، باید تأیید کنید که تماس‌ها با Places API موفق هستند.

  1. توابع را در ویرایشگر یونیتی اجرا کنید:
    1. در Google AR Codelab ، روی Run Places Request کلیک کنید.
    2. کنسول Unity را باز کنید. باید ببینید نتایج ظاهر می شوند. مکان ها در کنسول ظاهر می شوند

5. به صورت برنامه ای لنگرها را به مکان ها اضافه کنید

اکنون که تأیید کردید که API Places نتایج را پیدا می کند، لنگرهای Geospatial Creator جدید در هر مکان مشخص شده توسط نتایج ایجاد کنید.

یک آیتم منو ایجاد کنید

  1. در کلاس AnchorDuplicator ، متد CreateNewAnchorsFromPlaces را پیدا کنید و از تعریف متد زیر استفاده کنید:
    if (_places == null)
    {
        Debug.LogError("Cannot create anchors: Places has not been initialized.");
        return;
    }
    
    // You start with only one anchor in the scene, which you want to copy:
    var prototypeAnchorObject = GameObject
        .FindObjectOfType<ARGeospatialCreatorAnchor>()
        .gameObject;
    
    foreach (var place in _places)
    {
        var newAnchorObject = GameObject.Instantiate(prototypeAnchorObject);
        var anchor = newAnchorObject.GetComponent<ARGeospatialCreatorAnchor>();
        anchor.Latitude = place.location.latitude;
        anchor.Longitude = place.location.longitude;
    
        newAnchorObject.name = place.displayName.text;
    }
    
    این آیتم منو درخواستی را که قبلاً شروع شده است بررسی می‌کند و از اولین ARGeospatialCreatorAnchor در صحنه شما به عنوان نمونه اولیه برای ایجاد لنگرها، در هر مکان در نتیجه Places API استفاده می‌کند.
  2. از آیتم جدید Create New Anchors from Places Response در Google AR Codelab برای ایجاد لنگرها استفاده کنید.
  3. باید ببینید که چندین لنگر در صفحه سلسله مراتب ظاهر می شوند.

موقعیت های لنگر را بررسی کنید

برای تأیید اینکه همه دارایی‌ها قبل از اجرای برنامه در مکان‌های صحیح قرار دارند، این مراحل را دنبال کنید:

  1. روی یک لنگر اضافه شده در صفحه سلسله مراتب کلیک کنید.
  2. F را فشار دهید.
  3. لنگر را در نمای Scene بررسی کنید.
  4. اگر یک لنگر در مکان درستی نیست، روی Snap to Tile کلیک کنید، یا مقادیر Latitude ، Longitude ، یا Editor Override Altitude به صورت دستی تغییر دهید.

6. دارایی را در AR مشاهده کنید

برای مشاهده دارایی در AR در دستگاه Android یا iOS با پشتیبانی ARCore ، این مراحل را دنبال کنید:

  1. روی File > Build Settings کلیک کنید و سپس پلتفرم های ساخت Android یا iOS را انتخاب کنید.
  2. روی Switch platform کلیک کنید.
  3. مطمئن شوید که دستگاه توسعه شما متصل است و برای توسعه پیکربندی شده است.
  4. روی ساخت و اجرا کلیک کنید.
  5. تأیید کنید که برنامه در دستگاه شما اجرا می شود.
  6. از مکان‌هایی بازدید کنید که محتوا را در آنجا لنگر انداخته‌اید. اگر نمونه‌ها را تغییر نداده‌اید، مکان‌ها کتابخانه‌های عمومی در سانفرانسیسکو هستند.

تجربه AR را مشاهده کنید

7. نتیجه گیری

تبریک می گویم! شما یک برنامه Unity نوشتید که از Geospatial Creator و Google Maps Platform Places API برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه استفاده می‌کند. ما امیدواریم که بتوانید از این دانش برای گسترش دسترسی محتوای Geospatial Creator خود استفاده کنید!

بیشتر بدانید

،

1. قبل از شروع

Geospatial Creator in Unity، که توسط ARCore و کاشی‌های سه‌بعدی Photorealistic از پلتفرم نقشه‌های Google ارائه شده است، به شما امکان می‌دهد به سرعت تجربه‌های واقعیت افزوده (AR) را برای طول و عرض جغرافیایی خاص بسازید و تجسم کنید، همه در ویرایشگر Unity. این می‌تواند مدت زمانی را که برای ساختن یک صحنه AR موقعیت‌یافته برای اپلیکیشن شما نیاز دارد تا حد زیادی کاهش دهد، اما اگر بخواهید چندین تجربه مشابه در مکان‌های مختلف ایجاد کنید، چه؟ با استفاده از C# API در Geospatial Creator، می توانید این کار را نیز انجام دهید.

در این لبه کد، کد C# را می نویسید که از Geospatial Creator و Places API از پلتفرم نقشه های گوگل برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه استفاده می کند. تجربیات به دست آمده را می توان قبل از کامپایل شدن در یک برنامه در ویرایشگر Unity بررسی و تنظیم کرد.

کتاب در ارتفاع صحیح قرار دارد

پیش نیازها

چیزی که یاد خواهید گرفت

  • نحوه استفاده از API در Geospatial Creator برای ایجاد و تجسم یک تجربه جغرافیایی در چندین مکان.
  • نحوه استفاده از Places API از پلتفرم نقشه های گوگل برای یافتن مکان مکان ها.
  • چگونه تجربه AR را در دستگاه خود اجرا کنید.

آنچه شما نیاز دارید

2. محیط خود را تنظیم کنید

برای استفاده از Geospatial Creator، باید مجوز دسترسی به کاشی‌های سه‌بعدی Photorealistic، خدمات ARCore در Google Cloud و Places API از پلتفرم Google Maps را تنظیم کنید.

یک پروژه Google Cloud راه اندازی کنید

این آزمایشگاه کد به یک پروژه Google Cloud با فعال بودن صورتحساب برای دسترسی به APIهای سرور Google نیاز دارد. تنظیم صورت‌حساب برای این نرم‌افزار کد الزامی است، اما فقط در صورتی از شما هزینه دریافت می‌شود که پروژه از سهمیه خدمات بدون هزینه خود فراتر رود.

برای راه اندازی یک پروژه در Google Cloud، این مراحل را دنبال کنید:

  1. یک پروژه در کنسول Google Cloud ایجاد کنید. یک پروژه Google Cloud ایجاد کنید
  2. در کادر متنی نام پروژه ، یک نام مناسب مانند ARCore Geospatial Project وارد کنید و سپس هر مکانی را انتخاب کنید.
  3. روی ایجاد کلیک کنید.
  4. در کنسول Google Cloud در صفحه انتخابگر پروژه، روی ایجاد پروژه کلیک کنید.
  5. به فعال کردن صورتحساب مراجعه کنید و قیمت کاشی‌های سه‌بعدی Photorealistic و قیمت‌گذاری Places API (جدید) را بررسی کنید.

Map Tiles API را فعال کنید

Map Tiles API کاشی های سه بعدی Photorealistic را ارائه می دهد که در ویرایشگر Unity قابل مشاهده هستند.

ARCore API را فعال کنید

ARCore API در Google Cloud به شما امکان می دهد به ARC Geospatial API در دستگاه مورد نظر دسترسی داشته باشید.

Places API را فعال کنید

API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید، که از آنها در کدها برای یافتن مکان های مرتبط استفاده خواهید کرد. این API نتایج جستجو و مختصات جغرافیایی مکان ها را ارائه می دهد.

یک کلید API برای پروژه خود ایجاد کنید

برای استفاده از احراز هویت کلید API برای تأیید اعتبار برنامه خود با خدمات Google Cloud راه دور، این مراحل را دنبال کنید:

  1. در کنسول Google Cloud در بخش APIs & services ، اعتبارنامه ها را انتخاب کنید.
  2. در بالای صفحه، روی Create Credentials کلیک کنید و سپس کلید API را انتخاب کنید.
  3. به کلید توجه کنید زیرا برای مراحل بعدی به آن نیاز دارید.

نرم افزار را راه اندازی کنید

برای شروع کار با نرم افزار Geospatial Creator، مراحل زیر را دنبال کنید:

  1. این مخزن را شبیه سازی کنید.
  2. Unity Hub را دانلود کنید و از آن برای نصب نسخه یونیتی 2022.3 استفاده کنید. مطمئن شوید که ابزارهای ساخت اختیاری Android یا iOS را نصب می کنید.
  3. در Unity Hub، Add > Add project from disk را فشار دهید.
  4. در پانل Hierarchy ، AR Geospatial Creator Origin را انتخاب کنید.
  5. در کادر متنی Google Maps Tile API Key ، کلید API را وارد کنید و سپس Enter (یا return در macOS) را فشار دهید. کلید API خود را در Geospatial Creator Origin قرار دهید
  6. در Edit > Project Settings > XR Plug-in Management > ARCore Extensions ، از احراز هویت کلید API برای Android یا iOS استفاده کنید و کلید API را وارد کنید.
  7. در File > Build Settings ، پلتفرم مورد نظر را به Android یا iOS تغییر دهید.

3. اولین لنگر خود را ایجاد کنید

در این کد لبه، شما یک لنگر AR ایجاد می کنید که می تواند در مکان های مختلف استفاده شود. شما از کتابخانه های عمومی در سانفرانسیسکو، کالیفرنیا، به عنوان مثال استفاده می کنید، اما با خیال راحت از مکان های نزدیک خود استفاده کنید.

درباره مؤلفه مبدأ خالق جغرافیایی

هر صحنه یونیتی که با Geospatial Creator ساخته شده است دقیقاً به یک Geospatial Creator Origin نیاز دارد. این شی بازی نقطه مرجع برای تبدیل مقادیر عرض جغرافیایی، طول جغرافیایی و ارتفاع در دنیای واقعی به مختصات بازی Unity است.

پروژه نمونه حاوی یک مبدأ خالق مکانی است که از سزیوم برای رندر کردن کاشی های سه بعدی فوتورئالیستی در نمای Scene ویرایشگر استفاده می کند و به شما امکان می دهد دقیقاً در کجای جهان محتوای AR شما ظاهر شود.

مبدا را حرکت دهید

مبدا Geospatial Creator را به طول و عرض جغرافیایی شعبه کتابخانه اصلی سانفرانسیسکو منتقل کنید.

برای استفاده از ادغام داخلی Geospatial Creator با Places API برای جابجایی خودکار مبدا به مکان صحیح، این مراحل را دنبال کنید:

  1. در پنل Hierarchy ، شی بازی Geospatial Creator Origin را انتخاب کنید.
  2. در پانل بازرس ، روی جستجوی مکان کلیک کنید.
  3. در گفتگوی جستجو، San Francisco Public Library تایپ کنید. اولین نتیجه باید در 100 خیابان لارکین باشد.
  4. روی Apply to objects کلیک کنید تا نتیجه جستجو در مبدا اعمال شود. باید ببینید که طول و عرض جغرافیایی مبدا به مختصات جدید به روز می شود.

ساختمان در دید است

یک لنگر Geospatial Creator به صحنه اضافه کنید

اکنون که یک Origin وجود دارد، با استفاده از GameObject > XR > AR Geospatial Creator Anchor، یک لنگر Geospatial Creator اضافه کنید. به‌طور پیش‌فرض، لنگر با مبدأ قرار می‌گیرد.

از این لنگر برای قرار دادن محتوای 3 بعدی AR خود استفاده کنید. مدل سه بعدی کتاب همراه با نمونه پروژه قرار داده شده است.

برای قرار دادن کتاب در صحنه خود، این مراحل را دنبال کنید:

  1. در پانل Project ، مدل Book را به صفحه نمایش ویرایشگر بکشید.
  2. در پانل سلسله مراتب ، مطمئن شوید که کتاب فرزند لنگری است که قبلا ایجاد کرده‌اید. هر شیء بازی کودک لنگر Geospatial Creator نسبت به لنگر قرار می گیرد.
  3. در پانل سلسله مراتب ، کتاب را انتخاب کنید. مقادیر موقعیت آن را روی 0، 0، 0 قرار دهید.

کتاب به صحنه اضافه شده است

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

در حالی که می‌توانید شی را در ویرایشگر حرکت دهید تا ارتفاع تقریبی WGS84 را بیابید، ترجیح داده می‌شود لنگرهای Geospatial را به‌عنوان لنگر پشت بام در این موقعیت پیکربندی کنید تا ارتفاع آنها به طور خودکار نسبت به سقف سازه‌ای که در بالا قرار دارند ثابت شود.

  • برای انجام این کار، پانل بازرس لنگر را باز کنید و ویژگی Altitude Type روی Rooftop قرار دهید.

هیئت بازرس

پس از انجام این کار، توجه داشته باشید که ارتفاع لنگر در نمای ویرایشگر تغییر نمی کند. این به این دلیل است که ارتفاع لنگر در زمان اجرا زمانی که لنگر برای لنگرهای پشت بام و زمین حل می شود تعیین می شود. برای تجسم لنگر روی پشت بام در نمای Scene ، می‌توانید از دکمه Snap To Tile استفاده کنید. این ارتفاع لنگر را مطابق با کاشی در نمای Scene تنظیم می کند، در حالی که بر ارتفاع لنگر حل شده در زمان اجرا تأثیر نمی گذارد.

  • برای اینکه مدل به جای اینکه روی پشت بام کتابخانه شناور باشد، پارامتر Altitude relative to rooftop تغییر دهید تا 15 متر بالاتر از پشت بام باشد.

مدل اکنون به خوبی بر فراز کتابخانه شناور است!

کتاب در ارتفاع صحیح قرار دارد

پروژه شما اکنون یک صحنه AR جغرافیایی کامل، شامل تمام اجزای سیستم AR مورد نیاز، مبدأ خالق مکانی و یک لنگر با یک مدل پیوست دارد.

سپس، لنگرهای تکراری را در مکان‌های کتابخانه اضافی ایجاد کنید.

4. مکان های لنگر جدید را با Places API پیدا کنید

API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید. در این کد لبه، شما از این API برای یافتن دیگر شاخه‌های کتابخانه‌های عمومی در سانفرانسیسکو استفاده می‌کنید و از آن نتایج برای ایجاد یک لنگر Geospatial Creator برای ده نتیجه جستجوی بعدی استفاده می‌کنید.

  • برای شروع، روی Assets > Scripts > Editor کلیک کنید و سپس فایل AnchorDuplicator.cs را باز کنید. این فایل مقداری کد boilerplate را ارائه می دهد که به شما کمک می کند با Places API شروع کنید و نتایج آن را تجزیه کنید.

با Places API احراز هویت کنید

  1. خط زیر را در کلاس AnchorDuplicator بیابید:
    private const string API_KEY = "<YOUR_API_KEY_HERE>";
    
  2. کلید بدست آمده در مراحل راه اندازی را جایگزین <YOUR_API_KEY_HERE> کنید.

برای عبارت جستجو از API Places پرس و جو کنید

با تکمیل تنظیمات مجوز API Places، می توانید کدی بنویسید که درخواست POST را آغاز می کند.

  • برای انجام این کار، متد CreatePlacesRequest را پیدا کنید و از تعریف متد زیر استفاده کنید:
    string postBody = "{ \"textQuery\": \"" + searchTerm + "\", " + 
                        "   \"locationBias\": { \"circle\": { " +
                        "      \"center\": { \"latitude\": " + lat + ", \"longitude\": " + lon + " }, " +
                        "      \"radius\": 10000 }" +
                        "   }" +
                        "}";
    
    string url = "https://places.googleapis.com/v1/places:searchText";
    
    UnityWebRequest request = UnityWebRequest.Post(url, postBody, "application/json");
    request.SetRequestHeader("X-Goog-Api-Key", apiKey);
    request.SetRequestHeader("X-Goog-FieldMask", "places.displayName,places.location");
    
    return request;
    
    اکنون، زمانی که متد CreatePlacesRequest فراخوانی می شود، درخواستی ارسال می شود که searchTerm در دایره ای با محوریت lat و lon جستجو می کند.

کار خود را تست کنید

قبل از ادامه، باید تأیید کنید که تماس‌ها با Places API موفق هستند.

  1. توابع را در ویرایشگر یونیتی اجرا کنید:
    1. در Google AR Codelab ، روی Run Places Request کلیک کنید.
    2. کنسول Unity را باز کنید. باید ببینید نتایج ظاهر می شوند. مکان ها در کنسول ظاهر می شوند

5. به صورت برنامه ای لنگرها را به مکان ها اضافه کنید

اکنون که تأیید کردید که API Places نتایج را پیدا می کند، لنگرهای Geospatial Creator جدید در هر مکان مشخص شده توسط نتایج ایجاد کنید.

یک آیتم منو ایجاد کنید

  1. در کلاس AnchorDuplicator ، متد CreateNewAnchorsFromPlaces را پیدا کنید و از تعریف متد زیر استفاده کنید:
    if (_places == null)
    {
        Debug.LogError("Cannot create anchors: Places has not been initialized.");
        return;
    }
    
    // You start with only one anchor in the scene, which you want to copy:
    var prototypeAnchorObject = GameObject
        .FindObjectOfType<ARGeospatialCreatorAnchor>()
        .gameObject;
    
    foreach (var place in _places)
    {
        var newAnchorObject = GameObject.Instantiate(prototypeAnchorObject);
        var anchor = newAnchorObject.GetComponent<ARGeospatialCreatorAnchor>();
        anchor.Latitude = place.location.latitude;
        anchor.Longitude = place.location.longitude;
    
        newAnchorObject.name = place.displayName.text;
    }
    
    این آیتم منو درخواستی را که قبلاً شروع شده است بررسی می‌کند و از اولین ARGeospatialCreatorAnchor در صحنه شما به عنوان نمونه اولیه برای ایجاد لنگرها، در هر مکان در نتیجه Places API استفاده می‌کند.
  2. از آیتم جدید Create New Anchors from Places Response در Google AR Codelab برای ایجاد لنگرها استفاده کنید.
  3. باید ببینید که چندین لنگر در صفحه سلسله مراتب ظاهر می شوند.

موقعیت های لنگر را بررسی کنید

برای تأیید اینکه همه دارایی‌ها قبل از اجرای برنامه در مکان‌های صحیح قرار دارند، این مراحل را دنبال کنید:

  1. روی یک لنگر اضافه شده در صفحه سلسله مراتب کلیک کنید.
  2. F را فشار دهید.
  3. لنگر را در نمای Scene بررسی کنید.
  4. اگر یک لنگر در مکان درستی نیست، روی Snap to Tile کلیک کنید، یا مقادیر Latitude ، Longitude ، یا Editor Override Altitude به صورت دستی تغییر دهید.

6. دارایی را در AR مشاهده کنید

برای مشاهده دارایی در AR در دستگاه Android یا iOS با پشتیبانی ARCore ، این مراحل را دنبال کنید:

  1. روی File > Build Settings کلیک کنید و سپس پلتفرم های ساخت Android یا iOS را انتخاب کنید.
  2. روی Switch platform کلیک کنید.
  3. مطمئن شوید که دستگاه توسعه شما متصل است و برای توسعه پیکربندی شده است.
  4. روی ساخت و اجرا کلیک کنید.
  5. تأیید کنید که برنامه در دستگاه شما اجرا می شود.
  6. از مکان‌هایی بازدید کنید که محتوا را در آنجا لنگر انداخته‌اید. اگر نمونه‌ها را تغییر نداده‌اید، مکان‌ها کتابخانه‌های عمومی در سانفرانسیسکو هستند.

تجربه AR را مشاهده کنید

7. نتیجه گیری

تبریک می گویم! شما یک برنامه Unity نوشتید که از Geospatial Creator و Google Maps Platform Places API برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه استفاده می‌کند. ما امیدواریم که بتوانید از این دانش برای گسترش دسترسی محتوای Geospatial Creator خود استفاده کنید!

بیشتر بدانید

،

1. قبل از شروع

Geospatial Creator in Unity، که توسط ARCore و کاشی‌های سه‌بعدی Photorealistic از پلتفرم نقشه‌های Google ارائه شده است، به شما امکان می‌دهد به سرعت تجربه‌های واقعیت افزوده (AR) را برای طول و عرض جغرافیایی خاص بسازید و تجسم کنید، همه در ویرایشگر Unity. این می‌تواند مدت زمانی را که برای ساختن یک صحنه AR موقعیت‌یافته برای اپلیکیشن شما نیاز دارد تا حد زیادی کاهش دهد، اما اگر بخواهید چندین تجربه مشابه در مکان‌های مختلف ایجاد کنید، چه؟ با استفاده از C# API در Geospatial Creator، می توانید این کار را نیز انجام دهید.

در این لبه کد، کد C# را می نویسید که از Geospatial Creator و Places API از پلتفرم نقشه های گوگل برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه استفاده می کند. تجربیات به دست آمده را می توان قبل از کامپایل شدن در یک برنامه در ویرایشگر Unity بررسی و تنظیم کرد.

کتاب در ارتفاع صحیح قرار دارد

پیش نیازها

چیزی که یاد خواهید گرفت

  • نحوه استفاده از API در Geospatial Creator برای ایجاد و تجسم یک تجربه جغرافیایی در چندین مکان.
  • نحوه استفاده از Places API از پلتفرم نقشه های گوگل برای یافتن مکان مکان ها.
  • چگونه تجربه AR را در دستگاه خود اجرا کنید.

آنچه شما نیاز دارید

2. محیط خود را تنظیم کنید

برای استفاده از Geospatial Creator، باید مجوز دسترسی به کاشی‌های سه‌بعدی Photorealistic، خدمات ARCore در Google Cloud و Places API از پلتفرم Google Maps را تنظیم کنید.

یک پروژه Google Cloud راه اندازی کنید

این آزمایشگاه کد به یک پروژه Google Cloud با فعال بودن صورتحساب برای دسترسی به APIهای سرور Google نیاز دارد. تنظیم صورت‌حساب برای این نرم‌افزار کد الزامی است، اما فقط در صورتی از شما هزینه دریافت می‌شود که پروژه از سهمیه خدمات بدون هزینه خود فراتر رود.

برای راه اندازی یک پروژه در Google Cloud، این مراحل را دنبال کنید:

  1. یک پروژه در کنسول Google Cloud ایجاد کنید. یک پروژه Google Cloud ایجاد کنید
  2. در کادر متنی نام پروژه ، یک نام مناسب مانند ARCore Geospatial Project وارد کنید و سپس هر مکانی را انتخاب کنید.
  3. روی ایجاد کلیک کنید.
  4. در کنسول Google Cloud در صفحه انتخابگر پروژه، روی ایجاد پروژه کلیک کنید.
  5. به فعال کردن صورتحساب مراجعه کنید و قیمت کاشی‌های سه‌بعدی Photorealistic و قیمت‌گذاری Places API (جدید) را بررسی کنید.

Map Tiles API را فعال کنید

Map Tiles API کاشی های سه بعدی Photorealistic را ارائه می دهد که در ویرایشگر Unity قابل مشاهده هستند.

ARCore API را فعال کنید

ARCore API در Google Cloud به شما امکان می دهد به ARC Geospatial API در دستگاه مورد نظر دسترسی داشته باشید.

Places API را فعال کنید

API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید، که از آنها در کدها برای یافتن مکان های مرتبط استفاده خواهید کرد. این API نتایج جستجو و مختصات جغرافیایی مکان ها را ارائه می دهد.

یک کلید API برای پروژه خود ایجاد کنید

برای استفاده از احراز هویت کلید API برای تأیید اعتبار برنامه خود با خدمات Google Cloud راه دور، این مراحل را دنبال کنید:

  1. در کنسول Google Cloud در بخش APIs & services ، اعتبارنامه ها را انتخاب کنید.
  2. در بالای صفحه، روی Create Credentials کلیک کنید و سپس کلید API را انتخاب کنید.
  3. به کلید توجه کنید زیرا برای مراحل بعدی به آن نیاز دارید.

نرم افزار را راه اندازی کنید

برای شروع کار با نرم افزار Geospatial Creator، مراحل زیر را دنبال کنید:

  1. این مخزن را شبیه سازی کنید.
  2. Unity Hub را دانلود کنید و از آن برای نصب نسخه یونیتی 2022.3 استفاده کنید. مطمئن شوید که ابزارهای ساخت اختیاری Android یا iOS را نصب می کنید.
  3. در Unity Hub، Add > Add project from disk را فشار دهید.
  4. در پانل Hierarchy ، AR Geospatial Creator Origin را انتخاب کنید.
  5. در کادر متنی Google Maps Tile API Key ، کلید API را وارد کنید و سپس Enter (یا return در macOS) را فشار دهید. کلید API خود را در Geospatial Creator Origin قرار دهید
  6. در Edit > Project Settings > XR Plug-in Management > ARCore Extensions ، از احراز هویت کلید API برای Android یا iOS استفاده کنید و کلید API را وارد کنید.
  7. در File > Build Settings ، پلتفرم مورد نظر را به Android یا iOS تغییر دهید.

3. اولین لنگر خود را ایجاد کنید

در این کد لبه، شما یک لنگر AR ایجاد می کنید که می تواند در مکان های مختلف استفاده شود. شما از کتابخانه های عمومی در سانفرانسیسکو، کالیفرنیا، به عنوان مثال استفاده می کنید، اما با خیال راحت از مکان های نزدیک خود استفاده کنید.

درباره مؤلفه مبدأ خالق جغرافیایی

هر صحنه یونیتی که با Geospatial Creator ساخته شده است دقیقاً به یک Geospatial Creator Origin نیاز دارد. این شی بازی نقطه مرجع برای تبدیل مقادیر عرض جغرافیایی، طول جغرافیایی و ارتفاع در دنیای واقعی به مختصات بازی Unity است.

پروژه نمونه حاوی یک مبدأ خالق مکانی است که از سزیوم برای رندر کردن کاشی های سه بعدی فوتورئالیستی در نمای Scene ویرایشگر استفاده می کند و به شما امکان می دهد دقیقاً در کجای جهان محتوای AR شما ظاهر شود.

مبدا را حرکت دهید

مبدا Geospatial Creator را به طول و عرض جغرافیایی شعبه کتابخانه اصلی سانفرانسیسکو منتقل کنید.

برای استفاده از ادغام داخلی Geospatial Creator با Places API برای جابجایی خودکار مبدا به مکان صحیح، این مراحل را دنبال کنید:

  1. در پنل Hierarchy ، شی بازی Geospatial Creator Origin را انتخاب کنید.
  2. در پانل بازرس ، روی جستجوی مکان کلیک کنید.
  3. در گفتگوی جستجو، San Francisco Public Library تایپ کنید. اولین نتیجه باید در 100 خیابان لارکین باشد.
  4. روی Apply to objects کلیک کنید تا نتیجه جستجو در مبدا اعمال شود. باید ببینید که طول و عرض جغرافیایی مبدا به مختصات جدید به روز می شود.

ساختمان در دید است

یک لنگر Geospatial Creator به صحنه اضافه کنید

اکنون که یک Origin وجود دارد، با استفاده از GameObject > XR > AR Geospatial Creator Anchor، یک لنگر Geospatial Creator اضافه کنید. به‌طور پیش‌فرض، لنگر با مبدأ قرار می‌گیرد.

از این لنگر برای قرار دادن محتوای 3 بعدی AR خود استفاده کنید. مدل سه بعدی کتاب همراه با نمونه پروژه قرار داده شده است.

برای قرار دادن کتاب در صحنه خود، این مراحل را دنبال کنید:

  1. در پانل Project ، مدل Book را به صفحه نمایش ویرایشگر بکشید.
  2. در پانل سلسله مراتب ، مطمئن شوید که کتاب فرزند لنگری است که قبلا ایجاد کرده‌اید. هر شیء بازی کودک لنگر Geospatial Creator نسبت به لنگر قرار می گیرد.
  3. در پانل سلسله مراتب ، کتاب را انتخاب کنید. مقادیر موقعیت آن را روی 0، 0، 0 قرار دهید.

کتاب به صحنه اضافه شده است

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

در حالی که می‌توانید شی را در ویرایشگر حرکت دهید تا ارتفاع تقریبی WGS84 را بیابید، ترجیح داده می‌شود لنگرهای Geospatial را به‌عنوان لنگر پشت بام در این موقعیت پیکربندی کنید تا ارتفاع آنها به طور خودکار نسبت به سقف سازه‌ای که در بالا قرار دارند ثابت شود.

  • برای انجام این کار، پانل بازرس لنگر را باز کنید و ویژگی Altitude Type روی Rooftop قرار دهید.

هیئت بازرس

پس از انجام این کار، توجه داشته باشید که ارتفاع لنگر در نمای ویرایشگر تغییر نمی کند. این به این دلیل است که ارتفاع لنگر در زمان اجرا زمانی که لنگر برای لنگرهای پشت بام و زمین حل می شود تعیین می شود. برای تجسم لنگر روی پشت بام در نمای Scene ، می‌توانید از دکمه Snap To Tile استفاده کنید. این ارتفاع لنگر را مطابق با کاشی در نمای Scene تنظیم می کند، در حالی که بر ارتفاع لنگر حل شده در زمان اجرا تأثیر نمی گذارد.

  • برای اینکه مدل به جای اینکه روی پشت بام کتابخانه شناور باشد، پارامتر Altitude relative to rooftop تغییر دهید تا 15 متر بالاتر از پشت بام باشد.

مدل اکنون به خوبی بر فراز کتابخانه شناور است!

کتاب در ارتفاع صحیح قرار دارد

پروژه شما اکنون یک صحنه AR جغرافیایی کامل، شامل تمام اجزای سیستم AR مورد نیاز، مبدأ خالق مکانی و یک لنگر با یک مدل پیوست دارد.

سپس، لنگرهای تکراری را در مکان‌های کتابخانه اضافی ایجاد کنید.

4. مکان های لنگر جدید را با Places API پیدا کنید

API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید. در این کد لبه، شما از این API برای یافتن دیگر شاخه‌های کتابخانه‌های عمومی در سانفرانسیسکو استفاده می‌کنید و از آن نتایج برای ایجاد یک لنگر Geospatial Creator برای ده نتیجه جستجوی بعدی استفاده می‌کنید.

  • برای شروع، روی Assets > Scripts > Editor کلیک کنید و سپس فایل AnchorDuplicator.cs را باز کنید. این فایل مقداری کد boilerplate را ارائه می دهد که به شما کمک می کند با Places API شروع کنید و نتایج آن را تجزیه کنید.

با Places API احراز هویت کنید

  1. خط زیر را در کلاس AnchorDuplicator بیابید:
    private const string API_KEY = "<YOUR_API_KEY_HERE>";
    
  2. کلید بدست آمده در مراحل راه اندازی را جایگزین <YOUR_API_KEY_HERE> کنید.

برای عبارت جستجو از API Places پرس و جو کنید

با تکمیل تنظیمات مجوز API Places، می توانید کدی بنویسید که درخواست POST را آغاز می کند.

  • برای انجام این کار، متد CreatePlacesRequest را پیدا کنید و از تعریف متد زیر استفاده کنید:
    string postBody = "{ \"textQuery\": \"" + searchTerm + "\", " + 
                        "   \"locationBias\": { \"circle\": { " +
                        "      \"center\": { \"latitude\": " + lat + ", \"longitude\": " + lon + " }, " +
                        "      \"radius\": 10000 }" +
                        "   }" +
                        "}";
    
    string url = "https://places.googleapis.com/v1/places:searchText";
    
    UnityWebRequest request = UnityWebRequest.Post(url, postBody, "application/json");
    request.SetRequestHeader("X-Goog-Api-Key", apiKey);
    request.SetRequestHeader("X-Goog-FieldMask", "places.displayName,places.location");
    
    return request;
    
    اکنون، زمانی که متد CreatePlacesRequest فراخوانی می شود، درخواستی ارسال می شود که searchTerm در دایره ای با محوریت lat و lon جستجو می کند.

کار خود را تست کنید

قبل از ادامه، باید تأیید کنید که تماس‌ها با Places API موفق هستند.

  1. توابع را در ویرایشگر یونیتی اجرا کنید:
    1. در Google AR CodeLab ، روی Run Places Requestion کلیک کنید.
    2. کنسول وحدت را باز کنید. باید ببینید که نتایج ظاهر می شوند. مکان ها در کنسول ظاهر می شوند

5. برنامه نویسی لنگرگاه ها را به مکان ها اضافه کنید

اکنون که تأیید کرده اید که مکان های API نتیجه می گیرند ، در هر مکان که توسط نتایج مشخص شده است ، لنگرهای خالق جدید جغرافیایی ایجاد کنید.

یک مورد منو ایجاد کنید

  1. در کلاس AnchorDuplicator ، روش CreateNewAnchorsFromPlaces پیدا کنید و از روش زیر استفاده کنید:
    if (_places == null)
    {
        Debug.LogError("Cannot create anchors: Places has not been initialized.");
        return;
    }
    
    // You start with only one anchor in the scene, which you want to copy:
    var prototypeAnchorObject = GameObject
        .FindObjectOfType<ARGeospatialCreatorAnchor>()
        .gameObject;
    
    foreach (var place in _places)
    {
        var newAnchorObject = GameObject.Instantiate(prototypeAnchorObject);
        var anchor = newAnchorObject.GetComponent<ARGeospatialCreatorAnchor>();
        anchor.Latitude = place.location.latitude;
        anchor.Longitude = place.location.longitude;
    
        newAnchorObject.name = place.displayName.text;
    }
    
    این مورد منو درخواست قبلی را که قبلاً شروع شده است بررسی می کند و از اولین ARGeospatialCreatorAnchor در صحنه شما به عنوان نمونه اولیه برای ایجاد لنگرها استفاده می کند ، یکی در هر مکان در نتیجه API.
  2. برای ایجاد لنگرها از لنگرگاه های جدید ایجاد شده از منوی پاسخ مکان ها در Google AR CodeLab استفاده کنید.
  3. باید چندین لنگر را در صفحه سلسله مراتب مشاهده کنید.

مواضع لنگر را تأیید کنید

برای تأیید اینکه تمام دارایی ها قبل از اجرای برنامه در مکان های صحیح لنگر زده می شوند ، این مراحل را دنبال کنید:

  1. روی یک لنگر اضافه شده در صفحه سلسله مراتب کلیک کنید.
  2. مطبوعات f .
  3. لنگر را در نمای Scene بازرسی کنید.
  4. اگر یک لنگر در مکان صحیح قرار ندارد ، روی Snap To Tile کلیک کنید ، یا به صورت دستی Latitude ، Longitude یا Editor Override Altitude تغییر دهید.

6. مشاهده دارایی در AR

برای مشاهده دارایی موجود در AR در دستگاه Android یا iOS پشتیبانی شده توسط Arcore ، این مراحل را دنبال کنید:

  1. روی File> Build Settings کلیک کنید ، و سپس سیستم عامل های Android یا iOS Build را انتخاب کنید.
  2. روی پلتفرم سوئیچ کلیک کنید.
  3. اطمینان حاصل کنید که دستگاه توسعه شما برای توسعه متصل و پیکربندی شده است.
  4. روی ساخت و اجرا کلیک کنید.
  5. تأیید کنید که برنامه روی دستگاه شما اجرا می شود.
  6. از مکانهایی که محتوا را لنگر انداخته اید ، بازدید کنید. اگر مثالها را تغییر ندادید ، مکان ها کتابخانه های عمومی در سانفرانسیسکو هستند.

تجربه AR را مشاهده کنید

7. نتیجه گیری

تبریک می گویم! شما یک برنامه وحدت نوشتید که از Geospatial Creator و Google Maps Platform API را برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه قرار می دهد. امیدواریم که بتوانید از این دانش استفاده کنید تا محتوای خالق Geospatial خود را افزایش دهید!

بیشتر بدانید