# Identify if point is in the polygon

As per my requirement, I am drawing polygons on google map shown in the image below.(using maps v2)

Now I need to show an alert when user enters that particular polygons.

How to identify if my current location is with in the polygon.

(Need optimized way without draining battery)

Thanks in advance.

### Related posts:

### 3 Solutions collect form web for “Identify if point is in the polygon”

Just tried Ray Casting algorithm which identifies point in polygon. This works perfect.

Refer http://en.wikipedia.org/wiki/Point_in_polygon for thesis of 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;
}
```

I found ray-casting method unreliable but I ended up using the `PolyUtil`

from google maps.

You need the dependency `compile 'com.google.maps.android:android-maps-utils:0.5'`

And then the method looks like this

```
PolyUtil.containsLocation(userLocation, polyPointsList, false);
```

Refer this link

Polygon Touch detection Google Map API V2

Its RayCasting algorithm, it may help you ðŸ™‚

A brief description about the algorithm:

A horizontal line is drawn from your point to the right, if it intersects the sides of polygon at odd number of times then the point is inside the polygon else outside ðŸ™‚

These wiki links will give you complete idea: