2

次のコードを使用しています。

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

Gmaps.js プラグインを実行します。フォームを送信するたびに、レイアウトが再レンダリングされ、Google マップも再描画されます。

また、定数を使用してそれを分離しようとしました...そして分離します..何もありません。(テンプレート内にはありません)

 {{#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 に答える