查询指定距离内的快递柜或者店铺

摘要:
背景:当我们在淘宝购物时,我们会选择一个地址,有时会提示我们把它放在附近的快递柜里。这是如何工作的?Redisgeoapi可以用来简单地实现这个功能:1.首先,我们将所有快递柜保存在Redis中。这些快递柜的信息应包括经度和纬度/****param经度*@param纬度维度*@paramcontent地址信息*/publicvoidadd(双经度

背景:我们在淘宝购物时,选择了某个地址,有时会提示可以选择放到附近的快递柜子,这种是如何实现的呢?用redis geo api可以简单的实现该功能

思路:1. 我们先将所有的快递柜子存到redis中,这些快递柜信息要包含经纬度

           

/**
     * 
     * @param longitude 经度
     * @param latitude 维度 
     * @param content 地址信息
     */

    public void add(double longitude,double latitude,String content){
        GeoOperations<String, String> geoOperations = redisTemplate.opsForGeo();
        geoOperations.add(key, new Point(longitude, latitude), content);
    }

           2.根据用户的收货地址获取对应的经纬度

    //这个可以根据百度api获取,这里省略了

         3.通过redis查询用户收货地址经纬度为圆点,指定距离作为半径的圆内的快递柜子

         

/**
     * 
     *  查询指定经纬度范围xxKm内的信息
     * @param longitude 经度
     * @param latitude 维度
     * @param distant 距离 单位km
     * @param limit  返回多少条数据
     * @return
     */

    public String getGeoradius(double longitude,double latitude,double distant,int limit){
        GeoOperations<String, String> geoOperations = redisTemplate.opsForGeo();
        Circle circle = new Circle(new Point(longitude,latitude), new Distance(distant, Metrics.KILOMETERS));
        RedisGeoCommands.GeoRadiusCommandArgs commandArgs = RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs().includeDistance().sortAscending().limit(limit);
        GeoResults<RedisGeoCommands.GeoLocation<String>> radius = geoOperations.radius(key, circle,commandArgs);
        for (GeoResult<RedisGeoCommands.GeoLocation<String>> geoResult : radius) {
            RedisGeoCommands.GeoLocation<String> geoResultContent = geoResult.getContent();
            String name = geoResultContent.getName();
            return name;
        }
        return null;
    }

 附加信息:

public class RedisGeoSerivce {
    @Autowired
    private RedisTemplate<String,String> redisTemplate;
    private  final String key="location:box";
//省略。。。。。
}

免责声明:文章转载自《查询指定距离内的快递柜或者店铺》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇winform 获取当前程序所在目录。ORACLE中常见的几种锁下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android中处理崩溃闪退错误

Android中处理崩溃闪退异常 大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天就来介绍一下如何在程序...

DataSanp App与Rest, WebBroker App的区别

DataSanp App与Rest, WebBroker App的区别  datasnap server :选择这一项,我们得到的将是一个独立EXE的三层服务器应用程序(TCP及HTTP两种模式)          Tokyo 10.2.2,加上HTTPS,共3中通讯协议。     ServerContainerUnit1、 TServerContaine...

Java中如何获取spring中配置文件.properties中属性值

通过spring配置properties文件 1 2 3 4 5 6 7 8 9 <bean id="propertyConfigurer" class="com.hapishop.util.ProjectDBinfoConfigurer"> <property name="ignoreResourceNotFound"value...

EasyPoi 导入导出Excel时使用GroupName的踩坑解决过程

一、开发功能介绍: 简单的一个excel导入功能 二、Excel导入模板(大致模板没写全): 姓名 性别 生日 客户分类 联系人姓名 联系人部门  备注 材料 综合 采购 张三 男 1994/05/25 1 1 1 张三 开发部   李四 男 1994/05/25 1 1 1 张三 开发部   王五 男 1994/05/25 1 1 1...

MUD教程--巫师入门教程3

1. 指令格式为:edit <档名>,只加文件名,默认为当前目录,加here,表示编辑你当前所处的房间, 回车后即进入线上编辑系统。2. 如果这是一个已经有的档案,你可以使用 z 或 Z 来看档案。z表示一次显示20行,Z表示一次显示40行。为了编辑方便,最好在开始时用 n 表示每一行在开头处显示它的行数,再用一次 n 取消行数显示;3. 还有...

postman 发送post请求,参数为json

mvc 控制器接收post请求,参数为json PostMan设置 Headers设置key和Value值 key:Content-Type,Value:application/json。 参数设置: 选中Body并进行参数设置,选择raw,格式为json。就酱 控制器代码: //post 请求测试 [HttpPost] //请求方法,...