如何从Symfony2和Doctrine2中的某个点保存和检索纬度和经度

时间:2014-06-10 15:07:49

标签: php symfony doctrine-orm geolocation doctrine

我有一个Symfony2 / Doctrine应用程序,需要存储和检索纬度/经度值。

我发现有很多处理地理定位的捆绑包,但似乎大多数人的需求与我自己不同,我似乎无法解决这个简单的问题......

目前我需要做的就是将实体的纬度和经度属性保存到Point列,加载实体时,从该点加载纬度和经度。

我跟着http://codeutopia.net/blog/2011/02/19/using-spatial-data-in-doctrine-2/,我有一个"位置"我的实体上映射到Point列的属性。这很棒。但我不太清楚如何从lat / long设置该点,或者如何从该点检索lat / long,而无需在我需要加载/保存实体时执行自定义DQL。

在非symfony / doctrine应用程序中,我会执行类似:"SELECT *, X(location) as latitude, Y(location) as longitude FROM...来加载纬度和经度,但是使用SF2和doctrine,我似乎无法弄清楚我需要做什么。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

考虑到您的实体有一个"点"你链接的类型,操纵你的坐标就像在这三个例子中一样简单:

/* Returns the latitude of your existing entity */
$entity->getPoint()->getLatitude();

/* Creates a new point of coordinates (42,42) and sets it as your entity's coordinates */
$point = new Point(42, 42);
$entity->setPoint($point);

/* Adds 1 to your existing entity's latitude */
$tmp = $entity->getPoint();
$tmp->setLatitude($tmp->getLatitude() + 1);
$entity->setPoint($tmp);