学说2中纬度和经度的数据类型

问题描述 投票:0回答:3

我需要在 Google 地图中显示位置。

我正在使用 Symfony2、doctrine 和 MySQL。

需要帮助了解 yml/doctrine 中的正确类型是什么。

提前致谢。

google-maps symfony doctrine-orm
3个回答
3
投票

来自教义文档:

十进制 以定点精度映射和转换数值数据。如果您需要带分数的数字的精确精度,您应该考虑使用这种类型。

因此,我在 Doctrine 中使用十进制表示纬度和经度。我可以确认精度为 20、小数位数为 16 的十进制可以工作。

/**
 * @var string
 *
 * @ORM\Column(name="latitude", type="decimal", precision=20, scale=16)
 */
private $latitude;

/**
 * @var string
 *
 * @ORM\Column(name="longitude", type="decimal", precision=20, scale=16)
 */
private $longitude;

0
投票

这个学说空间扩展可以帮助存储点(以及许多其他空间对象)内的位置。

use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Table;
use LongitudeOne\Spatial\PHP\Types\Geometry\Point;

#[Table]
#[Entity]
class PointEntity
{
    #[Column(type: 'point', nullable: true)]
    protected Point $point;
}

-2
投票

我将使用“对象”数据类型并保存一个自己类型的对象,其中包含位置信息。

您可以创建一个名为“Location”的对象,该对象实现一个强制其具有纬度和经度的接口,然后使用:

$location = new \Location();
$location->setLatitude($lat);
$location->setLongitude($long);

$entity->setLocation($location);

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.