我正在使用Google Maps v3 API。我目前正在请求每次有人更改视口(通过缩放或移动地图)并丢弃我拥有的旧数据时获取新数据。这很好用,但现在我想缓存数据,这样我就不需要在每次视口更改时获取数据。Google Maps API 通过由纬度和经度组成的东北和西南坐标定义视口。它们存储在名为LatLngBounds的对象中。
我想出了两种方法可以做到这一点:
- 存储用户访问的每个新视口的边界,并检查新视口是否在旧视口中,并仅获取新视口中不在旧视口内的部分的新数据。本质上,
- 将每个新视口划分为我们拥有的数据的矩形部分和需要获取的数据。存储每个矩形部分的边界。
如果有人能想到更好的方法来做到这一点,请随时提出新的方法。
我的问题是哪一个在更好的性能/内存使用和整体速度方面会更好?它们都是相似的算法,所以这真的很重要吗?
此外,现在两种算法都依赖于根据旧视口划分新视口。划分新视口的算法是什么样的?(假设我实现了我的第二个算法)
var prevBounds = [ /* Array of previously seen bounds */ ];
var newViewport = map.getBounds(); // New Viewport to divide up
var sw = newViewport.getSouthWest();
var swlat = sw.lat();
var swlng = sw.lng();
var ne = newViewport.getNorthEast();
var nelat = ne.lat();
var nelng = ne.lng();
// newViewport.intersects(bounds)
// Returns true if this bounds shares any points with this bounds.