我需要在 Google 地图中显示位置。
我正在使用 Symfony2、doctrine 和 MySQL。
需要帮助了解 yml/doctrine 中的正确类型是什么。
提前致谢。
来自教义文档:
十进制 以定点精度映射和转换数值数据。如果您需要带分数的数字的精确精度,您应该考虑使用这种类型。
因此,我在 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;
这个学说空间扩展可以帮助存储点(以及许多其他空间对象)内的位置。
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;
}
我将使用“对象”数据类型并保存一个自己类型的对象,其中包含位置信息。
您可以创建一个名为“Location”的对象,该对象实现一个强制其具有纬度和经度的接口,然后使用:
$location = new \Location();
$location->setLatitude($lat);
$location->setLongitude($long);
$entity->setLocation($location);
祝你好运!