我有一个包含圆圈的谷歌地图。
我想知道圈子当前是否可以在用户正在查看的位置范围内查看。
到目前为止我发现的是检查地图的中心是否在界限范围内,但我想查看整个地图而不仅仅是它的中心。
我的代码检查当前地图中心是否在圆圈范围内:
google.maps.event.addListener(map, 'bounds_changed', function()
{
var circleBounds = circle.getBounds();
// Log into the console whether the center is inside or outside
console.log( circleBounds.contains( map.getCenter() ) );
});
所以我想要的是这样的,当然这是不对的:
circleBounds.contains( map.getBounds() )
答案 0 :(得分:1)
确定圆圈的最北端,最南端,最西端和最东端的LATLNG。给定圆半径
确定所有点是否都在视口范围内
如果是,那么是的,圆圈必须是可见的!
你真的应该回到原来的问题并接受它们(点击最佳答案旁边的复选标记大纲)。这就是您对回答者提供的辛勤工作表示感谢的方式。
答案 1 :(得分:0)
谢谢Tina CG Hoehr。
以防其他人想要这个,这是我的问题的代码:
// Get the bounds
var circleBounds = circle.getBounds();
var ne = circleBounds.getNorthEast(); // LatLng of the north-east corner
var sw = circleBounds.getSouthWest();
var nw = new google.maps.LatLng(ne.lat(), sw.lng());
var se = new google.maps.LatLng(sw.lat(), ne.lng());
google.maps.event.addListener(map, 'bounds_changed', function()
{
var mapBounds = map.getBounds();
// Log whether the circle is inside or outside of the map bounds
if(mapBounds.contains(ne))
{
console.log("northeast is viewable");
}
if(mapBounds.contains(sw))
{
console.log("southwest is viewable");
}
if(mapBounds.contains(nw))
{
console.log("northwest is viewable");
}
if(mapBounds.contains(se))
{
console.log("southeast is viewable");
}
});
答案 2 :(得分:0)
这是一个古老的问题 - 互联网年代的恐龙 - 如果你比较两个界限,那么以下是一个更好的, n'est-ce pas :
if(a.getBounds().contains(b.getBounds().getNorthEast())
&& a.getBounds().contains(b.getBounds().getSouthWest()))
{console.log('B is within A... Bounds are RECTANGLES: \
You only need to test two \
diagonally-opposing corners')};
那是因为对于一个矩形R,SW是(max(x),min(y)
); NE是(min(x),max(y)
) - 因此R中的所有(x,y
)都被测试覆盖。
我当然希望是这样的 - 这是我如何进行所有界限比较......