Arcgis for Android 判斷指定點是否在指定多邊形的内部方法:
public boolean IsWithIn(Point point, List list) {
double x = point.getX();
double y = point.getY();
int isum, icount, index;
double dLon1 = 0, dLon2 = 0, dLat1 = 0, dLat2 = 0, dLon;
if (list.size() < 3) {
return false;
}
isum = 0;
icount = list.size();
for (index = 0; index < icount - 1; index++) {
if (index == icount - 1) {
dLon1 = list.get(index).getX();
dLat1 = list.get(index).getY();
dLon2 = list.get(0).getX();
dLat2 = list.get(0).getY();
} else {
dLon1 = list.get(index).getX();
dLat1 = list.get(index).getY();
dLon2 = list.get(index + 1).getX();
dLat2 = list.get(index + 1).getY();
}
// 判斷指定點的 緯度是否在 相鄰兩個點(不為同一點)的緯度之間
if (((y >= dLat1) && (y < dLat2)) || ((y >= dLat2) && (y < dLat1))) {
if (Math.abs(dLat1 - dLat2) > 0) {
dLon = dLon1 - ((dLon1 - dLon2) * (dLat1 - y)) / (dLat1 - dLat2);
if (dLon < x){
isum++;
}
}
}
}
if ((isum % 2) != 0) {
return true;
} else {
return false;
}
}