angularjs mit Leafletjs
Folgenden directie-code ist aus http://jsfiddle.net/M6RPn/26/
Ich möchte eine json-feed, der viele lat und lang.. bekomme ich ein json mit $resource und $http in Eckige leicht, aber Wie kann ich es füttern, um dieser Richtlinie zuordnen, was auf der Karte?
module.directive('sap', function() {
return {
restrict: 'E',
replace: true,
template: '<div></div>',
link: function(scope, element, attrs) {
var map = L.map(attrs.id, {
center: [40, -86],
zoom: 10
});
//create a CloudMade tile layer and add it to the map
L.tileLayer('http://{s}.tile.cloudmade.com/57cbb6ca8cac418dbb1a402586df4528/997/256/{z}/{x}/{y}.png', {
maxZoom: 18
}).addTo(map);
//add markers dynamically
var points = [{lat: 40, lng: -86},{lat: 40.1, lng: -86.2}];
for (var p in points) {
L.marker([points[p].lat, points[p].lng]).addTo(map);
}
}
};
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht viel über die Broschüre oder das, was du versuchst zu tun, aber ich würde davon ausgehen, die Sie übergeben möchten einige Koordinaten von Ihrem controller auf Ihre Richtlinie?
Gibt es tatsächlich eine Menge von Möglichkeiten, dies zu tun... der beste von denen die Nutzung von scope.
Hier ist ein Weg, um Daten von Ihrem controller auf Ihre Richtlinie:
Hier ist das markup. Hier bist du hinzufügen, dass pointsource-Attribut der link-Funktion Ausschau halten, um die $Uhr.
Dann in Ihre controller Sie haben eine Eigenschaft, Sie können nur aktualisieren.
$scope.pointsFromController = [];
die möglicherweise nicht funktionieren... wenn das nicht funktioniert, dann kann man es durch das entfernen der Elemente manuell:$scope.pointsFromController.splice(0, $scope.pointsFromController.length);
Ich vor kurzem gebaut ein app mit Angular JS und Merkblatt. Sehr ähnlich zu dem, was Sie beschrieben haben, einschließlich der Lage Daten aus einer JSON-Datei. Meine Lösung ist ähnlich blesh.
Hier ist der grundlegende Prozess.
Ich habe eine
<map>
element auf einer meiner Seiten. Dann habe ich eine Richtlinie zu ersetzen, die<map>
element mit der Broschüre gekennzeichnet. Mein setup ist etwas anders, da ich das laden der JSON-Daten in eine Fabrik, aber ich habe es angepasst für Ihren Anwendungsfall (entschuldigt, wenn es Fehler). Innerhalb der Richtlinie, laden Sie Ihre JSON-Datei, dann eine Schleife durch jeden Ihrer Standorte (Sie müssen setup Ihre JSON-Datei in einem kompatiblen Weg). Zeigen Sie dann eine Markierung an jedem lat/lng.HTML
Richtlinie
Beispiel-JSON-Datei
Richtlinien und mvc in angularJs sind unterschiedliche Technologien. Richtlinien sind in der Regel ausgeführt, wenn die Seite geladen wird. Richtlinien sind mehr für das arbeiten auf/mit html und xml. Nachdem Sie JSON, dann Ihr bestes, um die Verwendung des mvc-framework arbeiten.
Nachdem die Seite gerendert wurde, gelten Richtlinien, die Sie oft tun müssen, um $scope.$apply() oder $kompilieren, um die änderung zu registrieren auf der Seite.
So oder so, der beste Weg, um einen service in einer Richtlinie ist die Verwendung des dependency injection-framework.
Bemerkte ich den Rahmen:true oder scope:{} fehlt in Ihrer Richtlinie. Dies hat einen großen Einfluss darauf, wie gut die Richtlinie spielt mit übergeordneten Steuerungen.
Richtlinien angewendet werden, die durch camelCase-matching. Ich würde vermeiden Sie die Verwendung oder wegen eines Problems mit dem IE. Alternative wäre
Unter der Annahme, dass der controller Sie haben
und Ihre Richtlinie Vorlage:
dann innerhalb Ihrer Richtlinie zu definieren, können Sie verwenden Sie die " = " - simbol, um das setup eine bidirektionale Bindung zwischen Ihrem Anwendungsbereich der Richtlinie und Ihre übergeordneten Bereich
Auch anstelle der Zugabe der Markierungen rechts in die Karte, es ist empfehlenswert, um Ihre Marken zu einem L. featureGroup zuerst, und dann hinzufügen, dass L. featureGroup auf der Karte, da hat es eine clearLayers() metho, das sparen Sie sich einige Kopfschmerzen bei der Aktualisierung Ihres Marker.
Ich hoffe das hilft, cheers,