我有一个覆盖的地图,我想缓存 –
在用户在地图上访问的每个地方(这是一个矩形区域) – 我检查是否有一个位于此矩形中的叠加层的缓存.
在用户在地图上访问的每个地方(这是一个矩形区域) – 我检查是否有一个位于此矩形中的叠加层的缓存.
为了改善缓存(所以如果用户以前在同一个矩形上,除了现在他距离前一个矩形几米) – 我想“圆”坐标.
这样,每次用户处于矩形时 – 我检查这个矩形是否与之前缓存的矩形类似,如果是,我带来缓存的结果.
此外,如果用户缩小并且他的矩形包含在更大的(先前缓存的)矩形中 – 那么我也可以使用缓存的矩形.
有什么建议 ?
解决方法
如果您只是在查看如何对坐标进行分组,请确定x和y坐标或纬度和经度之间的最大差异.然后有两种方法可以对它们进行分组.第一个更容易,但如果你有很多分数,它会很慢.
假设我们有一个名为cachedPoints的数据结构,称为maxdistance的相关点之间的最大距离以及我们试图检查它是否接近另一个被称为点的新点.
for each cachedPoint in cachedPoints { if (point.x - cachedPoint.x < maxdistance) { if (point.y - cachedPoint.y < maxdistance) { cachedPoint.incrementvisits(); } } }
另一种方法是使用按x或纬度排序的数据结构,然后搜索是否存在x或纬度在maxdistance点内的缓存点,然后检查y或longtitude.它会有点快,但它需要某种哈希来实现,并增加了一些你可能不需要的复杂性.
希望这就是你所要求的.