SELECT * , (POWER(MOD(ABS(substring_index(`loglat`, ',' ,1 ) - '112.991664'),360),2) + POWER(ABS(substring_index( `loglat` , ',' ,-1 ) - '28.208148'),2)) AS distance FROM `clo_business_consumer` where loglat is not null ORDER BY distance limit 10
subindex 就截取字符 串,因为 这里经纬度放一个字段 了,用‘,’隔开的
显示 距离代码 .
<?php
define('EARTH_RADIUS', 6378.137) ;
function rad($d = null){
return $d * pi() / 180.0;
}
function GetDistance($lat1,$lng1,$lat2,$lng2){
$radLat1 = rad($lat1);
$radLat2 = rad($lat2);
$a = $radLat1 - $radLat2;
$b = rad($lng1) - rad($lng2);
$s = 2 * asin(sqrt(pow(sin($a/2),2) +cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)));
$s = $s * EARTH_RADIUS;
$s = round($s * 10000) / 10000;
return $s;
}
$lng = 112.911664;
$lat = 28.208148;
$lng2 = 112.991664;
$lat2 = 28.228148;
$res = GetDistance($lat,$lng,$lat2,$lng2);
var_dump($res);