我这样检查: 在此处输入代码 var point = new g.LatLng(parseFloat(lat),parseFloat(lng)); var bounds = map.getBounds(); if(bounds.contains(point)) { 该点位于视口中 }
但是当我改变缩放级别时,在视口坐标之前,“不可见”点未被检测为“可见”,我的意思是在视口中。 点不是标记!
答案 0 :(得分:0)
如果你的视口中有超过地球的整个圆周,那么事情就会出错。
左手边缘可能比右手边缘更靠东边。在这种情况下,map.getBounds()
得到了错误的结果。
左手边缘可能位于右手边缘的西边,但由两者的经度定义的区域可能不包括兴趣点。
这是我为另一个答案开发的image of a map,它证明了这一点。左边缘为83°E,右边缘为162°E。标记位于54°W和8°W,两者都不在map.getBounds()
范围内 - 它们不在83°E和162°E之间 - 即使它们显然在地图上。
我不知道API中允许照顾的任何方法。
答案 1 :(得分:0)
我写了一个可能适用于您的场景的黑客攻击。就我的测试而言,当世界上没有很多东西重演时,它就有效。我知道,如果世界显示两次或更多次,这种黑客攻击是不可靠的。因此,如果你可以设置地图的minZoom,你可以防止这种情况。
想法是将地图分成左右两半,并检查标记是否在两半之内。
这是黑客,请小心使用