我需要在codeigniter中执行一项新任务,我的餐馆详细信息包含城市,州,国家和邮政编码,现在如果用户输入城市或邮政编码,他可以选择km (公里)。我需要在公里范围内显示可用的数据库。为此,我能做的是我需要使用的任何脚本或任何api需要使用。有可能吗?
任何人都知道这是否可以实现?因为我迫切需要一些帮助。提前谢谢!
答案 0 :(得分:2)
您首先需要存储所有餐馆的经度和纬度,然后您可以轻松地在您的模型中轻松到达这样的餐馆:
function getNear($lat =false,$lng=false,$distance = false /*km range*/){
$multiplier = 112.12; // use 69.0467669 if you want miles
$query = $this->db->query("SELECT *, (SQRT(POW((restaurants.lat - $lat), 2) + POW((restaurants.long - $lng), 2)) * $multiplier) AS distance FROM restaurants WHERE POW((restaurants.lat - $lat), 2) + POW((restaurants.long - $lng), 2) <= POW(($distance / $multiplier), 2) ORDER BY distance ASC ;");
return $query->result();
}
然后调用它
$this->model->getNear($lat,$long,$distance_in_kilometers);
此查询在名为“restaurants”的表上运行,该表具有包含位置坐标
的“lat”和“long”字段