在 google 映射函数中使用 freemarker 'list' 指令

Using freemarker 'list' directive within a google maps function

我有以下名为 'locationList' 的列表:

[[lat:-6.2986514, lng:53.3324511, car_reg:161-D-XXXXXX], [lat:-7.259881, lng:53.041335, car_reg:151-D-YYYYY], [lat:-7.6273397, lng:53.3052366, car_reg:142-D-ZZZZZ]]

现在,如果我像这样进行简单的迭代就可以了。 (它输出我的三行坐标。)。

  <#list locationList as loc>
      <p>   Output: ${loc.lat} -- ${loc.lng} </p>
   </#list>

但是当我尝试在 google 地图功能中使用它时,它不起作用。这是我的:

function geocodeLatLng(geocoder, map, infowindow) {

 <#list locationList as loc>

    var latlng = {lat: ${loc.lat}, lng: ${loc.lng} };

    var marker = new google.maps.Marker({
            position: latlng,
            map: map
          });

  </#list>  
}

如果我只是手动写出 freemarker 列表标签中包含的内容的三倍,它就可以正常工作。

而且我已经尝试了所有我能想到的。谁能帮助阐明这里发生的事情?

编辑 - 整个脚本如下:

<script>


function initMap() {

    <#assign lat='53.328015' lng='-6.3743767' >

    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 8,
      center: {lat: ${lat}, lng: ${lng} }
    });
    var geocoder = new google.maps.Geocoder;
    var infowindow = new google.maps.InfoWindow;


    google.maps.event.addDomListener(window, 'load', function() {
      geocodeLatLng(geocoder, map, infowindow);
    });
  }


function geocodeLatLng(geocoder, map, infowindow) {

     <#list locationList as loc>

    var latlng = {lat: ${loc.lat}, lng: ${loc.lng} };

    var marker = new google.maps.Marker({
            position: latlng,
            map: map
          });

    </#list>  
}

</script>

<script src="https://maps.googleapis.com/maps/api/js?key=REMOVED&callback=initMap"
    async defer></script>

在这种情况下,请始终检查实际输出是什么(您应该能够在网络浏览器中执行此操作)以及它与您手动填写时所写的内容有何不同。另外,检查你收到的 JavaScript 错误。

我的盲目猜测是这些数字是为人类观众格式化的,因此不是有效的 JavaScript 文字。使用 ?c(如 ${loc.lat?c})为计算机格式化 "audience"。

代码很好。在构建列表时,我弄错了经度和纬度。道歉。我找错地方了。