Google地图会检查地图边界中是否存在圆形边界

时间:2012-09-03 14:40:14

标签: google-maps

我有一个包含圆圈的谷歌地图。

我想知道圈子当前是否可以在用户正在查看的位置范围内查看。

到目前为止我发现的是检查地图的中心是否在界限范围内,但我想查看整个地图而不仅仅是它的中心。

我的代码检查当前地图中心是否在圆圈范围内:

            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() )

3 个答案:

答案 0 :(得分:1)

  1. 确定圆圈的最北端,最南端,最西端和最东端的LATLNG。给定圆半径

  2. 可以找到这个
  3. 确定所有点是否都在视口范围内

  4. 如果是,那么是的,圆圈必须是可见的!

  5. 你真的应该回到原来的问题并接受它们(点击最佳答案旁边的复选标记大纲)。这就是您对回答者提供的辛勤工作表示感谢的方式。

答案 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)都被测试覆盖。

我当然希望是这样的 - 这是我如何进行所有界限比较......