前台传经纬度字符串该如何查询经纬度在该范围内的数据

前台传经纬度字符串该如何查询经纬度在该范围内的数据

问题描述:

前台传过来一个"50-100,30-40;10-20,60-80"这样的字符串,-号是范围,逗号隔开的是经度和纬度,分号隔开的是多组经纬度,数据库中字段为lng,lat,如何进行字符串分割查询经纬度分别在对应范围内的数据

首先是到了后台,你需要把前端传的字符串用 split(';') 分割一下,然后在对每个字符串进行 split(',') 的分割, 再对结果进行 split('-') 的分割。分割后的效果可能就是这样的。

50,100     30,40

10,20       60,80

怎么存储都可以,只要能存进去就好了

这只是数据的前期处理。然后就是通过写动态 sql,达到这样的效果 (t.lng >= 50 and t.lng <= 100 and t.lat >= 30 and t.lat <= 40) OR (t.lng >= 10 and t.lng <= 20 and t.lat >= 60 and t.lat <= 80)。需要用到 foreach 标签

    String str = "50-100,30-40;10-20,60-80";
    List<List<Integer>> list = new ArrayList<>();
    for (String str1 : str.split(";")) {
      List<Integer> subList = new ArrayList<>(4);
      for (String str2 : str1.split(",")) {
        for (String str3 : str2.split("-")) {
          subList.add(Integer.parseInt(str3));
          System.out.printf("%s ", str3);
        }
      }
      list.add(subList);
      System.out.println();
    }

/*
50 100 30 40 
10 20 60 80 
*/

做两个split就好啦

let res =[]
let str = '50-100,30-40;10-20,60-80'
arrs =str.split(';')
arrs.forEach(item=>{ res.push({lng:item.split(',')[0],lat:item.split(',')[1]}) })
console.log(res)

地图的话,你要画一个正方形去圈地点

代码补充在后面了

字符串spilt分割不行吗?

你是真比较傻啊  

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y