خدمة الحد الأقصى من صور Zoom

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
  1. الحد الأقصى للصور في Zoom
  2. طلبات MaxZoom
  3. استجابات MaxZoom

نظرة عامة

توفّر Google Maps API مربعات خرائط على مستويات تكبير/تصغير مختلفة للصور من نوع الخريطة. وتتوفّر معظم صور خارطة الطريق من مستويات التكبير أو التصغير على مستوى 0 إلى 18 مثلاً. تختلف صور القمر الصناعي على نطاق أوسع لأنه لا يتم إنشاء هذه الصور، بل يتم التقاطها مباشرةً.

بما أنّ صور القمر الصناعي لا تتوفّر دائمًا على مستويات تكبير/تصغير عالية للصور في المواقع الجغرافية البعيدة، أي في المناطق المكتظة بالقليل أو مناطق المحيطات المفتوحة، قد تحتاج إلى معرفة أعلى مستوى من التكبير للصور في موقع جغرافي معيّن مسبقًا. يوفّر الكائن MaxZoomService واجهة بسيطة لاكتشاف الحد الأقصى لمستوى التكبير/التصغير في موقع جغرافي معيّن يتوفّر فيه صور القمر الصناعي في "خرائط Google".

طلبات MaxZoom

إنّ الوصول إلى MaxZoomService غير متزامن، لأنّ Google Maps API تحتاج إلى إجراء طلب إلى خادم خارجي. ولهذا السبب، يجب تمرير طريقة معاودة الاتصال للتنفيذ بعد إكمال الطلب. ومن المفترض أن تعالج طريقة معاودة الاتصال هذه النتيجة.

لإرسال طلب إلى MaxZoomService، يُرجى الاتصال بالرقم getMaxZoomAtLatLng() وتمرير LatLng للموقع الجغرافي ودالة معاودة الاتصال لتنفيذها عند اكتمال الطلب.

استجابات 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;

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;
عرض مثال

جرّب عيّنة