gpt4 book ai didi

php - 从 Doctrine 地理记录中的给定坐标获取距离

转载 作者:行者123 更新时间:2023-12-03 22:45:30 24 4
gpt4 key购买 nike

我正在开发一个 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();

在这里找到这个: http://groups.google.com/group/doctrine-user/browse_thread/thread/5f4042649c9fa275

我想一个更“symfony”的方法是编辑模型,这样就有一个函数,比如:

$distance = $locationModel->DistanceFrom($anotherLocation);
$locations = LocationModel::GetLocationsClosestTo($lat, $long);

对于我的应用程序,我将纬度/经度存储为小数,如下所示:

latitude: {type: decimal(4), scale: 4}
longitude: {type: decimal(4), scale: 4}

因为 google maps api 返回最多 4 位小数的经/纬度

关于php - 从 Doctrine 地理记录中的给定坐标获取距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2268074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com