ارتقا دادن برنامه Maps JavaScript API از نسخه ۲ به نسخه ۳

‫Maps JavaScript API نسخه ۲ از ۲۶ مه ۲۰۲۱ دیگر دردسترس نیست. درنتیجه، نقشه‌های نسخه ۲ سایتتان ازکار خواهد افتاد و خطاهای جاوا اسکریپت برمی‌گرداند. برای ادامه استفاده از نقشه‌ها در سایت خود، به نسخه سوم API جاوا اسکریپت Maps مهاجرت کنید. این راهنما درطول فرایند به شما کمک خواهد کرد.

نمای کلی

فرایند انتقال هر برنامه کمی متفاوت خواهد بود؛ بااین‌حال، برخی‌از مراحل برای همه پروژه‌ها مشترک است:

  1. کلید جدیدی دریافت کنید. اکنون Maps JavaScript API از کنسول Google Cloud برای مدیریت کلیدها استفاده می‌کند. اگر هنوز از کلید نسخه ۲ استفاده می‌کنید، حتماً قبل‌از شروع انتقال، کلید میانای برنامه‌سازی کاربردی جدید خود را دریافت کنید.
  2. «میانای برنامه‌سازی کاربردی» Bootstrap را به‌روز کنید. بیشتر برنامه‌ها Maps JavaScript API v3 را با کد زیر بار می‌کنند:
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
  3. کدتان را به‌روز کنید. میزان تغییرات لازم تا حد زیادی به برنامه شما بستگی دارد. تغییرات رایج عبارت‌اند از:
    • همیشه به فضای نام google.maps ارجاع دهید. در نسخه ۳، همه کدهای Maps JavaScript API به‌جای فضای نام سراسری در فضای نام google.maps.* ذخیره می‌شود. نام اکثر اشیاء نیز به‌عنوان بخشی از این فرایند تغییر کرده است. برای مثال، به‌جای GMap2، اکنون google.maps.Map را بار خواهید کرد.
    • هرگونه اشاره به روش‌های منسوخ را بردارید. تعدادی از روش‌های کاربردی با هدف کلی برداشته شده‌اند، مانند GDownloadURL و GLog. یا این عملکرد را با کتابخانه‌های ابزار شخص ثالث جایگزین کنید، یا این ارجاع‌ها را از کدتان بردارید.
    • (اختیاری) کتابخانه‌ها را به کدتان اضافه کنید. بسیاری از ویژگی‌ها به کتابخانه‌های کمکی خارجی منتقل شده‌اند تا هر برنامه فقط بخش‌هایی از میانای برنامه‌سازی کاربردی را که استفاده خواهد شد بار کند.
    • (اختیاری) پروژه‌تان را برای استفاده از externs نسخه ۳ پیکربندی کنید. از v3 externs می‌توان برای کمک به اعتبارسنجی کد با Closure Compiler، یا برای راه‌اندازی تکمیل خودکار در IDE استفاده کرد. درباره «کامپایل پیشرفته» و «خارجی‌ها» بیشتر بدانید.
  4. آزمایش و تکرار کنید. در این مرحله هنوز کارهایی برای انجام دادن دارید، اما خبر خوب این است که در مسیر درست برای رسیدن به برنامه نقشه‌های v3 جدیدتان هستید!

تغییرات در نسخه ۳ Maps JavaScript API

قبل‌از برنامه‌ریزی برای انتقال، باید زمانی را به درک تفاوت‌های بین Maps JavaScript API v2 و Maps JavaScript API v3 اختصاص دهید. جدیدترین نسخه Maps JavaScript API از ابتدا نوشته شده است و بر تکنیک‌های مدرن برنامه‌نویسی جاوا اسکریپت، افزایش استفاده از کتابخانه‌ها و یک API ساده‌شده تمرکز دارد. ویژگی‌های جدید زیادی به API اضافه شده است و چندین ویژگی آشنا تغییر کرده یا حتی حذف شده است. این بخش برخی‌از تفاوت‌های کلیدی بین این دو نسخه را برجسته می‌کند.

برخی‌از تغییرات در v3 API عبارت‌اند از:

  • کتابخانه هسته ساده و کارآمد. بسیاری از عملکردهای تکمیلی به کتابخانه‌ها منتقل شده‌اند، که به کاهش بار و زمان تجزیه برای Core API کمک می‌کند و باعث می‌شود نقشه شما به‌سرعت در هر دستگاهی بار شود.
  • بهبود عملکرد چندین ویژگی، مانند پرداز چندضلعی و جای‌گذاری نشانگر.
  • رویکردی جدید برای محدودیت‌های استفاده سمت کارخواه برای تطبیق بهتر با نشانی‌های مشترک مورداستفاده پراکسی‌های تلفن همراه و دیوارهای آتش شرکتی.
  • پشتیبانی از چندین مرورگر نو و مرورگر تلفن همراه اضافه شد. پشتیبانی از Internet Explorer 6 برداشته شده است.
  • بسیاری از کلاس‌های کمکی چندمنظوره ( GLog یا GDownloadUrl) را حذف کردیم. امروزه، بسیاری از کتابخانه‌های عالی جاوا اسکریپت وجود دارند که عملکرد مشابهی را ارائه می‌دهند، مانند Closure یا jQuery.
  • پیاده‌سازی HTML5 «نمای خیابان» که در هر دستگاه همراهی بار می‌شود.
  • تمام‌نماهای سفارشی «نمای خیابان» با عکس‌های خودتان، که به شما امکان می‌دهد تمام‌نماهای پیست‌های اسکی، خانه‌های فروشی، یا مکان‌های جالب دیگر را هم‌رسانی کنید.
  • سفارشی‌سازی‌های نقشه‌های قابل‌طراحی به شما امکان می‌دهد نمایش عناصر را در نقشه مبنا تغییر دهید تا با سبک دیداری منحصربه‌فرد شما مطابقت داشته باشد.
  • پشتیبانی از چندین سرویس جدید، مانند ElevationService و Distance Matrix.
  • سرویس مسیرهای بهبودیافته، مسیرهای جایگزین، بهینه‌سازی مسیر (راه‌حل‌های تقریبی برای مسئله فروشنده دوره‌گرد)، مسیرهای دوچرخه‌سواری (با لایه دوچرخه‌سواری)، مسیرهای حمل‌ونقل عمومی، و مسیرهای کشیدنی را ارائه می‌دهد.
  • قالب به‌روزشده Geocoding که اطلاعات دقیق‌تری درباره نوع نسبت‌به مقدار accuracy از Geocoding API v2 ارائه می‌دهد.
  • پشتیبانی از چند پنجره اطلاعات در یک نقشه

ارتقای برنامه

کلید جدید شما

‫Maps JavaScript API نسخه ۳ از سیستم کلید جدیدی نسبت به نسخه ۲ استفاده می‌کند. ممکن است ازقبل از کلید نسخه ۳ در برنامه‌تان استفاده کنید که دراین‌صورت نیازی به تغییر نیست. برای درستی‌سنجی، نشانی وبی را که از آن Maps JavaScript API را بار می‌کنید ازنظر پارامتر key بررسی کنید. اگر مقدار کلید با «ABQIAA» شروع می‌شود، از کلید نسخه ۲ استفاده می‌کنید. اگر کلید نسخه ۲ دارید، باید به‌عنوان بخشی از انتقال به کلید نسخه ۳ ارتقا دهید، که این کار:

این کلید هنگام بارگذاری نسخه سوم API جاوا اسکریپت Maps ارسال می‌شود. درباره تولید کلیدهای API بیشتر بدانید.

توجه داشته باشید که اگر مشتری Google Maps APIs for Work هستید، ممکن است به‌جای استفاده از پارامتر key، از شناسه کارخواه با پارامتر client استفاده کنید. شناسه‌های کارخواه هنوز در Maps JavaScript API نسخه ۳ پشتیبانی می‌شوند و نیازی به گذراندن فرایند ارتقای کلید ندارند.

بار کردن میانای برنامه‌سازی کاربردی

اولین تغییری که باید در کدتان ایجاد کنید مربوط به نحوه بار کردن API است. در نسخه ۲، Maps JavaScript API را ازطریق درخواست به http://maps.google.com/maps بار می‌کنید. اگر نسخه ۳ Maps JavaScript API را بار می‌کنید، باید تغییرات زیر را اعمال کنید:

  1. بار کردن میانای برنامه‌سازی کاربردی از //maps.googleapis.com/maps/api/js
  2. پارامتر file را بردارید.
  3. پارامتر key را با کلید v3 جدیدتان به‌روز کنید. مشتریان Google Maps APIs for Work باید از پارامتر client استفاده کنند.
  4. (فقط طرح Google Maps Platform Premium) بررسی کنید که پارامتر client همان‌طور که در راهنمای توسعه‌دهنده طرح Google Maps Platform Premium توضیح داده شده است، ارائه شده باشد.
  5. پارامتر v را بردارید تا جدیدترین نسخه منتشرشده را درخواست کنید یا مقدار آن را مطابق با طرح نسخه‌بندی v3 تغییر دهید.
  6. (اختیاری) پارامتر hl را با language جایگزین کنید و مقدار آن را حفظ کنید.
  7. (اختیاری) پارامتر libraries را برای بار کردن کتابخانه‌های اختیاری اضافه کنید.

در ساده‌ترین حالت، راه‌انداز v3 فقط پارامتر کلید میانای برنامه‌سازی کاربردی شما را مشخص می‌کند:

<script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>

مثال زیر جدیدترین نسخه Maps JavaScript API v2 را به زبان آلمانی درخواست می‌کند:

<script src="//maps.google.com/maps?file=api&v=2.x&key=YOUR_API_KEY&hl=de"></script>

نمونه زیر درخواست معادل برای نسخه ۳ است.

<script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&language=de"></script>

فضای نام google.maps

احتمالاً قابل‌توجه‌ترین تغییر در Maps JavaScript API v3 معرفی فضای نام google.maps است. v2 API به‌طور پیش‌فرض همه اشیاء را در فضای نام Global قرار می‌دهد که می‌تواند منجر به تداخل نام‌گذاری شود. در v3، همه اشیاء در فضای نام google.maps قرار دارند.

هنگام انتقال برنامه‌تان به نسخه ۳، باید کدتان را تغییر دهید تا از فضای نام جدید استفاده کنید. متأسفانه جستجوی «G» و جایگزینی آن با «google.maps.» کاملاً کارساز نخواهد بود، اما این یک قاعده سرانگشتی خوب برای اعمال هنگام بازبینی کد شما است. در زیر چند نمونه از کلاس‌های معادل در نسخه ۲ و ۳ آورده شده است.

v2 v3
GMap2 google.maps.Map
GLatLng google.maps.LatLng
GInfoWindow google.maps.InfoWindow
GMapOptions google.map.MapOptions
G_API_VERSION google.maps.version
GPolyStyleOptions google.maps.PolygonOptions
or google.maps.PolylineOptions

برداشتن کد منسوخ

Maps JavaScript API v3 برای بیشتر عملکردهای v2 معادل‌هایی دارد؛ بااین‌حال، برخی کلاس‌ها دیگر پشتیبانی نمی‌شوند. به‌عنوان بخشی از انتقال، باید این کلاس‌ها را با کتابخانه‌های ابزار شخص ثالث جایگزین کنید یا این ارجاع‌ها را از کدتان بردارید. کتابخانه‌های جاوا اسکریپت عالی بسیاری وجود دارد که عملکرد مشابهی ارائه می‌دهند، مانند Closure یا jQuery.

کلاس‌های زیر در نسخه ۳ میانای برنامه‌سازی کاربردی جاوا اسکریپت Maps موازی ندارند:

GBoundsGLanguage
GBrowserIsCompatibleGLayer
GControlGLog
GControlAnchorGMercatorProjection
GControlImplGNavLabelControl
GControlPositionGObliqueMercator
GCopyrightGOverlay
GCopyrightCollectionGPhotoSpec
GDownloadUrlGPolyEditingOptions
GDraggableObjectGScreenOverlay
GDraggableObjectOptionsGStreetviewFeatures
GFactualGeocodeCacheGStreetviewLocation
GGeoAddressAccuracyGStreetviewOverlay
GGeocodeCacheGStreetviewUserPhotosOptions
GGoogleBarGTileLayerOptions
GGoogleBarAdsOptionsGTileLayerOverlayOptions
GGoogleBarLinkTargetGTrafficOverlayOptions
GGoogleBarListingTypesGUnload
GGoogleBarOptionsGXml
GGoogleBarResultListGXmlHttp
GInfoWindowTabGXslt
GKeyboardHandler

مقایسه کردن کد

در اینجا مقایسه‌ای بین دو برنامه کاربردی که با میاناهای برنامه‌سازی کاربردی v2 و v3 نوشته شده‌اند ارائه شده است.

<!DOCTYPE html>
<html>
  <head>
    <script src="//maps.google.com/maps?file=api&v=2&key=YOUR_API_KEY"></script>
    <style>
      html, body, #map { height: 100%; margin: 0; }
    </style>
    <script>
    function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(
            document.getElementById('map'));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        map.setUIToDefault();

        map.addOverlay(new GMarker(new GLatLng(37.4419, -122.1419)));

      }
    }
    </script>
  </head>
  <body onload="initialize()" onunload="GUnload()">
    <div id="map"></div>
  </body>
</html>
    
<!DOCTYPE html>
<html>
  <head>
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
    <style>
      html, body, #map { height: 100%; margin: 0; }
    </style>
    <script>
    function initialize() {
      var map = new google.maps.Map(
        document.getElementById('map'), {
          center: new google.maps.LatLng(37.4419, -122.1419),
          zoom: 13,
          mapTypeId: google.maps.MapTypeId.ROADMAP
      });

      var marker = new google.maps.Marker({
            position: new google.maps.LatLng(37.4419, -122.1419),
            map: map
      });

    }
    google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map"></div>
  </body>
</html>
    

همان‌طور که می‌بینید، تفاوت‌های متعددی بین این دو برنامه وجود دارد. تغییرات قابل‌توجه عبارت‌اند از:

  • نشانی‌ای که API از آن بار می‌شود تغییر کرده است.
  • روش‌های GBrowserIsCompatible() و GUnload() دیگر در نسخه ۳ لازم نیستند و از میانای برنامه‌سازی کاربردی برداشته شده‌اند.
  • شیء GMap2 با google.maps.Map به‌عنوان شیء مرکزی در API جایگزین شده است.
  • مشخصات اکنون ازطریق کلاس‌های «گزینه‌ها» بار می‌شود. در مثال بالا، سه ویژگی لازم برای بار کردن نقشه را تنظیم می‌کنیم — center، zoom، و mapTypeId — بااستفاده از شیء MapOptions درون‌خطی.
  • واسط کاربر پیش‌فرض به‌طور پیش‌فرض در نسخه ۳ روشن است. می‌توانید این را با تنظیم کردن ویژگی disableDefaultUI روی true در شیء MapOptions غیرفعال کنید.

خلاصه

در این مرحله، با برخی‌از نکات کلیدی مربوط به انتقال از نسخه ۲ به نسخه ۳ میانای برنامه‌سازی کاربردی جاوا اسکریپت در Maps آشنا شده‌اید. اطلاعات بیشتری وجود دارد که ممکن است لازم باشد بدانید، اما این اطلاعات به برنامه شما بستگی دارد. در بخش‌های زیر، دستورالعمل‌های انتقال را برای موارد خاصی که ممکن است با آن‌ها مواجه شوید گنجانده‌ایم. علاوه‌براین، چندین منبع وجود دارد که ممکن است درطول فرایند ارتقا برایتان مفید باشد.

  • نسخه سوم API جاوا اسکریپت Google Maps اسناد توسعه‌دهندگان بهترین مکان برای کسب اطلاعات بیشتر درباره API و نحوه عملکرد آن است.
  • مرجع نسخه سوم API جاوا اسکریپت Maps به شما کمک می‌کند تا درباره کلاس‌ها و روش‌های جدید در نسخه سوم API بیشتر بدانید.
  • انجمن Stack Overflow مکانی عالی برای پرسیدن سؤالات مربوط به کد است. در این سایت، پرسش‌ها و پاسخ‌های مربوط به Maps JavaScript API از برچسب‌های 'google-maps' یا 'google-maps-api-3' استفاده می‌کنند.
  • مشتریان «طرح Google Maps Platform Premium» باید اسناد طرح Google Maps Platform Premium را بخوانند.
  • وبلاگ Google Geo Developers راهی عالی برای اطلاع از جدیدترین تغییرات API است.

اگر مشکل یا سؤالی درباره این سند دارید، از پیوند ارسال بازخورد در بالای این صفحه استفاده کنید.

مرجع دقیق

این بخش مقایسه دقیقی از محبوب‌ترین ویژگی‌های هر دو نسخه ۲ و ۳ از Maps JavaScript API ارائه می‌دهد. هر بخش از مرجع به‌گونه‌ای طراحی شده است که به‌طور جداگانه خوانده شود. توصیه می‌کنیم این مرجع را به‌طور کامل نخوانید؛ درعوض، از این مطالب برای کمک به انتقال خود به‌صورت موردی استفاده کنید.

  • رویدادها - ثبت و رسیدگی به رویدادها.
  • کنترل‌ها - دستکاری کنترل‌های ناوبری که روی نقشه ظاهر می‌شوند.
  • رونهادها - افزودن و ویرایش اشیاء روی نقشه.
  • انواع نقشه - کاشی‌هایی که نقشه پایه را تشکیل می‌دهند.
  • لایه‌ها - افزودن و ویرایش محتوا به‌عنوان یک گروه، مانند لایه‌های KML یا ترافیک.
  • سرویس‌ها - کار با زمین‌کدیابی Google، مسیرها یا سرویس‌های «نمای خیابان».

رویدادها

مدل رویداد برای Maps JavaScript API v3 مشابه مدل استفاده‌شده در v2 است، اگرچه تغییرات زیادی در پشت صحنه رخ داده است.

کنترل‌ها

‫Maps JavaScript API کنترل‌های میانای کاربری را نمایش می‌دهد که به کاربران اجازه می‌دهد با نقشه شما تعامل داشته باشند. می‌توانید از میانای برنامه‌سازی کاربردی برای سفارشی‌سازی نحوه نمایش این کنترل‌ها استفاده کنید.

همپوشانی ها

لایه‌های رویی نشان‌دهنده اشیایی هستند که به نقشه «اضافه می‌کنید» تا نقاط، خطوط، مناطق، یا مجموعه‌های اشیا را مشخص کنید.

انواع نقشه

انواع نقشه‌های دردسترس در نسخه ۲ و ۳ کمی متفاوت است، اما همه انواع نقشه‌های پایه در هر دو نسخه API دردسترس است. به‌طور پیش‌فرض، نسخه ۲ از کاشی‌های نقشه راه استاندارد «رنگ‌شده» استفاده می‌کند. اما نسخه ۳ مستلزم آن است که هنگام ایجاد شیء google.maps.Map، نوع نقشه خاصی ارائه شود.

لایه‌ها

لایه‌ها اشیایی روی نقشه هستند که از یک یا چند پوشش تشکیل شده‌اند. می‌توان آن‌ها را به‌عنوان یک واحد دستکاری کرد و معمولاً مجموعه‌ای از اشیا را نشان می‌دهند.

خدمات