如何近似计算默认情况下约60英里(yii)

如何近似计算默认情况下约60英里(yii),yii,Yii,默认情况下,如何使用lat和lng计算大约60英里 在yii $criteria->with = array('merchant'); $criteria->select = '*, ( 3959 * acos( cos( radians(' . $latitude . ') ) * cos( radians( merchant.lat ) ) * cos( radians( merchant.lng ) - radians

默认情况下,如何使用lat和lng计算大约60英里

在yii

$criteria->with = array('merchant');
    $criteria->select = '*, ( 3959 * acos( cos( radians(' . $latitude . ') ) 
            * cos( radians( merchant.lat ) ) * cos( radians( merchant.lng ) - 
            radians(' . $longitude . ') ) + sin( radians(' . $latitude . ') ) 
            * sin( radians(  merchant.lat ) ) ) ) * 1.609344 AS distance'; 
    $criteria->having=("distance < 4");    
$criteria->with=array('merchant');
$criteria->select='*,(3959*acos(弧度('.$latitude'))
*cos(弧度(merchant.lat))*cos(弧度(merchant.lng)-
弧度(“.$经度”)+sin(弧度(“.$纬度”))
*sin(弧度(merchant.lat))*1.609344表示距离';
$criteria->have=(“距离<4”);

它不能正常工作。

MSQL语句将找到距离37,-122坐标25英里半径内最近的20个位置

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
选择id,(3959*acos(cos(弧度(37))*cos(弧度(lat))*cos(弧度(lng)-弧度(-122))+sin(弧度(37))*sin(弧度(lat)))作为与距离限制为0,20的距离小于25阶的标记的距离;
参考:

请添加您的代码可能与的重复