当前位置: 首页 > news >正文

装修网站平台排行榜电子商务平台定制开发

装修网站平台排行榜,电子商务平台定制开发,wordpress 插件 ajax,今天深圳新增确诊最新消息概述 Geo就是Geolocation的简写形式,代表地理坐标。在Redis中,构造了能够存储地址坐标信息的一种数据结构,帮助我们根据经纬度来检索数据。 命令行操作方法 GEOADD 可以用来添加一个或者多个地理坐标。 GEODIST 返回一个key中两个成员之…

概述

Geo就是Geolocation的简写形式,代表地理坐标。在Redis中,构造了能够存储地址坐标信息的一种数据结构,帮助我们根据经纬度来检索数据。

命令行操作方法

GEOADD

可以用来添加一个或者多个地理坐标。

GEODIST

返回一个key中两个成员之间的距离。

GEOHASH

将指定member的坐标转为哈希字符串形式返回。

GEOPOS

返回指定member的坐标。

 GEORADIUS

指定圆心、半径,找到该圆内包含的member。

 GEOSEARCH

在指定范围内搜索member。最新的一个命令,可以指定中心点的经纬度,也可以使用member;并且还可以指定搜索范围是圆形还是正方形。

 StringRedisTemplate操作方法

add

用于添加地理坐标。

    @Resourceprivate StringRedisTemplate stringRedisTemplate;@Testpublic void test(){Point point = new Point(112.653652,37.809874);Long add = this.stringRedisTemplate.opsForGeo().add("ShanXi", point, "SXU");System.out.println(add);}

 radius

用来查找坐标

    @Resourceprivate StringRedisTemplate stringRedisTemplate;@Test void test() {// 中心点Point point = new Point(112.617734,37.797128);// 半径Distance radius = new Distance(100, RedisGeoCommands.DistanceUnit.KILOMETERS);// 由中心点和半径组成的圆圈Circle circle = new Circle(point, radius);// 获取值之后要带回来的参数RedisGeoCommands.GeoRadiusCommandArgs args = RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs().includeDistance() // 包含距离.includeCoordinates() // 包含坐标.sortAscending(); // 升序// 进行查询GeoResults<RedisGeoCommands.GeoLocation<String>> search =this.stringRedisTemplate.opsForGeo().radius("ShanXi", circle, args);List<GeoResult<RedisGeoCommands.GeoLocation<String>>> content = search.getContent();if(content == null || content.isEmpty()) {System.out.println("没有数据");}for (GeoResult<RedisGeoCommands.GeoLocation<String>> geoLocationGeoResult : content) {// 输出距离System.out.println("距离:" + geoLocationGeoResult.getDistance());RedisGeoCommands.GeoLocation<String> locationGeoResultContent = geoLocationGeoResult.getContent();// 输出名称System.out.println("member:" + locationGeoResultContent.getName());// 输出坐标System.out.println("坐标" + locationGeoResultContent.getPoint());}}

search

和radius方法类似,只不过search还可以查找矩形范围之内的坐标。

remove

删除操作

    @Resourceprivate StringRedisTemplate stringRedisTemplate;@Test void test() {Long remove = this.stringRedisTemplate.opsForGeo().remove("ShanXi", "TaiYuanXueYuan");System.out.println(remove);}

 distance

查看两个地理位置之间的直线距离

    @Resourceprivate StringRedisTemplate stringRedisTemplate;@Test void test() {Distance distance = this.stringRedisTemplate.opsForGeo().distance("ShanXi", "SXU", "ZonBei");System.out.println(distance);}

代码示例

需求:山西所有高校建立之后,都会把自己的位置上传到某信息平台,并且还会查询距离自己学校30公里之内的其他学校。当学校换位置之后,就会删除当前信息。

基础配置

@RestController
@RequestMapping("/school")
public class SchoolController {@Resourceprivate SchoolService schoolService;}
@Service
public class SchoolService extends ServiceImpl<SchoolMapper, School> {@Resourceprivate StringRedisTemplate stringRedisTemplate;}
public interface SchoolMapper extends BaseMapper<School> {
}
@Data
public class School {// 学校idprivate Integer id;// 学校名private String name;// 经度private BigDecimal longitude;// 纬度private BigDecimal latitude;}

上传位置信息

    public String add(School school) {// TODO 更新信息到数据库boolean save = this.save(school);// TODO 判断是否更新成功if(save) {// TODO 封装位置信息Point point = new Point(school.getLongitude().doubleValue(), school.getLatitude().doubleValue());// TODO 存入数据库this.stringRedisTemplate.opsForGeo().add("GEO:SCHOOL", point, school.getName());}return "成功";}

查询附近学校

public void queryMessage() {// 距离Distance distance = new Distance(30, RedisGeoCommands.DistanceUnit.KILOMETERS);// 参数RedisGeoCommands.GeoRadiusCommandArgs args = RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs().includeDistance() // 包含距离.includeCoordinates() // 包含坐标.sortDescending(); // 降序// 开始查找GeoResults<RedisGeoCommands.GeoLocation<String>> results = this.stringRedisTemplate.opsForGeo().radius("GEO:SCHOOL", "SXU", distance, args);List<GeoResult<RedisGeoCommands.GeoLocation<String>>> content = results.getContent();// 输出结果for (GeoResult<RedisGeoCommands.GeoLocation<String>> geoLocationGeoResult : content) {System.out.println("距离山西大学30公里之内大学的名称:" + geoLocationGeoResult.getContent().getName());System.out.println("距离山西大学30公里之内大学的坐标:" + geoLocationGeoResult.getContent().getPoint());System.out.println("距离山西大学30公里之内大学的距离:" + geoLocationGeoResult.getDistance());}}

删除位置信息

    public boolean remove(String name) {LambdaQueryWrapper<School> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(School::getName, name);boolean subtract = this.remove(lambdaQueryWrapper);if(!subtract) {return false;}Long remove = this.stringRedisTemplate.opsForGeo().remove("GEO:SCHOOL", name);return remove != null && remove == 1;}

http://www.yayakq.cn/news/481579/

相关文章:

  • 大航母网站建设在哪里网站打不开被拦截怎么办
  • 一起买买买网站建设公司集团网站建设
  • 南通网站建设企业网站百度收录要多久
  • 帮人做项目的网站江西省赣州市中考分数线2022
  • 西双版纳 网站建设太原工程建设招投标信息网站
  • .cc后缀网站平面设计如何在家接单
  • 河北省城乡和建设厅网站建筑工程培训
  • 建设商务网站ppt做网站所需知识
  • 兴华建设集团有限公司网站美图秀秀网页版
  • 记录开发wordpress主题郴州网站优化公司
  • 淘宝客搜索网站怎么做网站如何做后台
  • 专做美容师招聘网站宁波专业网站搭建地址
  • 个人购物网站搭建深圳市网站建设做网站
  • 教学资源网站建设方案360网站推广官网怎么优化
  • 怎么建设视频网站如何查看网站的空间商
  • 购物网站排行榜前十名四大工业设计软件
  • 网站建设要学哪些软件有哪些内容wordpress 商业插件
  • 怎么用网站推广wordpress 新建表单
  • 做网站赚钱容易吗asp建站程序
  • 哪个网站可以免费建站自己主机做多个网站
  • 做编程的 网站qq企业邮箱登录入口
  • 珠海网站建设找哪家沈阳网站改版
  • 建设网站二级建造师如何解聘视频网站logo怎么做的
  • 怎样申请网站域名和空间电子商务网站开发实训
  • 农产品的网站建设方案书范文三亚住房和城乡建设厅网站
  • 做网站需要什么手续资料网站架构设计师面试技巧
  • 商丘网站建设专业现状网站外链建设设计
  • 网站配色表网站模板在线制作
  • 简洁企业网站源码贵州网站制作公司电话
  • 朝阳市网站公司商城网站建设预算