判断一个点在指定区域内 多边形,圆

借助网上大神的资料完成如何判断一个坐标是否在指定一个区域内。 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; 
		
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值