Обнаружение Polygon Touch Google Map API V2

Я пытаюсь выяснить, как лучше это сделать, у меня есть карта с однимPolygon нарисовано на нем. Поскольку не похоже, что Google Maps API V2 имеет функцию обнаружения касания на полигоне. Мне было интересно, можно ли определить, находится ли точка касания внутри многоугольника? Если да, то как, моя главная цель - наметить состояние на карте, и когда пользователь коснется этого состояния, в пользовательском представлении будет отображаться больше деталей. На данный момент я могу захватитьMapOnClick карты, но когда пользователь нажимает внутриPolygon Я хочуpolygon.getID() установить наToast, Я новичок, поэтому я прошу прощения, если я не достаточно ясно,

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

Хорошо, это то, что я до сих пор полуработал

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

}

Проблема, с которой я сталкиваюсь - это касание слева от каждого многоугольника, пока оно не достигнет другого. Что не так с моим алгоритмом, который может вызвать эту проблему? Любая помощь будет оценена.

Ответы на вопрос(6)

Ваш ответ на вопрос