如果当前界限位于其他(许多)范围内?

时间:2013-11-29 12:29:00

标签: javascript google-maps

我正在使用谷歌地图v3。 我想知道 IF当前地图边界位于所有先前边界的总和中(当前边界的所有点都被其他边界覆盖)(如果不是,我将通过ajax加载当前边界的标记)< / p>

比方说,我有一个以前的视口范围数组,我这样做:

google.maps.event.addListener(map, 'idle',function() {
   var bounds = map.getBounds();
   boundsArray.push(bounds);
});

检查我现在发明的算法是一个很难的算法,它是如下:

1)使用一些 $ step (0.0001?)生成当前边界的所有边缘点(lan / lon)并将它们放入“pointsArray”。

2)迭代pointsArray,并检查当前点是否存在于至少一个先前的边界中:

  

来自LatLngBounds doc:contains(latLng:LatLng)boolean如果给定,则返回true   lat / lng就在这个范围内。

所以,比如:

if (boundsArray[y].contains(pointsArray[i]) {

如果包含,则从pointsArray中删除该点

3)最后,在所有迭代之后,如果pointsArray为空 - 这意味着当前边界的所有点都在另一个/ s范围内,并且函数返回true ...

我认为我的算法有两个缺点: 1)它不是100%精确(取决于$ step) 2)更糟糕的是,它导致客户端性能下降,所有边界都检查了这么多点...因为javascipt是​​在用户PC上实现的。

所以,如果更精确&amp;为我的问题轻松,快速的解决方案?也许使用另一种数学方法,谷歌几何库和等等?怎么做到这一点?

1 个答案:

答案 0 :(得分:0)

当它变得太大时,您可以删除bounds数组。然后你可以重新开始。比较边界要容易得多。

相关问题