Php 在sql中使用lat和long查找距离
我想用lat和long搜索10 k.m.内的任何地方。我如何设置限制?以下是我的sql查询:Php 在sql中使用lat和long查找距离,php,mysql,codeigniter,Php,Mysql,Codeigniter,我想用lat和long搜索10 k.m.内的任何地方。我如何设置限制?以下是我的sql查询: $this->db->select(", ( 6371 acos( cos( radians(37) ) cos( radians(latitude) ) cos( radians( longtitude )- radians($lng) ) + sin( radians($lat) ) * sin( radians( latitude) ) ) ) AS distance");
$this->db->select(", ( 6371 acos( cos( radians(37) ) cos( radians(latitude) ) cos( radians( longtitude )- radians($lng) ) + sin( radians($lat) ) * sin( radians( latitude) ) ) ) AS distance");
$this->db->from('table_name');
$this->db->order_by('distance');
试试这个:
$this->db->选择(,(6371 acos(cos(弧度(37))cos(弧度(纬度))cos(弧度(经度)-弧度($lng))+sin(弧度($lat))*sin(弧度(纬度))作为距离);
$this->db->from('table_name');
$this->db->having('distance试试这个:
$this->db->query(' SELECT ( 6371 * acos( cos( radians(37) ) cos( radians(latitude) ) cos( radians( longtitude )- radians("'.$lng.'") ) + sin( radians("'.$lat.'") ) * sin( radians( latitude) ) ) ) AS distance
FROM table_name
HAVING distance < 10
ORDER BY distance ASC');
$this->db->query('SELECT(6371*acos(cos(radians(37))cos(radians(latitude))cos(radians(longtude)-radians('$lng')))+sin(radians('$lat'))*sin(radians(latitude)))作为距离
从表\u名称
距离小于10的
按距离排序(ASC');
您有任何错误吗?$this->db->having('distance<10');假设您的select语句是正确的,并且在我的公式<10的地方给出了以公里为单位的距离。您可以使用一个边界矩形(嗯,一个正方形)要快速筛选结果,请参阅准备好的语句,直到我没有得到kms中的结果。你说的没有kms是什么意思?你得到了任何结果或错误吗?我得到了结果,但得到了错误的结果,实际上,通过上面的查询,我得到了一些带有距离字段的记录,而在距离字段中,我得到了类似“2181”的值。以及您的查询获取此字段的结果。表示如果我使用“距离”,您是否使用纬度值或默认纬度值更改了值37?
$this->db->query(' SELECT ( 6371 * acos( cos( radians(37) ) cos( radians(latitude) ) cos( radians( longtitude )- radians("'.$lng.'") ) + sin( radians("'.$lat.'") ) * sin( radians( latitude) ) ) ) AS distance
FROM table_name
HAVING distance < 10
ORDER BY distance ASC');
$sql = 'select *,(((acos(sin(('.$lat.'*pi()/180)) *
sin((loc_LAT_centroid*pi()/180))+cos(('.$lat.'*pi()/180)) *
cos((loc_LAT_centroid*pi()/180)) * cos((('.$lang.'-loc_LONG_centroid)*
pi()/180))))*180/pi())*60*1.1515
) AS distance from table_name order by distance';
$lat = latitude of your current location
$lang = longitude of your current location
loc_LAT_centroid = field name of your table where you store the latitude of the places.
loc_LONG_centroid = field name of your table where you store the longitude of the places.