خدمات تصویربرداری حداکثر زوم

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

بررسی اجمالی

Google Maps API کاشی های نقشه را در سطوح مختلف زوم برای تصاویر نوع نقشه فراهم می کند. بیشتر تصاویر نقشه راه، برای مثال، از سطوح زوم 0 تا 18 در دسترس هستند. تصاویر ماهواره ای بسیار متفاوت است زیرا این تصاویر تولید نمی شوند، بلکه مستقیماً عکس گرفته می شوند.

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

درخواست های MaxZoom

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

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

پاسخ های MaxZoom

هنگامی که getMaxZoomAtLatLng() تابع callback را اجرا می کند، دو پارامتر را پس می دهد:

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

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

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

مثال زیر نقشه کلان شهر توکیو را نشان می دهد. کلیک کردن در هر نقطه از نقشه، حداکثر سطح زوم را در آن مکان نشان می دهد. (سطوح بزرگنمایی در اطراف توکیو به طور کلی بین سطوح زوم 18 و 21 متفاوت است.)

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;

جاوا اسکریپت

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;
مشاهده نمونه

Sample را امتحان کنید