Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 只运行meteor.js代码一次_Javascript_Meteor_Leaflet - Fatal编程技术网

Javascript 只运行meteor.js代码一次

Javascript 只运行meteor.js代码一次,javascript,meteor,leaflet,Javascript,Meteor,Leaflet,我只想在Template.foo.rendered中运行一次代码。我有一个传单地图和定位控制插件集成。到目前为止,它工作得相当好,但渲染的模板似乎经常重新运行。因此,我在地图上定位用户的标记每隔几秒钟就会重置一次。我只想初始化它一次 var map, mapInit; map = void 0; mapInit = function (element){ map = L.mapbox.map(element, 'examples.map-20v6611k').setV

我只想在Template.foo.rendered中运行一次代码。我有一个传单地图和定位控制插件集成。到目前为止,它工作得相当好,但渲染的模板似乎经常重新运行。因此,我在地图上定位用户的标记每隔几秒钟就会重置一次。我只想初始化它一次

  var map, mapInit;
  map = void 0;

  mapInit = function (element){

      map = L.mapbox.map(element, 'examples.map-20v6611k').setView(new L.LatLng(52.02312,13.02627), 11);
      L.control.locate({drawCircle: true, position: 'topright'}).addTo(map);

  }

  Template.map.rendered = function () {
    $(window).resize(function () {
      var h = $(window).height(); 
      $mc = $('#map');
      $mc.css('height', h);
    }).resize();

    if (!this.rendered) {
      mapInit('map');
      this.rendered = true;
    }
  }

您可能希望将映射的DOM元素保存到全局变量或应用程序变量(此处,
map
),然后将它们重新插入DOM:

var Map;

...

var mapDomElement = $('#map');
if (Map.domElements) {
  mapDomElement.replaceWith(Map.domElements);
} else {
  Map.mapObject = L.mapbox.map(...) // instantiate map here
  Map.domElements = mapDomElement;
}
请注意。高度重新计算:不需要这样做。使用CSS flex box模型最大化地图高度:

<div style="display: flex; flex-flow: column; min-height: 100%">

  <div id="map" style="flex: 1"></div>

  <div>
    ... map controls here
  </div>
</div>

... 这里的地图控件

请参见flex模型上的。“这里有东西”是你的地图。

谢谢你的回答,但我不太确定怎么做。如果我尝试测试map.domElements,我会得到一个异常,但我得到“map.domElements未定义”。