正在开发MAP应用。它可以节省数千个纬度和数量。绘制叠加的经度细节。 当用户触摸叠加层时,它想从SQL中保存的记录中获取最近的纬度和经度。
我用:
SELECT *
FROM track_points
WHERE segmentId = '22'
ORDER BY (ABS(latitude - 25.312005) + ABS(longitude - 91.730433))
它完全相同,但问题是特定叠加层有几千个lat和longi细节。 完成上述查询需要很长时间。
它运行时认为整个DB数据得到一个点,即使提取最近的数据也是如此。
只要当给出28.2525时我需要25.2520附近的东西或者它是什么,然后停下来。我不想从22.23252或第10行开始,在第5000行达到25.2520,然后直到最后一行。
答案 0 :(得分:1)
首先,继续调查Spatialite是否符合您的需求。
但是,您需要减少查询正在考虑的点数:
SELECT *
FROM track_points
WHERE segmentId = '22'
ORDER BY (ABS(latitude - 25.312005) + ABS(longitude - 91.730433))
WHERE latitude BETWEEN 25.31 AND 25.32
AND
longitude BETWEEN 91.73 AND 91.74
您希望将边界设置为尽可能窄但宽度足以确保至少获得一个结果。如果你的纬度和经度是一个规则的格子,那么这是微不足道的。
您可以使用BETWEEN @value - @tolerance AND @value + @tolerance
来动态定义值。