0

所以我有一个满是 GPS 坐标的流星集合,我在地图上绘制了这些坐标。每当我的 Meteor 集合中的数据发生变化时,我都有一个 deps.autorun 来清除所有不在我订阅中的标记。然后我绘制所有尚未绘制的标记。如果我有一堆快速更新的数据,我 iPhone 上的浏览​​器就会崩溃。因此,我希望能够仅针对已更改的内容更新地图,而不是每次都扫描并查找已更改的内容以减轻负载。这可能吗?

谢谢

4

1 回答 1

2

@user728291 是对的,在这种情况下使用observeChanges或只是观察。

您要做的是按 id 跟踪所有新对象:

Template.map.rendered = function () {
  Places.find().observe({
    added: function (doc) {
      // code to add pin of doc
    },
    changed: function (newDoc, oldDoc) {
      // code to move pin from oldDoc position to newDoc
    },
    removed: function (doc) {
      // code to remove a pin associated with doc
    }
  });
}

事实上,每当您将{{#each things}}...{{/each}}模板助手与作为 MongoDB 游标返回的数据结合使用时:

Template.myTemplate.things = function () {
  return Things.find({ rating: { $gt: 3 } });
}

Meteor 会在引擎盖下做同样的事情。UI 系统将观察光标上的变化,而不是重绘所有内容,它会找出发生了什么变化并仅更新显示列表的相关部分。

于 2013-10-26T20:35:13.463 回答