Identificar si el punto está en el polígono

Según mi requisito, estoy dibujando los polígonos en el mapa de google mostrado en la imagen abajo. (Usando mapas v2) Introduzca aquí la descripción de la imagen

Ahora necesito mostrar una alerta cuando el usuario entra en ese polígono particular.

Cómo identificar si mi ubicación actual está en el polígono. (Necesidad manera optimizada sin drenar la batería)

Gracias por adelantado.

Acabo de probar Ray Casting algoritmo que identifica punto en polígono. Esto funciona perfecto.

Consulte http://en.wikipedia.org/wiki/Point_in_polygon para la tesis de Ray-Casting

private boolean isPointInPolygon(LatLng tap, ArrayList<LatLng> vertices) { int intersectCount = 0; for (int j = 0; j < vertices.size() - 1; j++) { if (rayCastIntersect(tap, vertices.get(j), vertices.get(j + 1))) { intersectCount++; } } return ((intersectCount % 2) == 1); // odd = inside, even = outside; } 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 > pY && bY > pY) || (aY < pY && bY < pY) || (aX < pX && bX < pX)) { return false; // a and b can't both be above or below pt.y, and a or // b must be east of pt.x } double m = (aY - bY) / (aX - bX); // Rise over run double bee = (-aX) * m + aY; // y = mx + b double x = (pY - bee) / m; // algebra is neat! return x > pX; } 

Encontré el método de ray-casting poco fiable, pero terminé usando el PolyUtil de google maps.

Necesita la compile 'com.google.maps.android:android-maps-utils:0.5' dependencias compile 'com.google.maps.android:android-maps-utils:0.5'

Y entonces el método se parece a esto

 PolyUtil.containsLocation(userLocation, polyPointsList, false); 

Referir este enlace

Polygon Detección táctil Google Map API V2

Su algoritmo RayCasting, puede ayudarle 🙂

Una breve descripción sobre el algoritmo:

Una línea horizontal se dibuja de su punto a la derecha, si intersecta los lados del polígono en el número impar de veces entonces el punto está dentro del polígono más exterior 🙂

Estos enlaces wiki te darán una idea completa:

http://en.wikipedia.org/wiki/Point_in_polygon

http://rosettacode.org/wiki/Ray-casting_algorithm

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.