Nicht erfasster RangeError: Die maximale Größe des Aufrufstapels hat Google Maps überschritten, wenn ich versuche, Grenzen festzulegen

72

Ich habe eine funktionierende Google-Karte erstellt, die ich jetzt automatisch verkleinern möchte, damit alle Punkte passen.

Als ich hinzufügte:

var bounds = new google.maps.LatLngBounds();

und

bounds.extend(point);
map.fitBounds(bounds); 

Ich bekomme dann diesen Fehler:

Uncaught RangeError: Maximum call stack size exceeded
J.get
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf
J.set
(anonymous function)
Ey.(anonymous function).zoomRange_changed
Zf

Mein ganzer Code zum Erstellen der Karte lautet:

function load() {
      var map = new google.maps.Map(document.getElementById("map"), {
        center: new google.maps.LatLng(47.6145, -122.3418),
        zoom: 13,
        mapTypeId: 'roadmap'
      });
      var infoWindow = new google.maps.InfoWindow;

      // Change this depending on the name of your PHP file
      downloadUrl("getMapMarkers.php", function(data) {
        var bounds = new google.maps.LatLngBounds();
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var name = markers[i].getAttribute("name");

          var type = markers[i].getAttribute("type");
          var point = new google.maps.LatLng(
              parseFloat(markers[i].getAttribute("lat")),
              parseFloat(markers[i].getAttribute("lng")));
          var html = "<b>" + name + "</b> <br/>" ;
          var icon = customIcons[type] || {};
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon.icon,
            shadow: icon.shadow
          });
          bindInfoWindow(marker, map, infoWindow, html);
          bounds.extend(point);
          map.fitBounds(bounds);
        }
      });


    }
Mike
quelle
3
Nehmen Sie map.fitBounds(bounds);aus Ihrer Schleife heraus, Sie müssen dies nur einmal tun, nach all der Schleife. Ich
bin
Ich habe den gleichen Fehler, aber nur auf der Jasminspezifikation. Die Spezifikation wird jedoch bestanden und die tatsächliche Ansicht funktioniert wie erwartet.
Giorgio Bozio

Antworten:

145

Ich bin gerade auf dieselbe Ausnahme gestoßen. Es stellte sich heraus, dass der in "new google.maps.LatLng" übergebene Längengrad undefiniert war.

Ollie Buck
quelle
25
Es kommt auch vor, wenn der übergebene Wert eine Zeichenfolge ist (oder wahrscheinlich etwas anderes als eine Zahl).
Halil Özgür
Ich hatte das gleiche Problem beim Übergeben eines Strings für new google.maps.LatLng. Bemerkenswert ist die Tatsache, dass dies nicht in FF, sondern nur in Chrome aufgetreten ist.
Paflow
Das war auch mein Problem. Ich habe die WIPMANIA-API verwendet, um Long / Lat zu erhalten, aber da ich meine Google Map-API asynchron mit Ajax-geladenen Inhalten geladen habe, hatte ich irgendwie den Fehler gemacht, WIP nach der Initiierung zu laden.
Balslev
3
Obwohl dieser Beitrag in die richtige Richtung weist, ist er keine Antwort, sondern ein Kommentar. Wir erhalten diesen Fehler, wenn mindestens einer der Parameter von new google.maps.LatLng(...)entweder undefinedoder ist NaN.
Bitterblue
4

Mögliche Szenarien

  • Entweder map.fitBounds(bounds);wird kein Breiten- / Längengrad oder beides empfangen.
  • Die empfangenen Werte für Breite / Länge sind nicht im richtigen Format (NaN).
Jaspreet Singh
quelle
In meinem Fall verwende ich elastische Suche und Bounds.push (latlng); nahm falsche Werte. In meinem Fall habe ich lat und lng falsch geschrieben. ES gab lat und lon zurück und ich benutzte lat und lng.
Awais Mustafa
2

Ich habe das Google Map Plugin verwendet: http://code.google.com/p/jquery-ui-map/ Ich hatte das gleiche Problem und als Ollie Point hatte ich meinen JSON schlecht formatiert. Das war mein json

mapObj= 
[
      {
         "latitude": 57.797333,
         "longitude": 12.050211,
         "title": "Angered",
         "content": "Representing :)"
      },
      {
         "latitude": 57.696995,
         "longitude": "11.9865",
         "title": "Gothenburg",
         "content": "Swedens second largest city"
      }
 ]

Aufgrund dieser Länge, die als Zeichenfolge geschrieben wurde, wurde dieser Fehler angezeigt.

Gelöst: Alle Koordinaten als Zahlen haben.!

So fügen Sie die Karte hinzu (unter der Annahme von lokalem json, falls nicht auf den Referenzlink verwiesen):

    $('#map_canvas').gmap().bind('init', function() { 
    $.each( mapObj, function(i, marker) {
        $('#map_canvas').gmap('addMarker', { 
            'position': new google.maps.LatLng(marker.latitude, marker.longitude), 
            'bounds': true 
        }).click(function() {
            $('#map_canvas').gmap('openInfoWindow', { 'content': marker.content }, this);
        });
    });
});
Gonzalo
quelle
2

Das Setzen der Kartenmitte auf ein nicht unterstütztes Lat / Long führt ebenfalls zu diesem Fehler.

Kristian
quelle
In meinem Fall war dies tatsächlich das Problem
Alvin Bakker
1

Dieser Fehler scheint auch ausgelöst zu werden, wenn Sie NaNden Wert von festlegen zoom.

map.setZoom(null)      // => nothing happens
map.setZoom(undefined) // => nothing happens 
map.setZoom(NaN)       // => error!
Quv
quelle