直接上代码
/*主要算法,判断给定坐标是否在指定区域内
* 参数:入参经度列,纬度列,经度,纬度;出参true-false
* step1:取4个最值,先判断点与最值的位置关系
* step2:点与边界点位置关系
* step3:核心算法,判断点所引的横向射线与不规则区域交点个数
*/
public static boolean JudgeInOutFirst(double[] LngCollotions,double[] LatCollotions,double Lng,double Lat){
//点在最值区域外
if(Lng<GetMinLng(LngCollotions)||Lng>GetMaxLng(LngCollotions)||Lat<GetMinLat(LatCollotions)||Lat>GetMaxLat(LatCollotions)){
return false;
}else{
int nvert =LngCollotions.length;//点数
int i,j,c=0,k=0;
//该点位与n个点所成n-1条线的判断
for(i=0,j=nvert-1;i<nvert;j=i++){
boolean LngTemp =(LngCollotions[i]==Lng);
Boolean latTemp =