Laravel 存储纬度和经度

11

我正在存储纬度和经度,但遇到的问题是在存储时会被四舍五入,这不是我想要的。否则,在地图上使用纬度和经度时,这些字段值就会变得不正确。

这是我在使用的代码:

$table->decimal('lat', 10, 8)->nullable();
$table->decimal('lng', 11, 8)->nullable();

这个数值-40.95560269999999被转换为-40.9556027000,而我只想要-40.9556026999。


你尝试使用 double 了吗? - msbomrel
1
对我来说,我使用了长度为25的string。这对我来说没问题,因为你不需要在它上面进行计算,只需显示它 =)) - Sang Nguyen
1
@SangNguyen 那正是我要做的。 - ONYX
1
你的数据类型没有足够的小数位数。 - Namoshek
在保存到数据库之前,使用一个mutator来修改纬度/经度。 - Elias Soares
显示剩余2条评论
3个回答

14

在您的迁移中使用double而不是小数,请参见下文

$table->double('lat')->nullable();
$table->double('lng')->nullable();

2
您也可以像以下问题中一样指定小数部分和整数部分:$table->double('lng', 11,8)->nullable();``` - Dennis Kiprotich

-1

在您的迁移中使用double而不是小数的最佳方法如下:

$table->decimal('long', 10, 7)->nullable();
$table->decimal('lat', 10, 7)->nullable();

-3

你的字段数据类型可能不是十进制的,确保你的经纬度字段也是十进制的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接