第一点经纬度:lng1 lat1 第二点经纬度:lng2 lat2 round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)*这里数据库中字段map表示坐标值是(经度,纬度),pow(sin( (lng1*pi()/180-lng2*pi()/180)/2),2)))*1000)
demo:
$title = $_POST['title'];
$A = array();
$jingdu = $_POST['lon'];$weidu = $_POST['lat'];
$result = $db->query("select M.itemid, M.username, M.thumb, M.title,M.price, M.company, C.map, ROUND( 6378.138 *2 * asin( sqrt( pow( sin( (
SUBSTRING_INDEX( map, ',', -1 ) * pi( ) /180 - ".$weidu." * pi( ) /180 ) /2 ) , 2 ) + cos( SUBSTRING_INDEX( map, ',', -1 ) * pi( ) /180 ) * cos( ".$weidu." * pi( ) /180 ) * pow( sin( (
SUBSTRING_INDEX( map, ',', 1 ) * pi( ) /180 - ".$jingdu." * pi( ) /180 ) /2 ) , 2 ) )
) *1000
) AS distance
FROM `jiu_mall` AS M
LEFT JOIN `jiu_company` AS C ON C.username = M.username
WHERE M.title LIKE '%".$title."%'
ORDER BY distance ASC
LIMIT 0 , 30
");
SUBSTRING_INDEX( map, ',', 1 )调用经度,-1调用纬度while($r = $db->fetch_array($result)) {