سرویس تصاویر با حداکثر بزرگ‌نمایی

  1. تصاویر با حداکثر بزرگ‌نمایی
  2. درخواست‌های MaxZoom
  3. پاسخ‌های MaxZoom

نمای کلی

‫Google Maps API قطعه‌های نقشه را در سطوح بزرگ‌نمایی مختلف برای تصاویر نوع نقشه ارائه می‌دهد. برای مثال، بیشتر تصاویر نقشه راه از سطح بزرگ‌نمایی ۰ تا ۱۸ دردسترس است. تصاویر ماهواره‌ای تنوع بیشتری دارند زیرا این تصاویر تولید نمی‌شوند، بلکه مستقیماً عکس‌برداری می‌شوند.

چون تصاویر ماهواره‌ای همیشه در سطوح بزرگ‌نمایی بالا برای مکان‌های دورافتاده (مناطق کم‌جمعیت یا مناطق اقیانوسی باز) دردسترس نیست، شاید بخواهید ازقبل بالاترین سطح بزرگ‌نمایی را برای تصاویر در مکان مشخصی بدانید. شیء MaxZoomService میانای ساده‌ای برای یافتن حداکثر سطح بزرگ‌نمایی در مکان مشخصی که Google Maps برای آن تصاویر ماهواره‌ای دارد ارائه می‌دهد.

درخواست‌های MaxZoom

دسترسی به MaxZoomService ناهمگام است، زیرا Google Maps API باید با سرور خارجی تماس برقرار کند. به همین دلیل، باید روش فراخوانی را برای اجرا پس‌از تکمیل درخواست ارسال کنید. این روش فراخوانی باید نتیجه را پردازش کند.

برای شروع درخواست به MaxZoomService، getMaxZoomAtLatLng() را فراخوانی کنید و LatLng مکان و تابع بازخوانی را برای اجرا پس‌از تکمیل درخواست ارسال کنید.

پاسخ‌های MaxZoom

وقتی getMaxZoomAtLatLng() تابع فراخوانی متقابل را اجرا می‌کند، دو پارامتر را برمی‌گرداند:

  • status حاوی MaxZoomStatus درخواست است.
  • zoom حاوی سطح بزرگ‌نمایی است. اگر به هر دلیلی سرویس ناموفق باشد، این مقدار وجود نخواهد داشت.

کد status ممکن است یکی از مقادیر زیر را برگرداند:

  • OK نشان می‌دهد که سرویس حداکثر سطح بزرگ‌نمایی را برای تصاویر ماهواره‌ای پیدا کرده است.
  • ERROR نشان می‌دهد که درخواست MaxZoom پردازش نشد.

مثال زیر نقشه‌ای از کلان‌شهر توکیو را نشان می‌دهد. کلیک کردن در هر جایی از نقشه، حداکثر سطح بزرگ‌نمایی را در آن مکان نشان می‌دهد. (سطوح بزرگ‌نمایی در اطراف توکیو معمولاً بین سطوح بزرگ‌نمایی ۱۸ و ۲۱ متغیر است.)

TypeScript

let map: google.maps.Map;
let maxZoomService: google.maps.MaxZoomService;
let infoWindow: google.maps.InfoWindow;

function initMap(): void {
  map = new google.maps.Map(document.getElementById("map") as HTMLElement, {
    zoom: 11,
    center: { lat: 35.6894, lng: 139.692 },
    mapTypeId: "hybrid",
  });

  infoWindow = new google.maps.InfoWindow();

  maxZoomService = new google.maps.MaxZoomService();

  map.addListener("click", showMaxZoom);
}

function showMaxZoom(e: google.maps.MapMouseEvent) {
  maxZoomService.getMaxZoomAtLatLng(
    e.latLng as google.maps.LatLng,
    (result: google.maps.MaxZoomResult) => {
      if (result.status !== "OK") {
        infoWindow.setContent("Error in MaxZoomService");
      } else {
        infoWindow.setContent(
          "The maximum zoom at this location is: " + result.zoom
        );
      }

      infoWindow.setPosition(e.latLng);
      infoWindow.open(map);
    }
  );
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

let map;
let maxZoomService;
let infoWindow;

function initMap() {
  map = new google.maps.Map(document.getElementById("map"), {
    zoom: 11,
    center: { lat: 35.6894, lng: 139.692 },
    mapTypeId: "hybrid",
  });
  infoWindow = new google.maps.InfoWindow();
  maxZoomService = new google.maps.MaxZoomService();
  map.addListener("click", showMaxZoom);
}

function showMaxZoom(e) {
  maxZoomService.getMaxZoomAtLatLng(e.latLng, (result) => {
    if (result.status !== "OK") {
      infoWindow.setContent("Error in MaxZoomService");
    } else {
      infoWindow.setContent(
        "The maximum zoom at this location is: " + result.zoom,
      );
    }

    infoWindow.setPosition(e.latLng);
    infoWindow.open(map);
  });
}

window.initMap = initMap;
مشاهده نمونه