-1

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

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

4

3 回答 3

1

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

一个纬度或经度大约是 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

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

于 2012-08-10T15:26:34.150 回答
1

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

于 2015-05-01T18:13:37.407 回答
1

我对 lat 和 lon 都使用 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

于 2012-08-11T07:22:26.853 回答