2017-08-21 1 views
0

abzurufen, wenn ich die Karte initiieren Ich habe diesen Hörer:Wie alle Google Maps Rechtecke in Winkel

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) { 
console.log('value of e'); 
console.log(e); 
polyArray.push(e); 

if (e.type != google.maps.drawing.OverlayType.MARKER) { 
    // Switch back to non-drawing mode after drawing a shape. 
    drawingManager.setDrawingMode(null); 
} 
setMapClickEvent(e.overlay, e.type); 
setSelection(e.overlay); 

});

Unmittelbar nach dieser Deklaration durchlaufe ich die aktuellen Rechtecke, die automatisch auf der Karte gezeichnet werden sollen. Dies ist der Code:

_.each($scope.currentRactangles, function(arr) { 
new google.maps.Rectangle({ 
    strokeColor: '#002288', 
    strokeOpacity: 0.8, 
    strokeWeight: 2, 
    fillColor: '#333322', 
    fillOpacity: 0.35, 
    map: map, 
    editable: true, 
    bounds: new google.maps.LatLngBounds(
     new google.maps.LatLng(arr.upper_lat, arr.upper_lng), 
     new google.maps.LatLng(arr.lower_lat, arr.lower_lng) 
    ) 
}); 

});

Jetzt, wenn die Karte geladen ist, werden die vorhandenen Rechtecke (aus der Datenbank abgerufen) auf der Karte gezeichnet. Der Hörer wird jedoch nie ausgelöst. Wenn ich manuell ein Rechteck zeichne, kann ich in der Konsole "Wert von e" und das Ereignis selbst sehen. Meine Frage ist: Ist es möglich, den Listener beim Zeichnen von Rechtecken programmgesteuert auszulösen? All dies, weil, wenn ich die Rechtecke in der Datenbank speichern, ich Sachen im Array "PolyArray" speichern werde. Die nur manuell erstellte Rechtecke enthält.

Antwort

0

Ok, Lösung war über das Speichern der neu erstellten Rechtecke im Array. Grundsätzlich ist dieser Code-Schnipsel:

var tmprect = new google.maps.Rectangle({ 
        strokeColor: '#002288', 
        strokeOpacity: 0.8, 
        strokeWeight: 2, 
        fillColor: '#333322', 
        fillOpacity: 0.35, 
        map: map, 
        editable: true, 
        bounds: new google.maps.LatLngBounds(
         new google.maps.LatLng(arr.upper_lat, arr.upper_lng), 
         new google.maps.LatLng(arr.lower_lat, arr.lower_lng) 
        ) 
       }); 
       var newrect = {}; 
       newrect.type = 'rectangle'; 
       newrect.overlay = tmprect; 
       polyArray.push(newrect); 

Auch wenn die Rechtecke aus der Datenbank kein Ereignis erzeugt haben sie nun in der gleichen Anordnung sind, die auch die Rechtecke von Hand gezeichnet enthalten wird. Das war genug für mich, da ich nur eine Möglichkeit benötigte, Rechtecke sowohl vom Benutzer als auch vom automatisch generierten Objekt zu speichern.

Verwandte Themen