It's the 15th anniversary of Google Maps Platform - Check out the latest news and announcements

containsLocation()

This example draws a red circle when the clicked point falls outside of the specified polygon (the Bermuda Triangle), and a blue triangle when the click falls inside the polygon.

Read the documentation.

TypeScript

// This example requires the Geometry library. Include the libraries=geometry
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=geometry">

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      center: { lat: 24.886, lng: -70.269 },
      zoom: 5
    }
  );

  const triangleCoords = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 }
  ];

  const bermudaTriangle = new google.maps.Polygon({ paths: triangleCoords });

  google.maps.event.addListener(map, "click", e => {
    const resultColor = google.maps.geometry.poly.containsLocation(
      e.latLng,
      bermudaTriangle
    )
      ? "blue"
      : "red";

    const resultPath = google.maps.geometry.poly.containsLocation(
      e.latLng,
      bermudaTriangle
    )
      ? // A triangle.
        "m 0 -1 l 1 2 -2 0 z"
      : google.maps.SymbolPath.CIRCLE;

    new google.maps.Marker({
      position: e.latLng,
      map,
      icon: {
        path: resultPath,
        fillColor: resultColor,
        fillOpacity: 0.2,
        strokeColor: "white",
        strokeWeight: 0.5,
        scale: 10
      }
    });
  });
}

JavaScript

// This example requires the Geometry library. Include the libraries=geometry
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=geometry">
function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    center: { lat: 24.886, lng: -70.269 },
    zoom: 5
  });
  const triangleCoords = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 }
  ];
  const bermudaTriangle = new google.maps.Polygon({ paths: triangleCoords });
  google.maps.event.addListener(map, "click", e => {
    const resultColor = google.maps.geometry.poly.containsLocation(
      e.latLng,
      bermudaTriangle
    )
      ? "blue"
      : "red";
    const resultPath = google.maps.geometry.poly.containsLocation(
      e.latLng,
      bermudaTriangle
    )
      ? // A triangle.
        "m 0 -1 l 1 2 -2 0 z"
      : google.maps.SymbolPath.CIRCLE;
    new google.maps.Marker({
      position: e.latLng,
      map,
      icon: {
        path: resultPath,
        fillColor: resultColor,
        fillOpacity: 0.2,
        strokeColor: "white",
        strokeWeight: 0.5,
        scale: 10
      }
    });
  });
}

CSS

/* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
#map {
  height: 100%;
}

/* Optional: Makes the sample page fill the window. */
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

HTML

<!DOCTYPE html>
<html>
  <head>
    <title>Polygon Contains Location</title>
    <script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>
    <script
      src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap&libraries=geometry&v=weekly"
      defer
    ></script>
    <link rel="stylesheet" type="text/css" href="./style.css" />
    <script src="./app.js"></script>
  </head>
  <body>
    <div id="map"></div>
  </body>
</html>

All

<!DOCTYPE html>
<html>
  <head>
    <title>Polygon Contains Location</title>
    <script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>
    <script
      src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap&libraries=geometry&v=weekly"
      defer
    ></script>
    <style type="text/css">
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }

      /* Optional: Makes the sample page fill the window. */
      html,
      body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
    <script>
      "use strict";

      // This example requires the Geometry library. Include the libraries=geometry
      // parameter when you first load the API. For example:
      // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=geometry">
      function initMap() {
        const map = new google.maps.Map(document.getElementById("map"), {
          center: {
            lat: 24.886,
            lng: -70.269
          },
          zoom: 5
        });
        const triangleCoords = [
          {
            lat: 25.774,
            lng: -80.19
          },
          {
            lat: 18.466,
            lng: -66.118
          },
          {
            lat: 32.321,
            lng: -64.757
          }
        ];
        const bermudaTriangle = new google.maps.Polygon({
          paths: triangleCoords
        });
        google.maps.event.addListener(map, "click", e => {
          const resultColor = google.maps.geometry.poly.containsLocation(
            e.latLng,
            bermudaTriangle
          )
            ? "blue"
            : "red";
          const resultPath = google.maps.geometry.poly.containsLocation(
            e.latLng,
            bermudaTriangle
          ) // A triangle.
            ? "m 0 -1 l 1 2 -2 0 z"
            : google.maps.SymbolPath.CIRCLE;
          new google.maps.Marker({
            position: e.latLng,
            map,
            icon: {
              path: resultPath,
              fillColor: resultColor,
              fillOpacity: 0.2,
              strokeColor: "white",
              strokeWeight: 0.5,
              scale: 10
            }
          });
        });
      }
    </script>
  </head>
  <body>
    <div id="map"></div>
  </body>
</html>
"use strict"; // This example requires the Geometry library. Include the libraries=geometry // parameter when you first load the API. For example: // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=geometry"> function initMap() { const map = new google.maps.Map(document.getElementById("map"), { center: { lat: 24.886, lng: -70.269 }, zoom: 5 }); const triangleCoords = [ { lat: 25.774, lng: -80.19 }, { lat: 18.466, lng: -66.118 }, { lat: 32.321, lng: -64.757 } ]; const bermudaTriangle = new google.maps.Polygon({ paths: triangleCoords }); google.maps.event.addListener(map, "click", e => { const resultColor = google.maps.geometry.poly.containsLocation( e.latLng, bermudaTriangle ) ? "blue" : "red"; const resultPath = google.maps.geometry.poly.containsLocation( e.latLng, bermudaTriangle ) // A triangle. ? "m 0 -1 l 1 2 -2 0 z" : google.maps.SymbolPath.CIRCLE; new google.maps.Marker({ position: e.latLng, map, icon: { path: resultPath, fillColor: resultColor, fillOpacity: 0.2, strokeColor: "white", strokeWeight: 0.5, scale: 10 } }); }); }
/* Always set the map height explicitly to define the size of the div * element that contains the map. */ #map { height: 100%; } /* Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; }
<!DOCTYPE html> <html> <head> <title>Polygon Contains Location</title> <script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script> <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCb1xprYSpXd0q_yDsJ1W2UGhfl9_YGKU0&callback=initMap&libraries=geometry&v=weekly" defer ></script> <!-- jsFiddle will insert css and js --> </head> <body> <div id="map"></div> </body> </html>