Google Maps v3: check if point exists in polygon

Solution 1:

One algorithm to solve this is ray-casting. See an explanation here.

And you can find code implementing this for the Google Maps JS API V3 here.

HTH.

Solution 2:

You can do this quite simply with Google maps geometry library.

First be sure to add the google maps geometry library.

<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false"></script>

Then, define your polygon

var rightShoulderFront = new google.maps.Polygon({
            paths: myCoordinates
        });
rightShoulderFront .setMap(map);

I'm going to add an event listener to handle a 'click' event, but you can adapt to fit your needs

google.maps.event.addListener(rightShoulderFront , 'click', isWithinPoly);

Create a function to handle our click event an check if coordinate exists within polygon using Google's geometry library

/** @this {google.maps.Polygon} */
function isWithinPoly(event){
   var isWithinPolygon = google.maps.geometry.poly.containsLocation(event.latLng, this);
    console.log(isWithinPolygon);
}

Solution 3:

You have a very good example of containsLocation() method in Google Maps API documentation.

Solution 4:

You should have a look about the Gmaps.js library. It has a quite simple method about geofence.

Solution 5:

The example and implementation do not take into account that a polygon can cross the 180 degrees boundary.

The implementation does take it into account (implicitly) in the bounding box check, but the polygon check fails.