maven的pom配置
<dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts</artifactId> <version>1.13</version> </dependency>
jts包,大概的思想就是经纬度组成一个封闭几何图形,然后看坐标点是否落在于此图形中,可以用于解决诸如点面选择这类问题上。
代码
/** * @auther: qiwenshuai * @param: [xys, lng, lat] * xys:经纬度点组成的封闭图形,格式为经度,纬度,经度,纬度 * lng:经度; * lat:纬度 * @return: java.lang.Boolean * @description: 电子围栏多边形判断经纬度点是否在多边形内 * @requestJson: * @createTime: 18-10-10 下午2:37 * @editTime: */ private static Boolean polygonJudgment(String xys, Double lng, Double lat) { String[] strings = xys.split(","); Coordinate[] coordinates = new Coordinate[strings.length / 2]; try { for (int i = 0; i < strings.length; i += 2) { coordinates[i / 2] = new Coordinate(Double.parseDouble(strings[i]), Double.parseDouble(strings[i + 1])); } GeometryFactory factory = new GeometryFactory(); if (coordinates.length > 3) { LinearRing shell = factory.createLinearRing(coordinates); Polygon polygon = factory.createPolygon(shell, null); if (polygon.contains(factory.createPoint(new Coordinate(lng, lat)))) { return true; } } } catch (Exception ignored) { return false; } return false; }
返回true说明此点在此面中,已测试,可以放心使用。