在我的应用程序中,我显示了A点到B点之间的路线。
final PolylineOptions polyOptions = new PolylineOptions(); polyOptions.color(ContextCompat.getColor(mContext, R.color.accent_color)); polyOptions.width(20); polyOptions.addAll(currentRoute.getPoints()); 在currentRoute.getPoints中,我所有的LatLng都用于在地图上绘制路线。我将所有点之间有5公里距离的点提取到一个名为点的ListArray中。
现在,我想沿着这条路线使用数据库中的位置进行填充。我需要显示数据库中路线上或附近(距离路线两边)均处于5公里范围内的所有位置。
为此,我需要进入数据库并过滤记录以查找5公里范围内的所有位置。我不知道如何对location_latitude和location_longitude实施WHERE请求,以获取距参考位置5公里范围内的所有记录。
我当前的SQL是:
query = "SELECT location_id, location_name, " + "location_address, location_image, " + "location_latitude, location_longitude, " + "c.category_marker, l.category_id " + "FROM tbl_categories c, tbl_locations l " + "WHERE l.category_id " + " = " + categ + " AND l.category_id = c.category_id AND " + "location_county " + " = "" + county + """; 有什么建议如何更快地过滤我的数据库(SQL查询)以查找路线附近的所有位置?
问题来源于stack overflow
我去了这样:
where_query = new StringBuilder(); for (i = 0; i <= points.size()-1 ; i ++) { if (i == 0) { where_query.append(" AND ((location_latitude between ").append(points.get(i).latitude - 0.1).append(" AND ").append(points.get(i).latitude + 0.1).append(" AND location_longitude between ").append(points.get(i).longitude - 0.1).append(" AND ").append(points.get(i).longitude + 0.1).append(")"); } else { if (i < points.size() - 1) { where_query.append(" OR (location_latitude between ").append(points.get(i).latitude - 0.1).append(" AND ").append(points.get(i).latitude + 0.1).append(" AND location_longitude between ").append(points.get(i).longitude - 0.1).append(" AND ").append(points.get(i).longitude + 0.1).append(")"); } else { where_query.append(" OR (location_latitude between ").append(points.get(i).latitude - 0.1).append(" AND ").append(points.get(i).latitude + 0.1).append(" AND location_longitude between ").append(points.get(i).longitude - 0.1).append(" AND ").append(points.get(i).longitude + 0.1).append("))"); } } } 等待建议!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。