在谷歌地图功能中使用freemarker'list'指令

时间:2017-04-11 17:16:43

标签: google-maps freemarker

我有以下名为'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>

但是当我尝试在我的谷歌地图功能中使用它时,它将无法正常工作。这就是我所拥有的:

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 list标签中包含的三倍,它就可以正常工作。

我已经尝试了所有我能想到的东西。任何人都可以帮助了解这里发生的事情吗?

编辑 - 整个脚本包括在下面:

<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>

2 个答案:

答案 0 :(得分:1)

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

我的盲目猜测是这些数字是针对人类受众格式化的,因此不是有效的JavaScript文字。使用?c(如${loc.lat?c}所示)格式化计算机&#34;观众&#34;。

答案 1 :(得分:0)

代码很好。在构建我的列表时,我的经度和纬度都是错误的。道歉。我正在寻找完全错误的地方。