首页 > 其他分享 >根据经纬度查询附近几公里的门店内的门店

根据经纬度查询附近几公里的门店内的门店

时间:2024-05-16 17:42:27浏览次数:15  
标签:name 经纬度 几公里 门店 field 180 lat pi distanceSql

直接贴代码


// 数据库字段名 - 纬度
$field_lat = 'latitude';
// 数据库字段名 - 经度
$field_lng = 'longitude';
$distanceSql = "(6378.138 * 2 * asin(sqrt(pow(sin(({$field_lat} * pi() / 180 - {$lat} * pi() / 180) / 2),2) + cos({$field_lat} * pi() / 180) * cos({$lat} * pi() / 180) * pow(sin(({$field_lng} * pi() / 180 - {$lng} * pi() / 180) / 2),2))) * 1000)";
$shop_store = Db::name('store')->where($where)
  ->field("id,name,province_name,city_name,area_name,address,status, {$distanceSql} as distance")
  ->where(Db::raw($distanceSql . "<=" . $store_juli))  //获取多少范围之内
  // 按距离升序排列(由近到远
  ->order("distance {$order}")
  ->paginate(10);

代码片段解析

获取多少范围之内需要用原生的 ->where(Db::raw($distanceSql . "<=" . ($distance*1000)))

不能用 ->where($distanceSql, "<=" . ($distance*1000)), 因为长表达式后面的条件不识别

$distance就是查询的多少KM

标签:name,经纬度,几公里,门店,field,180,lat,pi,distanceSql
From: https://www.cnblogs.com/lusanqian/p/18196384

相关文章

  • 微信小程序获取手机定位+经纬度转详细地址
    在微信小程序中获取手机定位信息wx.getLocation({type:'wgs84',success(res){//console.log(res)constlatitude=res.latitudeconstlongitude=res.longitudeif(flag)......
  • ConvertLatOrLonFilter-经纬度格式转换-保留6位
    ConvertLatOrLonFilter-经纬度格式转换-保留6位/***转换经纬度*小数点最后最多为6位*@paramlatOrLon*@return*/privateStringconvertLatOrLon(StringlatOrLon){if(org.apache.commons.lang.StringUtils.isNotBlank(latOrLo......
  • java实现 给定一个地址经纬度,一组地址经纬度,找出在范围内的地址,和最接近的地址(单位:米)
    packagecom.example.demo10;importjava.util.ArrayList;importjava.util.List;/***java实现给定一个地址经纬度,一组地址经纬度,找出在范围内的地址,和最接近的地址**@authorlonglinji*@date2024/4/15*/publicclassGeoUtils{//地球半径,单位为公里......
  • java实现 给定一个地址经纬度,一组地址经纬度,找出在范围内的地址,和最接近的地址
    packagecom.example.demo10;importjava.util.ArrayList;importjava.util.List;/***java实现给定一个地址经纬度,一组地址经纬度,找出在范围内的地址,和最接近的地址**@authorlonglinji*@date2024/4/15*/publicclassGeoUtils{//地球半径,单位为公里......
  • 根据经纬度判断直线距离
    /***根据门店距离排序*@param$data*@paramstring$longitude经度*@paramstring$latitude纬度*@returnarray*/publicfunctionsortByDistance($longitude,$latitude){//根据距离排序$list=Db::table('benben_store_shop')->where('status',1)-......
  • JAVA计算两经纬度间的距离
    一:反余弦计算方式1.1:工具类无需依赖外部jar,可直接计算距离。DistanceUtil.javapackagecom.utils;importjava.math.BigDecimal;publicclassDistanceUtil{//平均半径,单位:m;不是赤道半径。赤道为6378左右privatestaticfinaldoubleEARTH_RADIUS=6371000;......
  • 剧本杀小程序开发,门店的新神器!
    在数字化浪潮的推动下,线下娱乐形式逐渐与互联网技术融合,其中“剧本杀”作为一种新兴的角色扮演游戏,正吸引着众多年轻人的目光。随着市场需求的不断扩大,不少创业者开始思考如何将这一线下活动通过线上平台进行拓展,而小程序因其便利性和易传播的特点,成为门店数字化转型的首选......
  • 生鲜配送供应链系统_升鲜宝_杭州生鲜配送系统之升鲜宝_门店简易进销存设计说明_门店订
    生鲜配送供应链系统_杭州生鲜配送系统之升鲜宝_门店简易进销存设计说明_门店订货端(一)    作为长期一线开发供应链管理系统的开发人员,经过与最终客户的沟通与交流。客户的客户(食堂、酒店、烧烤连锁门店等客户)有一些简单的进销存的需要,但客户的这类客户,又不愿意单独购买一套......
  • 五星门店小程序性能优化实践
    一、背景介绍1.1业务介绍五星门店小程序主要服务于五星线下门店交易场景,目前已有79个城市267家门店(包括超级体验店、城旗店、京东Mall等)在使用,用户可以通过小程序便捷地查看和购买门店的商品。五星门店小程序已实现基于Taro跨端解决方案的一码多端能力,一套代码可以在京东App以......
  • 输入起始点经纬度,导出中间N个点的经纬度
    一、方法输入起始点经纬度怎么导出中间N个点的经纬度?有多个方法:1、使用GoogleMapsAPI或者百度API这里以GoogleMapsAPI为例,具体步骤如下:①登陆GoogleMapsAPI,获取APIkey;②使用APIkey,调用GoogleMapsAPI的“DirectionsAPI”,输入起点和终点的经纬度,获取两点之间......