$branchInfo=Db::name('Branch')->where('b_id','250')->find();
$map['p.cate_id']=array('eq',5);
$map['b.lng']=array('neq','');
$map['b.lat']=array('neq','');
$map['b.b_id']=array('neq',250);
$branchGoodsList=Db::name('BranchStock')->alias('s')->field("s.s_id,s.s_stock,p.p_name,p.p_code,p.p_size,p.p_color,b.*,(6378.138 * 2 * asin(sqrt(pow(sin((lat * pi() / 180 - ".$branchInfo['lat']." * pi() / 180) / 2),2) + cos(lat * pi() / 180) * cos(".$branchInfo['lat']." * pi() / 180) * pow(sin((lng * pi() / 180 - ".$branchInfo['lng']." * pi() / 180) / 2),2))) * 1000) as distance")->join('think_products p','s.g_id=p.p_id','LEFT')->join('think_branch b','s.b_id=b.b_id','LEFT')->group('s.b_id')->where($map)->order('distance')->select();
foreach($branchGoodsList as $k=>$v){
$branchGoodsList[$k]['distance']=round($v['distance']/1000,2).'Km';
}

利用mysql 计算两点间具体  用百度地图接口计算距离太慢了  还有次数限制 因此改装了sql

tp5 根据经纬度计算门店距离 可排序的更多相关文章

  1. 【微信开发】微信小程序通过经纬度计算两地距离php代码实现

    需求: 要求做个根据用户当前位置获取周围商家地址,并且按照由近到远排序, 方法一: 代码层实现 封装方法: /** * @desc 根据两点间的经纬度计算距离 * @param float $lat ...

  2. IOS根据两个经纬度计算相距距离

    //第一种苹果自带的 CLLocation *orig=[[[CLLocation alloc] initWithLatitude:[mainDelegate.latitude_self double ...

  3. js根据经纬度计算两点距离

    js版-胡老师 google.maps.LatLng.prototype.distanceFrom = function(latlng) {    var lat = [this.lat(), lat ...

  4. .NET资料之-根据两点经纬度计算直线距离

    最近做东西碰到要根据两点经纬度计算之间的直线距离,就网上找了查了下资料.因为这类接触的比较少,就直接找现成的代码了,没怎么研究.代码如下,作为记录. private const double EART ...

  5. Geohash-》通过经纬度计算两地距离的函数

    /**      * 根据起点坐标和终点坐标测距离      * @param  [array]   $from  [起点坐标(经纬度),例如:array(118.012951,36.810024)] ...

  6. iOS-根据两个经纬度计算相距距离

    CLLocation *orig=[[[CLLocation alloc] initWithLatitude:[mainDelegate.latitude_self doubleValue] long ...

  7. mySQL函数根据经纬度计算两点距离

    DROP FUNCTION IF EXISTS func_calcDistance ; CREATE FUNCTION func_calcDistance( origLng ,), -- 目的地经度 ...

  8. mySQL函数根据经纬度计算两点距离 复制代码

    http://www.cnblogs.com/lujiulong/p/6185041.html https://my.oschina.net/u/2273085/blog/505172?p={{pag ...

  9. js 经纬度计算直线距离

    function getRad(d) { var PI = Math.PI; return d * PI / 180.0; } function getDistance(lat1, lng1, lat ...

随机推荐

  1. phpmyadmin不允许一个表创建多个主键的解决办法

    在phpmyadmin中执行建表语句 CREATE TABLE `user3` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(2 ...

  2. [java] java 实现FTP服务器文件的上传和下载

    利用Apache commons-net 实现: package com.xwolf.driver.util; import com.xwolf.driver.exception.RunExcepti ...

  3. 如何判断两个IP地址是不是在同一个网段

     要判断两个IP地址是不是在同一个网段,就将它们的IP地址分别与子网掩码做与运算,得到的结果一网络号,如果网络号相同,就在同一子网,否则,不在同一子网. 例:假定选择了子网掩码255.255.254. ...

  4. 内存泄漏检测工具VLD在VS2010中的使用举例

    Visual LeakDetector(VLD)是一款用于Visual C++的免费的内存泄露检测工具.它的特点有:(1).它是免费开源的,采用LGPL协议:(2).它可以得到内存泄露点的调用堆栈,可 ...

  5. C++ 数据的封装 初始封装

    C++ 数据封装 所有的 C++ 程序都有以下两个基本要素: 程序语句(代码):这是程序中执行动作的部分,它们被称为函数. 程序数据:数据是程序的信息,会受到程序函数的影响. 封装是面向对象编程中的把 ...

  6. pythonNET day05

    孤儿进程 父进程先于子进程退出,此时子进程就会成为孤儿进程. 孤儿进程会被系统指定的进程收养,即系统进程会成为该孤儿进程新的父进程.孤儿进程退出时该父进程会处理退出状态 僵尸进程 子进程先于父进程退出 ...

  7. VueRouter

    使用VueRouter的前提: 1, 必须导入vue-router.js文件    2, 要有VueRouter()实例    3, 要把VueRouter实例挂载到Vue实例中 4, 路由的入口   ...

  8. canvas变换

    canvas变换 方法 save() 保存canvas状态 restore() 回复canvas保存的状态 translate(x, y) 移动canvas位置 rotate(radians) 顺时针 ...

  9. http://bbs.csdn.net/topics/392028373

    博客 学院http://bbs.csdn.net/topics/392028373 下载 GitChat 更多 登录注册   首页 精选版块 论坛牛人 论坛地图 专家问答 我要发贴 论坛帮助     ...

  10. 配置myslq提示 the configuration step starting server is taking longer than expected we apologize for thi

    .卸载重新安装,勾选日志配置选项,自定义日志输出路径