Lá vai:
function contem(poligono, point) {
var j=0;
var oddNodes = false;
var x = point.lng();
var y = point.lat();
for (var i=0; i < poligono.getVertexCount(); i++) {
j++;
if (j == poligono.getVertexCount()) {
j = 0;
}
if (((poligono.getVertex(i).lat() < y) &&
(poligono.getVertex(j).lat() >= y))
|| ((poligono.getVertex(j).lat() < y) &&
(poligono.getVertex(i).lat() >= y))) {
if ( poligono.getVertex(i).lng() + (y -
poligono.getVertex(i).lat()) / (poligono.getVertex(j).lat()-poligono.getVertex(i).lat())
* (poligono.getVertex(j).lng() - poligono.getVertex(i).lng())
oddNodes = !oddNodes
}
}
}
return oddNodes;
}
Um exemplo de utilização:
var nas_barcas_niteroi = new GLatLng(-22.9002528744688, -43.123140335083);
//Quadrado no Centro do Rio
var vertices =
[
new GLatLng(-22.8980627323264, -43.1954956054688),
new GLatLng(-22.9020160300563, -43.1989288330078),
new GLatLng(-22.9043879533846, -43.1954956054688),
new GLatLng(-22.9001184615258, -43.1884574890137),
]
var poligono = new GPolygon(vertices, "#000000", 1, 1, "#336699", 0.3);
var contem = contem(poligono, nas_barcas_niteroi);
alert("Contem? " + contem)
Bem legal trabalhar com a API do Google Maps + JQuery + Rails
Ferramenta certa, pra coisa certa!!!
Valeu!