Meteor.js и Google Maps
я уже включил карты API в свой проект. Теперь я хочу показать некоторые маркеры на моей карте. Я инициализирую свою карту в функции запуска:
Meteor.startup(function() {
...
var mapOptions = {
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
Map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
Чем я устанавливаю центр карты при рендеринге
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);
До сих пор все работает отлично. Несмотря на то, что у меня есть PostCollection, который содержит некоторые координаты для меня. У меня есть функция публикации и подписки. Теперь я хочу показать свои сообщения с помощью маркеров на карте.
Моей первой идеей было сделать это в моей отрисованной функции. Проблема заключается в том, что при начальной загрузке сообщения не отображаются, поскольку моя локальная коллекция (клиентская часть) не содержит сообщений. Загрузка сообщений с сервера занимает некоторое время.
Вот почему я пытался создать вспомогательную функцию. Потому что помощник автоматически переоценивает, если что-то в моих сообщениях меняется.
Template.mapPostsList.helpers({
posts: function() {
var allPosts = Posts.find();
allPosts.foreach(function(post) {
create marker and attach it to the map
....
marker.setMap(Map);
})
Проблема в том, что моя переменная карты не определена. Есть ли способ определить его в глобальном масштабе? Почему я могу использовать переменную Map в моей визуализированной функции? Несмотря на то, что мне не нравится мой подход к вводу маркеров с помощью вспомогательной функции или это обычный способ?
Может ли кто-нибудь дать мне подсказку, как решить мою проблему?