授权获取用户的经纬度并存入数据库(lng 字段、lat 字段)。 1. 原生查询 查询的数据过滤掉指点距离的数据即可,也可使用 where 条件筛选,但 as 的别名不可以作为 条件字段,需要又将计算的语句再写一遍。TP框架为例 2. ThinkPHP5+ 一、准备
二、查询
SELECT *, CONVERT ( 2 * 6378.137 * ASIN( SQRT( POW( SIN( 3.1415926535898 * (" . $_GET['lat'] . " - lat) / 360 ), 2 ) + COS( 3.1415926535898 * " . $_GET['lat'] . " / 180 ) * COS(lat * 3.1415926535898 / 180) * POW( SIN( 3.1415926535898 * (" . $_GET['lng'] . " - lng) / 360 ), 2 ) ) ), DECIMAL (10, 2) ) AS distance FROM `user` WHERE lat > 0 AND lng > 0 ORDER BY distance ASC LIMIT 0, 10
// 获取地图 sql public function getGeoSql($lat,$lng){ $sql = <<<geo CONVERT ( 2 * 6378.137 * ASIN( SQRT( POW( SIN( 3.1415926535898 * (" . $lat . " - lat) / 360 ), 2 ) + COS( 3.1415926535898 * " . $lat . " / 180 ) * COS(lat * 3.1415926535898 / 180) * POW( SIN( 3.1415926535898 * (" . $lng . " - lng) / 360 ), 2 ) ) ), DECIMAL (10, 2) ) geo; return $sql; } // 获取附近 1000m 的人 public function getLists($params){ $params = $this->request()->params(); $lat = $params["lat"] ?? 0; $lng = $params["lng"] ?? 0; if(!$lat || !$lng){ return []; } $geoSql = $this->getGeoSql($params["lat"],$params["lng"]); $rs = User::field("*," . $geoSql . "as distance") ->where("lng&lat",">",0) ->where("$geoSql < 1000") ->page($params["page"] ?? 1 , $params["limit"] ?? 10) ->orderRaw("distance asc") ->select(); return $rs; }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算