1. [Maximum Zoom Imagery](https://developers.google.com/maps/documentation/javascript/maxzoom.md.txt#MaxZoom)
2. [MaxZoom Requests](https://developers.google.com/maps/documentation/javascript/maxzoom.md.txt#MaxZoomRequests)
3. [MaxZoom Responses](https://developers.google.com/maps/documentation/javascript/maxzoom.md.txt#MaxZoomResponses)

## Overview

> [!NOTE]
> Also see the Maps JavaScript API Reference: [Max Zoom](https://developers.google.com/maps/documentation/javascript/reference/max-zoom.md.txt)

The Google Maps API provides map tiles at various
[zoom levels](https://developers.google.com/maps/documentation/javascript/tutorial#MapOptions) for map type imagery. Most roadmap
imagery is available from zoom levels 0 to 18, for
example. Satellite imagery varies more widely as this
imagery is not generated, but directly photographed.

Because satellite imagery is not always available at
high zoom levels for remote locations --- sparsely populated
areas or open ocean areas --- you may want to
know the highest zoom level for imagery at a given location
beforehand. The `MaxZoomService` object provides a
simple interface for discovering the maximum zoom level at a
given location for which Google Maps has satellite imagery.

## MaxZoom Requests

Accessing the `MaxZoomService` is asynchronous, since the
Google Maps API needs to make a call to an external server. For
that reason, you need to pass a *callback* method to execute
upon completion of the request. This callback method should process
the result.

To initiate a request to the `MaxZoomService`,
call `getMaxZoomAtLatLng()`, passing the
`LatLng` of the location and a callback function
to execute upon completion of the request.

## MaxZoom Responses

When `getMaxZoomAtLatLng()` executes the *callback*
function, it will pass back two parameters:

- `status` contains the `MaxZoomStatus` of the request.
- `zoom` contains the zoom level. If for some reason the service fails, this value will not be present.

The `status` code may return one of the following values:

- `OK` indicates that the service found the maximum zoom level for satellite imagery.
- `ERROR` indicates that the MaxZoom request could not be processed.

The following example shows a map of metropolitan Tokyo.
Clicking anywhere on the map indicates the maximum zoom level
at that location. (Zoom levels around Tokyo generally vary
between zoom levels 18 and 21.)

### TypeScript

```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;
```

> [!NOTE]
> **Note:** Read the [guide](https://developers.google.com/maps/documentation/javascript/using-typescript.md.txt) on using TypeScript and Google Maps.

### JavaScript

```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;
```

> [!NOTE]
> **Note:** The JavaScript is compiled from the TypeScript snippet.

[View example](https://developers.google.com/maps/documentation/javascript/examples/maxzoom-simple.md.txt)