я уже включил 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);
})
Проблема в том, что моя переменная карты не определена. Есть ли способ определить его в глобальной области видимости? Почему я могу использовать свою переменную карты в моей отображаемой функции? Несмотря на то, что мне не нравится мой подход к внедрению моих маркеров с помощью вспомогательной функции, или это обычный способ?
Может ли кто-нибудь дать мне подсказку, как решить мою проблему?