将Lat / Lng 存储到 MySQL 表中

12 浏览
0 Comments

将Lat / Lng 存储到 MySQL 表中

我应该使用什么类型的数据来存储从Google Map中获取的LatLng到我的数据库中?\n我不确定在mysql中应该为长度设置多少小数位。\n所以我应该使用DecimalFloat等吗?\n而对于Length,我应该设置多少?\n同时,在Mysql中为LatLng设置索引是否好?

0
0 Comments

问题原因:需要将经纬度数据存储到MySQL表中,但是对于Google地图上的多个点进行绘制时,可能会有数千个点需要存储,这就需要考虑存储效率和数据转换的问题。

解决方法:可以将这些点存储在一个数组中,对数组进行序列化,并将其存储在BLOB或TEXT字段中。这种方法可能比将数据转换为DEC格式更快。另外,如果需要将数据传递给JavaScript,可以将其存储为JSON字符串,使用JSON_ENCODE进行转换,这样可以避免每次使用绘制时都进行数据转换的操作。

0
0 Comments

问题的原因是根据需要将纬度和经度存储到MySQL表中时,需要确定存储的精度。根据给出的信息,纬度和经度的每个度数大约对应着一定的距离,具体数值取决于所处的位置。为了存储更精确的数值,可以使用DECIMAL数据类型,并根据需要设置合适的精度。

解决方法如下:

1. 根据需求确定所需的精度。根据给出的示例,可以使用DECIMAL(M,N)数据类型来存储纬度和经度的数值。其中,M表示总位数,N表示小数位数。

2. 根据所需的精度设置DECIMAL的精度。根据给出的示例,可以根据需要设置合适的M和N值。例如,DECIMAL(9,6)可以存储精度为约4英寸的数值,DECIMAL(8,5)可以存储精度为约3.5英尺的数值,DECIMAL(7,4)可以存储精度为约36英尺的数值。

3. 根据经度和纬度的特点,可以对其精度需求进行微调。例如,纬度的小数点前只需要2位数字,而不需要3位数字,因为纬度不涉及赤道以南的负数值。对于纬度,只需要在小数点前指定2位数字即可。

总结起来,将纬度和经度存储到MySQL表中,需要根据需求确定精度,并使用DECIMAL数据类型进行存储。根据位置不同,纬度和经度对应的每个度数所表示的距离有所不同,因此需要根据具体情况设置合适的精度值。

0
0 Comments

问题的原因是在MySQL中,decimal类型的字段的精度要求。

解决方法是根据需要的精度来选择合适的字段类型。

在MySQL中,decimal类型可以指定总的位数和小数位数。例如,decimal(10,6)表示总共10位数字,其中6位是小数位数。根据MySQL手册的说明,decimal(5,2)可以存储任何带有5个数字和2个小数位的值,范围从-999.99到999.99。在MySQL 5.0.3之前的版本中,对于正数,列实际上可以存储高达9999.99的数字,使用了用于符号的字节来扩展范围的上限。

根据上述信息,对于存储经纬度数据,可以选择合适的字段类型来满足精度要求。例如,DECIMAL(10,6)足够存储精度在1米以下的经纬度值。对于经度,DECIMAL(9,6)足够,而对于纬度,DECIMAL(8,6)足够。

需要注意的是,负号不计入精度范围内。因此,在存储经纬度数据时,需要考虑负值的情况。

所以,根据实际需求,选择合适的字段类型来存储经纬度数据是解决此问题的方法。

代码示例:

CREATE TABLE location (
  id INT PRIMARY KEY AUTO_INCREMENT,
  lat DECIMAL(8,6),
  lng DECIMAL(9,6)
);

在上述代码中,创建了一个名为location的表,其中包含id、lat和lng字段,分别用于存储经纬度数据。字段类型分别选择了合适的精度,以满足存储需求。

0