Lat / Lng存储到mysql表中


Lat / Lng store into mysql table

我应该使用什么类型的数据存储LatLng从谷歌地图到我的数据库中?我不确定我应该在 mysql 中为长度输入多少位小数。

那么我应该使用DecimalFloat等吗?我应该为Length放多少钱?同时,在 Mysql 中放置 LatLng 的索引好吗?

我对纬度和纬度都使用 decimal(10,6),这为您提供了优于 1 米的分辨率。(请记住考虑减号)。


编辑:

引用MySQL手册中关于十进制类型上的减号:

标准 SQL 要求 DECIMAL(5,2) 能够存储任何值 五位数字和两位小数,因此可以存储在 工资列范围从 -999.99 到 999.99。MySQL 强制执行此限制 从MySQL 5.0.3开始。在 5.0.3 之前,在范围的正端, 列实际上可以存储高达 9999.99 的数字。(对于正面 数字,MySQL 5.0.2 及更早版本使用为符号保留的字节 以扩展范围的上限。

源:

http://dev.mysql.com/doc/refman/5.0/en/fixed-point-types.html

这取决于您将如何处理这些信息,以及您需要值的精度。

纬度或经度大约为 69 英里。(纬度的实际距离略有不同,离赤道越远,经度的距离越小。

DECIMAL(9,6) allows for a resolution of about  4 inches
DECIMAL(8,5) allows for a resolution of about 3 1/2 feet
DECIMAL(7,4) allows for a resolution of about 36 feet

(对于纬度,您只需要小数点前两位,而不是经度所需的三位。

如果您正在为 Google 地图执行此操作并绘制折线(可能是几千个点),您可以将这些点存储在数组中,序列化数组,并将其存储在 BLOB 或 TEXT 字段中。我没有对此进行任何计时试验,但我怀疑它比转换为 DEC 更快。 或者,如果您要将其传递给 JavaScript,则可以使用 JSON_ENCODE 将其存储为 JSON 字符串,并在每次使用该绘图时保存该转换。