借助网上大神的资料完成如何判断一个坐标是否在指定一个区域内。 latLngs表示坐标集合
/***
* 判断是否再圆内
* @param l 要判断的坐标
* @return boolean(true 在 ,false 不在)
*/
public boolean checkInCircle(LatLng l) {
Double rang = DistanceUtil.getDistance(latLngs.get(0), latLngs.get(1));
return !(DistanceUtil.getDistance(latLngs.get(0),l)>rang);
}
/**
* 判断坐标是否在多边形内
* 射线算法
* @param l 要判断的坐标
* @return @return boolean(true 在 ,false 不在)
*/
public boolean checkInPolygon(LatLng l) {
int polySides = latLngs.size();
int i,j=polySides-1 ;
boolean oddNodes=false ;
for (i=0;i<polySides; i++) {
if((latLngs.get( i ).latitude< l.latitude && latLngs.get(j).latitude>=l.latitude
|| latLngs.get(j).latitude<l.latitude &&latLngs.get( i ).latitude>=l.latitude )
&& (latLngs.get( i ).longitude<=l.longitude || latLngs.get( j ).longitude<=l.longitude)) {
oddNodes^=(latLngs.get( i ).longitude+(l.latitude-latLngs.get(i).latitude)/(latLngs.get(j).latitude-latLngs.get(i).latitude)*(latLngs.get( j ).longitude-latLngs.get( i ).longitude)<l.longitude);}
j=i;
}
return oddNodes;
}