无法在Joomla 3.4+中使用它

时间:2015-03-05 16:33:30

标签: mysql joomla distance joomla3.0

现在花了几个小时,它似乎没有用。一个倾听者点击我的网站,我抓住他们的IP,最终有大致的纬度和经度。我有一张我的广播电台的表,其中有大致的纬度和经度。我只是想看看新的Listener是否在我的一个工作站25英里范围内,所以我可以给他们那个饲料。如果没有,我会给他们我的全球流。

当我使用下面的查询时,

//Connect to database
// CONNECT TO JOOMLA DATABASE
$db = JFactory::getDbo();

// Create a new query object.
$query = $db->getQuery(true);

$query
    ->select($db->quoteName(array('cityName', 'countryCode', 'latitude', 'longitude')))
    ->select($db->quote('( 3959 * acos( cos( radians('.$latitude.') ) * cos( radians( latitude ) ) 
    * cos( radians( longitude ) - radians('.$longitude.') ) + sin( radians('.$latitude.') )
    * sin( radians( latitude ) ) ) )', 'distance'))
    ->from($db->quoteName('#__areas'))
    ->having($db->quote('distance') . ' < ' . $miles)
    ->order($db->quote('distance') . ' DESC')
    ->setLimit('1');

// Reset the query using our newly populated query object.
$db->setQuery($query);

// Load the results as a list of stdClass objects (see later for more options on retrieving data).
$row = $db->loadObject();

echo $distance = distance($latitude,$longitude,$row->latitude,$row->longitude,"M");
echo '<br />';
print_r($row);
    exit;

输出结果为:

stdClass对象([cityName] =&gt;劳德代尔堡[countryCode] =&gt;美国[纬度] =&gt; 26.122299 [经度] =&gt; -80.143402 [(3959 * acos(cos(弧度(46.8898))* cos(弧度(纬度))* cos(弧度(经度) - 弧度(-114.031))+ sin(弧度(46.8898))* sin(弧度(纬度))))] =&gt;(3959 * acos(cos(弧度(46.8898))* cos(弧度(纬度))* cos(弧度(经度) - 弧度(-114.031))+ sin(弧度(46.8898))* sin(弧度(纬度)))))

长计算的结果不应该是距离而不是重复计算吗?除了合适的一个,我已经尝试过我能想到的每一个组合。可以真的使用一些帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

尝试:

->select('( 3959 * acos( cos( radians('.$latitude.') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('.$longitude.') ) + sin( radians('.$latitude.') ) * sin( radians( latitude ) ) ) ) as distance'))