天天看點

android arcgis多變形邊框顔色,Arcgis for Android 判斷指定點是否在多邊形内部

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;

}

}