您好我一直在关注本教程http://googledevelopers.blogspot.com/2014/12/building-scalable-geofencing-api-on.html,这是我的问题,
我有一个经度和纬度坐标列表,我已将其作为点添加到JTS(Java拓扑套件)STR树中。
现在我想向STR树发送一个圆形区域,找到落在圆圈中的所有点。
Coordinate center = new Coordinate(entity.getLongitude(), entity.getLatitude());
GeometricShapeFactory gsf = new GeometricShapeFactory();
gsf.setCentre(center);
gsf.setNumPoints(20);
**gsf.setSize(320.0);**
Polygon poly = gsf.createCircle();
Coordinate[] coordinates = poly.getCoordinates();
//Create polygon from the coordinates.
GeometryFactory fact = new GeometryFactory();
LinearRing linear_ring = new GeometryFactory().createLinearRing(coordinates);
Polygon polygon = new Polygon(linear_ring, null, fact);
List<STRLeaf> items = strTree.query(polygon.getEnvelopeInternal());
然而,搜索结果会在经度和纬度点树中发回所有数据。当我降低320以下的圆的大小时,我没有收到搜索STR树的结果。有没有人有这方面的经验我想创建一个圆圈,找到~7英里的圆圈内的所有点。
感谢您的时间
答案 0 :(得分:1)
事实证明我在后端犯了一个愚蠢的错误。当我将项目添加到树中时,我将x和y坐标混合在一起,以便Lat Longs被反转。切换后,我现在可以将圆的大小设置为0.1左右,效果很好。