带有Meteor的谷歌地图和反应迅速的InfoWindow

时间:2015-02-27 21:25:36

标签: google-maps google-maps-api-3 meteor meteor-blaze

我有一个谷歌地图API v3应用程序,用于流星,我目前正在处理。当一个人点击一个标记时,它会显示一个infoWindow,其中包含一些窗口创建时静态内容。

我想要做的是使用反应式模板来呈现infoWindow的内容,可以直接作为可以更改的HTML,也可以通过引用反应性更新的dom元素。

我已经验证过,如果我使用infoWindow引用DOM元素,并且该元素的内容发生了更改,则Maps API会正确更新屏幕窗口。但是,我遇到两个问题:

(1)关闭窗口会破坏DOM元素,因此必须重新创建。这可能很容易处理"如果它存在更新它,否则创建它,插入它并更新它"处理。 (2)UI.render似乎不是动态的,所以创建,插入和更新它比想象的要难。

我仍然是一名中级流星黑客,所以请原谅我,如果我对自己造成太大的压力。

1 个答案:

答案 0 :(得分:0)

对于#1,制作一个克隆:content: $('.stats').clone()[0] 对于#2,您需要创建依赖项。文档很好地解释了它&在不了解您的反应数据源催化剂的情况下,我无法提供更多帮助(我认为它是示例中的Session var)。哦,如果它基于集合中的新条目,请查看.observe()函数。

Template.name.created = function() {
  Session.set('stats',10);
  statsDep = new Deps.Dependency();
};

statsDep.depend();
var dropWindow = new google.maps.InfoWindow({
  content: $('.stats').clone()[0]
});

statsDep.changed();