Man*_*uel 2 php doctrine symfony1
我正在开发一个Symfony 1.4项目,其中一个表格具有地理模板.当前函数可以给出两个记录之间的距离,但不能给出记录和给定坐标之间的距离.
如何以Symfony的方式实现这样的功能?
更具体:我需要按照给定纬度和经度坐标的下降距离排序的记录
谢谢大家!
$radius = 200;
$lat = mysql_real_escape_string($zipcode1->getLatitude());
$long = mysql_real_escape_string($zipcode1->getLongitude());
$q = Doctrine_Query::create()
->select("j.address, j.longitude, j.latitude, (3959 * acos(cos
(radians('".$lat."')) * cos(radians(latitude)) * cos(radians
(longitude) - radians('".$long."')) + sin(radians('".$lat."')) * sin
(radians(latitude)))) AS distance")
->from("Job j")
->having("distance < ?", $radius)
->orderBy("distance desc");
$results = $q->execute();
Run Code Online (Sandbox Code Playgroud)
在此处找到:http: //groups.google.com/group/doctrine-user/browse_thread/thread/5f4042649c9fa275
我想更加"symfony"的方法是编辑模型,这样就有了以下功能:
$distance = $locationModel->DistanceFrom($anotherLocation);
$locations = LocationModel::GetLocationsClosestTo($lat, $long);
Run Code Online (Sandbox Code Playgroud)
对于我的应用程序,我将lat/long存储为小数,如下所示:
latitude: {type: decimal(4), scale: 4}
longitude: {type: decimal(4), scale: 4}
Run Code Online (Sandbox Code Playgroud)
因为google maps api返回最多4个小数位的lats/longs
| 归档时间: |
|
| 查看次数: |
3653 次 |
| 最近记录: |