0

次のコードを使用して Google マップを作成しています。

    <script type="text/javascript">
  google.maps.event.addDomListener(window, 'load', function() {
    var map = new google.maps.Map(document.getElementById('gmap'), {
      zoom: 8,
      center: new google.maps.LatLng(51.414487, -0.207644),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    var infoWindow = new google.maps.InfoWindow;

    var onMarkerClick = function() {
      var marker = this;
      var latLng = marker.getPosition();
      infoWindow.setContent('<div class="map-info-window">\
                <h3>WEA [[+pagetitle]]</h3>\
                <p><strong>Branch contact:</strong> [[+branch-latlng]]</p>\
                <p><strong>Telephone no:</strong> [[+branch-phone:htmlent]]</p>\
                <p><strong>Email:</strong> [[+branch-email.htmlent]]</p>\
                [[+branch-more.htmlent]]\
              </div>' );

      infoWindow.open(map, marker);
    };
    google.maps.event.addListener(map, 'click', function() {
      infoWindow.close();
    });

[[getResources? &debug=`0` &showHidden=`1` &parents=`[[*id]]` &depth=`4` &tpl=`newBranchMapMarkerTpl` &includeTVs=`1` &processTVs=`1` &tvPrefix=`` &limit=`0` &where=`{"template:=":9}`]]

[[getResources? &debug=`0` &showHidden=`1` &parents=`[[*id]]` &depth=`4` &tpl=`newMarkerInit` &includeTVs=`1` &processTVs=`1` &tvPrefix=`` &limit=`0` &where=`{"template:=":9}`]]
  });
</script>

また、2 つの getResources 呼び出しの内容は次のとおりです。

newBranchMapMarkerTpl:

var marker[[+id]] = new google.maps.Marker({
      map: map,
      position: new google.maps.LatLng([[+branch-latlng]]),
                        title:"[[+pagetitle]]"
    });

newMarkerInit:

google.maps.event.addListener(marker[[+id]], 'click', onMarkerClick);

ただし、setContent コードに配置されているようにテンプレート変数を取得しません。これは、マップ ページ ヘッダーで一度だけ参照され、通常は各ドキュメントをループする必要があるためです。BranchMapMarkerTpl 内に新しい情報ウィンドウを作成しようとしましたが、機能しますが、別の情報ウィンドウを開いたときに最後の情報ウィンドウを閉じません。

テンプレート変数の値を取得するように、これをどのようにリファクタリングできますか?

前もって感謝します。

4

1 に答える 1

0

Template のテンプレート変数の構文は[[*tvname]]. 試す:

infoWindow.setContent('<div class="map-info-window">\
    <h3>WEA [[*pagetitle]]</h3>\
    <p><strong>Branch contact:</strong> [[*branch-latlng]]</p>\
    <p><strong>Telephone no:</strong> [[*branch-phone:htmlent]]</p>\
    <p><strong>Email:</strong> [[*branch-email:htmlent]]</p>\
    [[*branch-more:htmlent]]\
</div>' );

[[+tvname]]テンプレート変数の値はプレースホルダーに出力され、テンプレート変数タグを介して解析されないため、getResources チャンク内で使用されるのは正しいです。

于 2012-09-20T08:42:35.050 に答える