Google maps 使用freemarker';列表';google maps函数中的指令
我有一个名为“locationList”的列表: [lat:-6.2986514,液化天然气:53.3324511,汽车注册号:161-D-XXXXXX],[lat:-7.259881,液化天然气:53.041335,汽车注册号:151-D-YYYY],[lat:-7.6273397,液化天然气:53.3052366,汽车注册号:142-D-ZZZZZZ]] 现在,如果我只做这样一个简单的迭代,它就可以工作了。(它输出我的三行坐标。)Google maps 使用freemarker';列表';google maps函数中的指令,google-maps,freemarker,Google Maps,Freemarker,我有一个名为“locationList”的列表: [lat:-6.2986514,液化天然气:53.3324511,汽车注册号:161-D-XXXXXX],[lat:-7.259881,液化天然气:53.041335,汽车注册号:151-D-YYYY],[lat:-7.6273397,液化天然气:53.3052366,汽车注册号:142-D-ZZZZZZ]] 现在,如果我只做这样一个简单的迭代,它就可以工作了。(它输出我的三行坐标。) 输出:${loc.lat}--${loc.lng} 但是
输出:${loc.lat}--${loc.lng}
但是当我尝试在我的谷歌地图功能中使用它时,它不会起作用。这就是我所拥有的:
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>
}
功能geocodeLatLng(地理编码器、地图、信息窗口){
var latlng={lat:${loc.lat},lng:${loc.lng};
var marker=new google.maps.marker({
位置:latlng,
地图:地图
});
}
如果我只是手动写出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>
函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
缩放:8,
中心:{lat:${lat},液化天然气:${lng}
});
var geocoder=new google.maps.geocoder;
var infowindow=new google.maps.infowindow;
google.maps.event.addDomListener(窗口'load',函数(){
geocodeLatLng(地理编码器、地图、信息窗口);
});
}
功能geocodeLatLng(地理编码器、地图、信息窗口){
var latlng={lat:${loc.lat},lng:${loc.lng};
var marker=new google.maps.marker({
位置:latlng,
地图:地图
});
}
在这种情况下,请始终检查实际输出是什么(您应该能够在web浏览器中执行此操作),以及该输出与手动填充时编写的输出有何不同。另外,检查您得到的JavaScript错误
我的盲目猜测是,这些数字的格式是针对人类受众的,因此不是有效的JavaScript文本。使用
?c
(如${loc.lat?c}
)为计算机“观众”设置格式。代码很好。在构建我的列表的过程中,我得到了错误的方向。道歉。我找错了地方。我习惯了服务器端编程。然而,我使用chrome中的控制台来跟踪输出。它没有报告任何错误。我也试过你的建议?c。这不管用。但我已经尝试使用检查生成的JavaScript(也就是说,所有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>