我应该使用哪种类型的数据将Google地图中的Lat
和Lng
存储到我的数据库中?
我不确定我应该在mysql中放多少小数位。
我应该使用Decimal
,Float
等吗?
我应该为Length
投入多少钱?
同时,将Lat
和Lng
的索引放在Mysql中是否很好?
答案 0 :(得分: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
(对于纬度,你只需要在小数点前两个位置,而不是经度所需的三个位置。)
答案 1 :(得分:1)
我使用十进制(10,6)表示lat和lon,它的分辨率优于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
答案 2 :(得分:1)
如果您正在为Google地图执行此操作并绘制折线(可能有几千个点),则可以将这些点存储在数组中,序列化数组,并将其存储在BLOB或TEXT字段中。我没有对此进行任何时间试验,但我怀疑它比转换到DEC要快。或者,如果您将此传递给JavaScript,则可以使用JSON_ENCODE将其存储为JSON字符串,并在每次使用绘图时保存该转换。