我在PostgreSQL数据库中存储兴趣点(POI),并通过PHP脚本将它们检索到Android应用程序。为了减少互联网使用量,我希望我的移动应用程序知道当前显示区域附近是否有任何点。获取包含在框中的大部分左侧|右侧|顶部|底部点
我的想法是存储包含已经检索到的所有点的矩形边界(换言之:已经检索到的最西部的最左边的西部的最近点,已经检索到的最北部的最近的北部的点) ),当屏幕的任何边缘超出这个边界时,我会进行下一个查询。
目前我可以检索这是在“单屏”点(以当前显示的地图覆盖的区域)使用:
SELECT * FROM ch WHERE loc <@ (box '((".-$latSpan.", ".$lonSpan."),(".$latSpan.", ".-$lonSpan."))' + point '".$loc."')
现在我需要在每个方向上知道四个最偏远点,比我将能够检索到下四个“更远程”点。
是否有可能直接从PostgreSQL获得这些点(或框)(也许使用一些“聚合点到框”功能)?
您确定框中的值的顺序吗?它看起来像在X(水平)坐标中存储纬度极值(N/S),在Y(垂直)中存储经度。我希望这个盒子是'box((--longSpan,latSpan),(longSpan,-latSpan))'。 – outis 2010-04-03 00:45:11