خدمة الصور التي تتيح التكبير إلى أقصى حد

  1. صور التكبير إلى أقصى حد
  2. طلبات MaxZoom
  3. MaxZoom Responses

نظرة عامة

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

تجربة عيّنة