बस रे कास्टिंग एल्गोरिथ्म जो बहुभुज में बात की पहचान करता है की कोशिश की। यह सही काम करता है।
मैं रे कास्टिंग विधि अविश्वसनीय पाया रे-कास्टिंग
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;
}
क्या आपने यहां भूगर्भ का उपयोग किया था? – Ranjit
नहीं। मैंने पॉलीगॉन ऑप्शन का उपयोग करके उस बहुभुज को खींचा। यह पता लगाने के लिए सबसे अच्छा तरीका खोजना कि वर्तमान पॉलीगॉन में वर्तमान स्थान है या नहीं। – Supriya
आप इसके लिए जियोफ़ेंस का उपयोग कर सकते हैं। http://developer.android.com/training/location/geofencing.html – Ranjit