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

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

نظرة عامة

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

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

طلبات MaxZoom

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

لبدء تقديم طلب إلى 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;
عرض مثال

تجربة النموذج