Meteor.js und Google Maps

Ich habe bereits Maps API in mein Projekt aufgenommen. Jetzt möchte ich einige Markierungen auf meiner Karte anzeigen. Ich initialisiere meine Map in einer Startfunktion:

Meteor.startup(function() {
...
var mapOptions = {
  zoom: 8,
  mapTypeId: google.maps.MapTypeId.ROADMAP
};

Map = new google.maps.Map(document.getElementById("map-canvas"),
  mapOptions);  

Dann stelle ich beim Rendern den Mittelpunkt der Karte ein

Template.mapPostsList.rendered = function() {
var p2 = Session.get('location');

Map.setCenter(new google.maps.LatLng(p2.lat, p2.lng));
var marker = new google.maps.Marker({
    position: new google.maps.LatLng(p2.lat, p2.lng),
    title:'Meine Position'
  });
marker.setMap(Map);   

Bis jetzt funktioniert alles gut. Trotzdem habe ich eine PostCollection die einige Koordinaten für mich enthält. Ich habe eine Publish- und eine Subscribe-Funktion. Jetzt möchte ich meine Beiträge über Markierungen auf der Karte anzeigen.

Meine erste Idee war, dies in meiner gerenderten Funktion zu tun. Das Problem ist, dass beim ersten Laden keine Beiträge angezeigt werden, da meine lokale Sammlung (clientseitig) keine Beiträge enthält. Es dauert einige Zeit, bis Beiträge vom Server geladen werden.

Das ist der Grund, warum ich versucht habe, eine Hilfsfunktion aufzubauen. Weil der Helfer automatisch neu lädt, wenn sich etwas in meinen Posts ändert.

Template.mapPostsList.helpers({
posts: function() {
   var allPosts = Posts.find();
   allPosts.foreach(function(post) {
      create marker and attach it to the map
      ....
      marker.setMap(Map);
   })

Das Problem ist nun, dass meine Mapvariable nicht definiert ist. Gibt es eine Möglichkeit, es im globalen Bereich zu definieren? Warum kann ich meine Map-Variable in meiner gerenderten Funktion verwenden? Trotzdem mag ich meinen Ansatz nicht, meine Marker mit der Hilfsfunktion zu injizieren, oder ist es der übliche Weg?

Kann mir jemand einen Hinweis geben, wie ich mein Problem lösen kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage