我有以下名为'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>
答案 0 :(得分:1)
在这种情况下,请始终检查实际输出是什么(您应该能够在Web浏览器中执行此操作)以及它与您手动填写时的写法有何不同。另外,请检查您获得的JavaScript错误。
我的盲目猜测是这些数字是针对人类受众格式化的,因此不是有效的JavaScript文字。使用?c
(如${loc.lat?c}
所示)格式化计算机&#34;观众&#34;。
答案 1 :(得分:0)
代码很好。在构建我的列表时,我的经度和纬度都是错误的。道歉。我正在寻找完全错误的地方。