Dienstag, Februar 18, 2020

Google Maps v3 getBounds ist die Erweiterung über das hinaus, was sichtbar ist auf der Karte anzeigen

Aus irgendeinem Grund die getBounds() – Funktion für Google Maps v3 scheint zu sein erweitern viel mehr, als was die Karte tatsächlich angezeigt werden. Korrigieren Sie mich, wenn ich falsch Liege, aber sollte es nicht die Rückkehr der NE (oben rechts) und SW (linke untere Ecke), die Breite und Länge Koordinaten für die Ecken sehr von dem, was gezeigt wird in der aktuellen Ansicht?

Ich fahre Suchergebnisse (die sind abgebildet in einer lat-und lng), die zwischen diesen Koordinaten und werde zurückgegebenen Ergebnisse viel weiter außerhalb in die Region zurückgegeben getBounds(). Irgendwelche Ideen, was könnte hier Los?

Nur zur info, ich bin immer die Grenzen auf der Karte die idle-Ereignis:

google.maps.event.addListener(map, 'idle', function() {

var bounds = map.getBounds();
var NE = bounds.getNorthEast();
var SW = bounds.getSouthWest();

…und mit .lat() und .lng() bekommt man die Koordinaten von den jeweiligen Ecken. Dann habe ich Futter, das zu einer SQL-Abfrage, die prüft, für die Ergebnisse, die zwischen diesen Koordinaten. Die Ergebnisse sind in den Allgemeinen Bereich, kann aber noch weit außerhalb von dem, was tatsächlich auf der Karte angezeigt.

Alle Ideen sind willkommen! Danke!

  • HINWEIS: Diese war tatsächlich durch ein viel tieferes Problem mit bestimmten Markern wird angezeigt/nicht angezeigt wird und an der falschen suchergebnis. Google, natürlich, wurde wieder die richtigen Ergebnisse.
InformationsquelleAutor Ryan | 2010-08-21

1 Kommentar

  1. 18

    Richtig, die map.getBounds() zurückkehren wird, die Grenzen des sichtbaren Bereich, wie im Beispiel unten gezeigt. In diesem Beispiel, eine rote Polylinie Feld gezeichnet wird über die Punkte des map.getBounds() wenn die idle event feuert.

    Ihre SQL-Abfrage könnte nicht zurückkehren, die Ergebnisse, die Sie suchen, und brauchen mal wieder angeschaut.

    <!DOCTYPE html>
    <html>
    <head>
    <title>Bounds Box</title>
    <script type="text/javascript"
        src="http://maps.google.com/maps/api/js?sensor=false">
    </script>
    <script type="text/javascript">
          function initialize() {
    
            var latlng = new google.maps.LatLng(30.405865,-87.283362);
            var myOptions = {
              zoom: 8,
              center: latlng,
              mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("map_canvas"),
                myOptions);
            var viewportBox;
    
            google.maps.event.addListener(map, 'idle', function(event) {
                var bounds = map.getBounds();
    
                var ne = bounds.getNorthEast();
                var sw = bounds.getSouthWest();
    
                var viewportPoints = [
                    ne, new google.maps.LatLng(ne.lat(), sw.lng()),
                    sw, new google.maps.LatLng(sw.lat(), ne.lng()), ne
                ];
                /*strokeOpacity = 0 , if don't want to show the border moving. */
                if (viewportBox) {
                    viewportBox.setPath(viewportPoints);
                } else {
                    viewportBox = new google.maps.Polyline({
                        path: viewportPoints,
                        strokeColor: '#FF0000',
                        strokeOpacity: 1.0,
                        strokeWeight: 4 
                    });
                    viewportBox.setMap(map);
                };
    
                var info = document.getElementById('info');
                info.innerHTML = 'NorthEast: ' + ne.lat() + '   ' + ne.lng() + 
                    '<br />' + 'SouthWest: ' + sw.lat() + '   ' + sw.lng();
            });
          };
    </script>
    </head>
    <body onload="initialize()">
      <div id="map_canvas" style="width:500px; height:500px"></div>
      <div id="info"></div>
    </body>
    </html>
    
    • Jawohl, es war tatsächlich ein anderer Fehler mit den Markern war mir immer Durcheinander. Gute demo für das zeigen der Grenzen, vielen Dank.
    • +1 Gute Antwort @Eric 🙂
    • hast du den Fehler gefunden mit den Markern? Ich habe das gleiche problem!!!

Kostenlose Online-Tests