2

我正在使用以下代码:

Template.categories.rendered = function() {
  var map = new GMaps({
      div: '#map_canvas',
      lat: -12.043333,
      lng: -77.028333
  });
}

执行 Gmaps.js 插件 - 它可以工作,每次我提交表单时,布局都会重新渲染,我的谷歌地图也会重新绘制。

我还使用常量来尝试隔离它......并且隔离......什么都没有。(它不在模板内)

 {{#constant}}
        <div id="map_canvas"></div>
 {{/constant}}

我尝试将 Template.categories.rendered 更改为 Template.categories.created 但我遇到了一堆错误。我希望“创建”只执行一次..

编辑我制作了一个新模板“地图”并将表格与地图分开

但恐怕这不是一个可行的解决方案,因为我想在地图和表单之间进行通信.. 特别是我想获取纬度和经度并自动填写一个字段......

4

1 回答 1

1

尝试将您的地图放在单独的模板中,例如

<template name="categories">
    {{>map}}
    {{>other_form_with_submit_button}}
</template>

所以你把你的地图放在

<template name="map">
    <div id="map_canvas></div>
</template>

<template name="other_form_with_submit_button">
    .. your form data
</template>

您应该仍然能够像往常一样与地图通信,DOM 甚至没有注意到很多差异

Template.other_form_with_submit_button.events({
    'submit' : function() {
        var lat = "-12.043333",
        var lng = "-77.028333";
        var map = new GMaps({
           div: '#map_canvas',
           lat: -12.043333,
           lng: -77.028333
        });
    }
}

同样,在移动地图时,您可以附加一个侦听器并让它像您希望的那样更改文本框:

Template.map.rendered = function() {
var map = new GMaps({
      div: '#map_canvas',
      lat: -12.043333,
      lng: -77.028333
});

//Im not sure what you're using to get the location but this is the example if moving the center could be used
google.maps.event.addListener(map, 'center_changed', function() {
    $("#lat").val(map.getPosition().lat());
    $("#lng").val(map.getPosition().lng());
}

});
于 2013-03-06T07:31:37.543 回答