0

円の面積を含むGoogleマップがあります。

円が現在マップの境界内に表示されているかどうかを知りたいです。

これまでに見つけたのは、円の中心が境界内にあるかどうかを確認することですが、中心だけでなく、円全体を確認したいと思います。

マップの現在の中心が円の境界内にあるかどうかをチェックする私のコードは次のとおりです。

            google.maps.event.addListener(map, 'bounds_changed', function() 
            {                    
                var circleBounds = circle.getBounds();
                console.log(circleBounds.contains(map.getCenter()));
            });

だから私が欲しいのはこのようなものです、もちろんそれは正しくありません:

circleBounds.contains(map.getBounds());
4

3 に答える 3

1
  1. Determine what the northmost, southmost, westmost, and eastmost LATLNGs of the circle are. You can find this given the circle radius

  2. Determine if all points are inside the viewport bounds

  3. If true, then yes, the circle must be viewable!

and you really should go back to your old questions and ACCEPT them (click on the check mark outline next to the best answer). This is how you show your appreciation for the hard work your answerers provided.

于 2012-09-03T15:10:34.703 に答える
1

これは古い質問です-恐竜-インターネット時代には古いです-しかし、2つの境界を比較している場合、以下はフォルティオリ、ネスト-セパスを保持しますか?:

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))-したがってx,y、Rのすべての()がテストの対象になります。

私は確かにそうだと思います-それは私がすべての境界比較を行う方法です...

于 2016-07-25T06:39:40.210 に答える
0

TinaCGHoehrに感謝します。

他の誰かがこれを望んでいる場合に備えて、ここに私の質問のコードがあります:

// 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");
    }
});
于 2012-09-04T07:15:58.360 に答える