查询酒店storelocator无法正常工作的距离计算

时间:2016-03-31 13:36:26

标签: php mysql codeigniter-3

这是我在模型中的查询

 $array = array('dealercity' => $citycheck, 'lat' => $lat, 'lng' => $lng, 'sometype' => $sometypeid, 'type' => $typeid);
     $this->db->select("*, (
  3959 * acos (
  cos ( radians($lat) )
  * cos( radians( lat ) )
  * cos( radians( lng ) - radians($lng) )
  + sin ( radians($lat) )
  * sin( radians( lat ) )
)) AS distance");   

     $this->db->from('tbl_dealer_list');
     $this->db->where($array);
     $this->db->having('distance < 25');                     
     $this->db->order_by('distance');   
     $this->db->limit(25, 0);
     $query = $this->db->get();

问题是查询未显示任何错误。当我搜索特定位置时,显示相同的确切位置。附近20英里的地方不起作用。我正在使用Codeigniter和Mysql。 任何人都知道答案请指出错误。

当我运行查询时,显示的距离显示的是一些值,如0.00005899369716644287。并且我检查的距离超过此值仍未显示附近的位置,并且当数据库中存在多个位置时显示位置。

1 个答案:

答案 0 :(得分:0)

    $return =array();

       $query= $this->db->query("select *, ( 3959 * acos( cos( radians($lat) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians($lng) ) + sin( radians($lat) ) * sin( radians( lat ) ) ) ) AS distance FROM tbl_dealer_list WHERE dealertype =  '".$dealerid."'AND vehicletype =  '".$vehicleid."' HAVING distance < 20 ORDER BY distance");

      if ($query->num_rows() > 0)
        {
        return $query->result();//$query->result_array()

         }