huanghongfa
2021-06-07 71949fe2af29b044d2d584e48df30a3f28fd2024
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.panzhihua.common.utlis;
 
import com.panzhihua.common.model.vos.grid.LatLngVO;
 
import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.util.List;
 
public class LngLatUtils {
 
    public static boolean check(Point2D.Double _point, List<Point2D.Double> polygon)
    {
        java.awt.geom.GeneralPath peneralPath = new java.awt.geom.GeneralPath();
 
        Point2D.Double first = polygon.get(0);
        peneralPath.moveTo(first.x, first.y);
        polygon.remove(0);
 
        for(Point2D.Double d : polygon)
        {
            peneralPath.lineTo(d.x, d.y);
        }
 
        peneralPath.lineTo(first.x, first.y);
        peneralPath.closePath();
 
        return peneralPath.contains(_point);
    }
 
    public static  boolean isInPolygon(List<LatLngVO> bound, double pointlng, double pointLat)
    {
        Point2D.Double point = new Point2D.Double(pointlng, pointLat);
        List<Point2D.Double> pointList = new ArrayList<>();
        for (int i = 0; i < bound.size(); i++) {
            pointList.add(new Point2D.Double(bound.get(i).getLng(), bound.get(i).getLat()));
        }
        return check(point, pointList);
    }
}