Présentation
L'API Google Maps fournit des tuiles de carte à différents niveaux de zoom pour les images des types de carte. La plupart des images de carte routière sont, par exemple, disponibles aux niveaux de zoom 0 à 18. Les images satellite varient davantage, car elles ne sont pas générées, mais directement photographiées.
Étant donné que les images satellite ne sont pas toujours disponibles aux niveaux de zoom élevés pour les lieux reculés (par exemple, les zones à faible densité de population ou les espaces océaniques ouverts), vous pourriez avoir besoin de connaître à l'avance le niveau de zoom le plus élevé pour les images à un point géographique donné. L'objet MaxZoomService
fournit une interface simple pour connaître le niveau de zoom maximal sur un lieu donné pour lequel Google Maps propose des images satellite.
Requêtes MaxZoom
L'API Google Maps devant appeler un serveur externe, l'accès au MaxZoomService
est asynchrone. Pour cette raison, vous devez transmettre une méthode de rappel à exécuter à la fin de la requête. Cette méthode de rappel doit traiter le résultat.
Pour lancer une requête au MaxZoomService
, appelez getMaxZoomAtLatLng()
en transmettant la valeur LatLng
du lieu et une fonction de rappel à exécuter une fois la requête terminée.
Réponses MaxZoom
Lorsque getMaxZoomAtLatLng()
exécute la fonction de rappel, elle renvoie deux paramètres :
status
contient leMaxZoomStatus
de la requête.zoom
contient le niveau de zoom. En cas d'échec du service, aucune valeur ne sera indiquée.
Le code status
peut renvoyer l'une des valeurs suivantes :
OK
indique que le service a trouvé le niveau de zoom maximal pour les images satellite.ERROR
indique que la requête MaxZoom n'a pas pu être traitée.
L'exemple suivant montre une carte de la zone métropolitaine de Tokyo. Un clic sur un point de la carte indique le niveau de zoom maximal de ce lieu. (Les niveaux de zoom autour de Tokyo varient généralement de 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;