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

  1. الحد الأقصى لعدد الصور التي يمكن تكبيرها أو تصغيرها
  2. طلبات MaxZoom
  3. MaxZoom Responses

نظرة عامة

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

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

طلبات MaxZoom

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

لبدء طلب إلى 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;
الاطّلاع على مثال

تجربة العينة