检测圆是否在地图内

时间:2014-02-07 22:22:29

标签: javascript google-maps

我知道在缩放Google地图时,可以通过以下方式强制规定圆圈适合地图:

map.fitBounds(circle.getBounds());

是否可以简单地检测圆圈是否包含在地图中? E.g。

这将返回 true

enter image description here

这将返回 false

http://i60.tinypic.com/1468e9.png

1 个答案:

答案 0 :(得分:2)

可能的解决方案:

google.maps.Circle.prototype.inViewPort=function(){
  var map=this.getMap();
  if(!map){
    return null;
  }
  try{
  var mb=map.getBounds(),
      cb=this.getBounds(),
      ub=new google.maps.LatLngBounds();
      ub.union(mb);
      ub.union(cb);
      return(ub.equals(mb));
  }catch(e){return null;}
}

用法:只需致电circle.inViewPort()

当圆圈在地图内完全可见时,它将返回true,否则为false

当圆圈未与地图相关联或地图尚未完成初始化时(投影尚不可用,在第一个bounds_changed - 事件触发之前调用它时会发生),它将返回{ {1}}

工作原理:

它创建一个空null并使用地图的边界和圆的边界对其进行扩展。当圆圈完全可见时,此LatLngBounds的边界必须等于地图的边界。