2017-04-25 1 views
-1

Kann jemandUncaught Auslöser Range: Maximale Call-Stack-Größe überschritten Ajax Google Maps

helfen Ich bin ein Google Maps tun Projektzeichnung Formen (Kreise, Polygone, Rechtecke ... etc) und es zu der Datenbank gespeichert nachladen es später , um zum Beispiel einen Kreis zu speichern ich tue dies:

if (event.type === 'circle') { 

    CIRCLES.push({ 
    "centerLat": event.overlay.center.lat(), 
    "centerLng": event.overlay.center.lng(), 
    "radius": event.overlay.radius, 
    "fillColor": event.overlay.fillColor, 
    "fillOpacity": event.overlay.fillOpacity, 
    "strokeWeight": event.overlay.strokeWeight, 
    "zIndex": event.overlay.zIndex 
    }); 

    var cirlceArea = Math.PI * Math.pow(event.overlay.radius, 2); 
    var circleInfoWindow = new google.maps.InfoWindow({ 
    content:'<h5>Circle Area</h5><b>'+cirlceArea +'M²</b>', 
    position:event.overlay.center, 
    map:map 
    }); 
    // circleInfoWindow.setMap(map); 
    // circleInfoWindow.open(map); 

    infoWindowArr.push(circleInfoWindow); 

der Code bis jetzt funktioniert gut, aber wenn ich die Daten mit jquery ajax einreichen löst er diesen Fehler Uncaught Auslöser Range: Maximale Call-Stack Größe überschritten , aber wenn ich diese Zeile Code infoWindowArr.push(circleInfoWindow);kommentierenes funktionieren und schließlich, das ist meine Ajax

$("#map-form").on("submit", function (e) { 
e.preventDefault(); 
$.ajax({ 
    type: 'POST', 
    dataType: 'json', 
    url: '/dash/store', 
    data: { 
    "circles": CIRCLES, 
    "polygons": POLYGONS, 
    "rectangles":RECTANGLES, 
    "polylines":POLYLINES, 
    "projectName":projectName, 
    "description":description, 
    "infoWindow":infoWindowArr, 
    /*'captcha':grecaptcha.getResponse()*/ 
    } 

Ich sah in viele ähnliche Fragen hier aber nicht finden eine Lösung und ich denke, dass es von der Ajax-Anforderung kommt und danke

+0

Warum benötigen Sie mehrere infoWindow-Instanzen? Sie können einfach denselben Inhalt zu derselben Instanz hinzufügen. – Ninjaneer

+0

ein Infowindow für jeden Kreis zu halten Der berechnete Bereich –

Antwort

0

Meine Vermutung ist, dass jQuery JSON.stringify auf dem Objekt "Daten" in den Anforderungsparametern aufruft, und es gibt einen Zyklus im Diagramm (es geht in endlose Rekursion). Anstatt also das circleInfoWindow-Objekt (das unter anderem Referenzen auf die Map hat) zu drücken, drücken Sie einfach die relevanten Parameter wie:

infoWindowArr.push({ 
    content:'<h5>Circle Area</h5><b>'+cirlceArea +'M²</b>', 
    position:event.overlay.center, 
}); 
+0

Ich dränge das Loch Infowindow Objekt, weil ich die letzte Form ertrinken muss und es ist Infowindow –

+0

Okay, so speichern Sie einige Daten auf dem Server zu tun "rückgängig machen" -Operationen ? Sie können nicht einfach ein infoWindow-Objekt an den Server senden (es enthält viele andere Objekte, die Sie nicht brauchen, wie einen Verweis auf die Karten- und DOM-Elemente) und es geht in endlose Rekursion. Senden Sie eine ID für das Objekt, und wenn Sie es rückgängig machen müssen, suchen Sie das Objekt auf der Client-Seite einfach erneut über die ID und entfernen Sie es dann. –

+0

danke, ich werde versuchen, dass –

Verwandte Themen