判断一个经纬度是否在选定范围(圆)之内

/*****
 *    判断是否在范围内
 * @param raduis    圆的半径
 * @param lat       点的纬度
 * @param lng       点的经度
 * @param lat1      圆的纬度
 * @param lng1      圆的经度
 * @return
 */
public boolean isInRange(int raduis,BigDecimal lat,BigDecimal lng,BigDecimal lat1,BigDecimal lng1){
    double R = 6378137.0;
    double dLat = (lat1.doubleValue() - lat.doubleValue()) * Math.PI / 180;
    double dLng = (lng1.doubleValue() - lng.doubleValue()) * Math.PI / 180;
    double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat.doubleValue() * Math.PI / 180) * Math.cos(lat1.doubleValue() * Math.PI / 180) * Math.sin(dLng / 2) * Math.sin(dLng / 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double d = R * c;
    double dis = Math.round(d);
    if (dis <= raduis){  //点在圆内
        return true;
    }else {
        return false;
    }
}
  boolean range = isInRange(1000,latitude,longitude,communities.get(s).getLatitude(),communities.get(s).getLongitude());

 if (range==true){  //点在圆内
                           
         //查询区域范围内的类型
         serviceCategory = serviceCategoryService.communityServiceList(communities.get(s).getCommunityId());
         }else{ //点全部不在圆内                  
          //查询默认服务类型
          serviceCategory = serviceCategoryDao.defaultServiceCategoryList();
        
           }

 

  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
判断一个经纬度是否在指定多边形区域内,通常需要使用以下步骤: 1. 将多边形区域的经纬度坐标点转换为一个Polygon对象。 2. 创建一个Point对象,该对象表示输入的经纬度值。 3. 使用Polygon对象的contains方法检查Point对象是否在多边形内。 以下是一个Java代码示例,用于判断一个经纬度是否在指定多边形区域内: ```java public boolean isWithinPolygon(double lat, double lon, List<Double> polyLats, List<Double> polyLons) { // 将多边形区域的经纬度坐标点转换为Polygon对象 Coordinate[] coordinates = new Coordinate[polyLats.size()]; for (int i = 0; i < polyLats.size(); i++) { coordinates[i] = new Coordinate(polyLons.get(i), polyLats.get(i)); } GeometryFactory geometryFactory = new GeometryFactory(); Polygon polygon = geometryFactory.createPolygon(coordinates); // 创建一个Point对象 Point point = geometryFactory.createPoint(new Coordinate(lon, lat)); // 使用Polygon对象的contains方法检查Point对象是否在多边形内 if (polygon.contains(point)) { // 经纬度在多边形内 return true; } else { // 经纬度不在多边形内 return false; } } ``` 在这个示例中,我们首先将多边形区域的经纬度坐标点转换为一个Polygon对象。然后,我们创建了一个Point对象,该对象表示输入的经纬度值。最后,我们使用Polygon对象的contains方法检查Point对象是否在多边形内。如果在多边形内,则返回true,否则返回false。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lyatf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值