There is google.maps.geometry.poly.containsLocation: https://developers.google.com/maps/documentation/javascript/reference#poly
On Thursday, January 10, 2013 11:59:54 PM UTC+11, Abhishek Gahlout wrote: > > The Google maps API does not already provide a method for checking points > in polygons. After researching a bit I stumbled across the Ray-casting > algorithm which will determine if an X-Y coordinate is inside a plotted > shape. This will translate to latitude and longitude. The following extends > the google.maps.polygon.prototype to use this algorithm. Simply include > this code at a point in the code after google.maps has loaded: > > google.maps.Polygon.prototype.Contains = function(point) { var crossings = > 0, path = this.getPath(); > > // for each edge > for (var i=0; i < path.getLength(); i++) { > var a = path.getAt(i), > j = i + 1; > if (j >= path.getLength()) { > j = 0; > } > var b = path.getAt(j); > if (rayCrossesSegment(point, a, b)) { > crossings++; > } > } > > // odd number of crossings? > return (crossings % 2 == 1); > > function rayCrossesSegment(point, a, b) { > var px = point.lng(), > py = point.lat(), > ax = a.lng(), > ay = a.lat(), > bx = b.lng(), > by = b.lat(); > if (ay > by) { > ax = b.lng(); > ay = b.lat(); > bx = a.lng(); > by = a.lat(); > } > // alter longitude to cater for 180 degree crossings > if (px < 0) { px += 360 }; > if (ax < 0) { ax += 360 }; > if (bx < 0) { bx += 360 }; > > if (py == ay || py == by) py += 0.00000001; > if ((py > by || py < ay) || (px > Math.max(ax, bx))) return false; > if (px < Math.min(ax, bx)) return true; > > var red = (ax != bx) ? ((by - ay) / (bx - ax)) : Infinity; > var blue = (ax != px) ? ((py - ay) / (px - ax)) : Infinity; > return (blue >= red); > > } > > }; > > Here we have extended the functionality of google.maps.Polygon by defining > a function with name ‘Contains’ which can be used to determine whether the > latitude longitude provided in function parameter are within the polygon or > not. Here we make use of Ray-casting algorithm and developed a function > using the same. After doing this much of exercise now, we can check a point > as follows: > > var point = new google.maps.LatLng(52.05249047600099, -0.6097412109375); > var polygon = new google.maps.Polygon({path:[INSERT_PATH_ARRAY_HERE]}); if > (polygon.Contains(point)) { // point is inside polygon } > > For complete code and demo please go to: > http://counsellingbyabhi.blogspot.in/2013/01/google-map-check-whether-point-latlong.html > > > On Sunday, June 13, 2010 12:28:23 PM UTC+5:30, taylor wrote: >> >> >> I am trying to determine if a latitude longitude point is in a >> polygon. Classic point in polygon issue. I see google has build a >> solutions because they can detect if a point click is in polygon. I >> would assume i can step backwards and little and detect if a lat,long >> point is in the polygon(i just dont know how). basically i have array >> of points aka "bermudaTriangl" and a latlong point- but i want to get >> true or false with no click. >> >> Any suggestions??? >> >> >> // Add a listener for the click event >> google.maps.event.addListener(bermudaTriangle, 'click', showArrays); > > -- You received this message because you are subscribed to the Google Groups "Google Maps JavaScript API v3" group. To view this discussion on the web visit https://groups.google.com/d/msg/google-maps-js-api-v3/-/lmrYX7BKyssJ. To post to this group, send email to google-maps-js-api-v3@googlegroups.com. To unsubscribe from this group, send email to google-maps-js-api-v3+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-maps-js-api-v3?hl=en.