当我将经度和纬度保存到数据库中时,它将存储为数据类型Decimal。 经度保存为34,纬度保存为118 这将与hasrsine公式一起使用。我正在尝试在距离用户当前位置20英里的范围内找到位置。
答案 0 :(得分:1)
不,这肯定行不通。
一度纬度大约为70英里。这比你想要的精度要大得多。
如果你想计算20英里分辨率的距离,你的纬度和经度至少需要一个小数位 - 0.1°纬度是7英里,0.1°经度和大约相同10英里(√2x7 = 9.8)。当然,使用源数据中提供的精度会更好。
这里可能出现的问题是您在没有指定宽度的情况下使用DECIMAL
类型作为纬度和经度。在MySQL中,默认为DECIMAL(10,0)
- 十位数,所有这些都在小数位之前(例如,1234567890.
)。你可能想要的更像是DECIMAL(10,6)
,它允许列存储一个十位数字,其中六位数字位于小数点后面(例如1234.123456
)。 Six decimal places of latitude/longitude gives you a resolution of about 4 inches,所以存储的内容没有意义。