gis地图绘制多边形、圆形、矩形Java后端判断坐标是否在绘制范围内(含完整代码及算法工具类)

本文介绍了如何在Java后端利用GIS技术进行地图绘制,包括多边形、圆形和矩形,并提供了一种算法工具类,用于判断坐标是否在绘制范围内。通过BmapPoint实体类存储经纬度信息,结合GraphUtils工具类,实现与数据库交互,获取坐标信息。在控制器中接收前端坐标数组,经过测试,可以成功获取到绘制范围内的企业坐标。
摘要由CSDN通过智能技术生成

 首先查看最终效果

第一步:首先创建BmapPoint实体类   注意:经纬度的构造方法参数一定不要写反!!!!

import lombok.Data;

@Data
public class BmapPoint {

    private double lng;// 经度
    private double lat;// 纬度

    public BmapPoint() {

    }

    public BmapPoint(double lng, double lat) {
        this.lng = lng;
        this.lat = lat;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof BmapPoint) {
            BmapPoint bmapPoint = (BmapPoint) obj;
            return (bmapPoint.getLng() == lng && bmapPoint.getLat() == lat) ? true : false;
        } else {
            return false;
        }
    }

    public double getLng() {
        return lng;
    }

    public void setLng(double lng) {
        this.lng = lng;
    }

    public double getLat() {
        return lat;
    }

    public void setLat(double lat) {
        this.lat = lat;
    }
}

第二步:添加GraphUtils工具类(含测试)

import com.honghu.cloud.bean.envop.BmapPoint;

import java.util.Arrays;

public class GraphUtils {
	/**
	 * 判断点是否在多边形内(基本思路是用交点法)
	 * 
	 * @param point
	 * @param boundaryPoints
	 * @return
	 */
	public static boolean isPointInPolygon(BmapPoint point, BmapPoint[] boundaryPoints) {
		// 防止第一个点与最后一个点相同
		if (boundaryPoints != null && boundaryPoints.length > 0
				&& boundaryPoints[boundaryPoints.length - 1].equals(boundaryPoints[0])) {
			boundaryPoints = Arrays.copyOf(boundaryPoints, boundaryPoints.length - 1);
		}
	
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值