خدمة الحد الأقصى من صور 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;
عرض مثال

تجربة عيّنة من المحتوى