Exemplo JSFiddle
Criei um JSFiddle demonstrando uma solução para o seu problema usando a biblioteca JSTS (JavaScript Topology Suite) (JSTS).
Explicação
Existem duas etapas para essa abordagem. A primeira etapa converte suas geometrias do Google em expressões de geometria WellKnownText (WKT) , que é um formato amplamente suportado. A segunda etapa usa o JSTS para executar uma geometry.intersects()
comparação JSTS de duas geometrias WKT.
Para realmente entender isso, você precisará ter um entendimento básico do WKT. Como as geometrias de polígonos no seu mapa do Google não são amplamente suportadas, eu as converto imediatamente em geometrias WKT para que possamos trabalhar com elas no JSTS.
Para fazer isso facilmente, usei a biblioteca Wicket . É claro que você sempre pode usar o seu próprio método do Google-Polígono para WKT, ou pode usar um que escrevi uma vez , ou pode usar outra solução que possa encontrar. Pessoalmente, hoje em dia eu apenas uso o Wicket, que, como você pode ver, é muito simples:
// Pass in two Google Polygon objects.
// It returns two WellKnownText (WKT) geometry expressions.
//
function UseWicketToGoFromGooglePolysToWKT( poly1, poly2 )
{
var wicket = new Wkt.Wkt();
wicket.fromObject(poly1);
var wkt1 = wicket.write();
wicket.fromObject(poly2);
var wkt2 = wicket.write();
return [wkt1, wkt2];
}
A seguir, a carne e as batatas - usando o JSTS para pegar duas geometrias WKT e testar se elas se cruzam ou não. Mais uma vez, contando com a biblioteca, não há muito o que fazer:
// Pass in two WKT geometry expressions.
// It performs a JSTS intersects() comparison.
//
function UseJstsToTestForIntersection( wkt1, wkt2 )
{
// Instantiate JSTS WKTReader and get two JSTS geometry objects
var wktReader = new jsts.io.WKTReader();
var geom1 = wktReader.read(wkt1);
var geom2 = wktReader.read(wkt2);
if (geom2.intersects(geom1)) {
alert('intersection confirmed!');
} else {
alert('..no intersection.');
}
}
Como eu vinculei as bibliotecas no Fiddle
O violão vinculado acima e a solução que demonstrei exigem a adição de duas bibliotecas de terceiros ao seu projeto - JSTS e Wicket. Obter o código de seus respectivos Githubs e incorporá-lo ao seu projeto é um exercício diferente. Mas para o violino, vinculei a essas bibliotecas fazendo referência a elas em um exemplo JSTS existente que encontrei postado por Christopher Manning , bem como na página de demonstração do próprio Wicket . Basicamente, abri as páginas, selecionei "View Source" e retirei referências relevantes para as duas bibliotecas. Estes foram os pontos de extremidade exatos da biblioteca que usei:
http://arthur-e.github.io/Wicket/wicket.js
http://arthur-e.github.io/Wicket/wicket-gmap3.js
http://bl.ocks.org/christophermanning/raw/4450188/javascript.util.min.js
http://bl.ocks.org/christophermanning/raw/4450188/jsts.min.js