Detecção de toque de polígono Google Map API V2

Eu estou tentando descobrir a melhor maneira de fazer isso, eu tenho um mapa com umPolygon desenhado nele. Como não parece que a API do Google Maps V2 tenha uma detecção de toque em um polígono. Fiquei imaginando se é possível detectar se o ponto de contato está dentro do polígono? Se sim, então, como, meu principal objetivo é delinear um estado em um mapa e quando o usuário tocar nesse estado, ele mostrará mais detalhes dentro de uma visualização personalizada. A partir de agora eu sou capaz de capturar oMapOnClick do mapa, mas quando o usuário toca dentro doPolygon eu quero opolygon.getID() definido noToast. Eu sou um novato, então peço desculpas se não for claro o suficiente.

googleMap.setOnMapClickListener(new OnMapClickListener() 
    {
        public void onMapClick(LatLng point) 
        {
        boolean checkPoly = true;

        Toast.makeText(MainActivity.this,"The Location is outside of the Area", Toast.LENGTH_LONG).show();
        }    
     });
     }
     }
   catch (Exception e) {
         Log.e("APP","Failed", e);
     }    

Ok, isso é o que eu tenho semi-trabalhando até agora

    private boolean rayCastIntersect(LatLng tap, LatLng vertA, LatLng vertB) {

    double aY = vertA.latitude;
    double bY = vertB.latitude;
    double aX = vertA.longitude;
    double bX = vertB.longitude;
    double pY = tap.latitude;
    double pX = tap.longitude;
     if (aY > bY) {
            aX = vertB.longitude;
            aY = vertB.latitude;
            bX = vertA.longitude;
            bX = vertA.latitude;
        }
    System.out.println("aY: "+aY+" aX : "+aX);
    System.out.println("bY: "+bY+" bX : "+bX);

     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;
//  }

    double m = (aX != bX) ? ((bY - aY) / (bX - aX)) : aX;
    double bee = (aX != pX) ? ((pY - aY) / (pX - aX)) : aX;
    double x = (pY - bee) / m;

    return x > pX;
}

}

O problema que estou tendo é que o toque é verdadeiro à esquerda de cada polígono até chegar a outro. O que há de errado com meu algoritmo que causaria esse problema? Qualquer ajuda seria apreciada.

questionAnswers(6)

yourAnswerToTheQuestion