Ich habe die folgende Liste namens 'locationList':Mit Freemarker 'Liste' Richtlinie innerhalb von Google Maps funktioniert
[[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]]
Nun, wenn ich nur eine einfache Iteration so funktioniert es. (Es gibt meine drei Koordinatenlinien aus.).
<#list locationList as loc>
<p> Output: ${loc.lat} -- ${loc.lng} </p>
</#list>
Aber wenn ich versuche, es in meiner Google Maps-Funktion zu verwenden, wird es nicht funktionieren. Das ist, was ich habe:
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>
}
Es funktioniert gut, wenn ich manuell dreimal nur schreiben, was innerhalb der Freemarker Listen-Tags enthalten ist.
Und ich habe alles versucht, was mir einfällt. Kann jemand helfen, Licht zu machen, was hier passiert?
EDIT - ganze Skript unten enthalten:
<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>
Ich bin an die serverseitige Programmierung gewöhnt. Allerdings habe ich die Konsole in Chrom verwendet, um die Ausgabe zu verfolgen. Es werden keine Fehler gemeldet. Ich habe auch Ihren Vorschlag von? C. Funktioniert nicht. Aber ich habe bereits versucht, eine <# assign-Anweisung zu verwenden, um Werte anzugeben und sie so einzufügen, wie ich es hier getan habe, und das hat gut funktioniert. Also muss es etwas mit der Schleife zu tun haben? Ich fragte mich über Async und verzögern, aber Änderungen, die nicht geholfen haben. Ich bearbeite meinen Beitrag, um das gesamte Skript einzuschließen (obwohl ich das Infowindow-Zeug für die Rechnung herausgezogen habe. Irgendwelche Hilfe mercefiedfd. –
Überprüfen Sie das generierte JavaScript (bedeutet, dass alle FreeMarker-Anweisungen darin bereits aufgelöst wurden) gemeint mit "check was der eigentliche Output ist". – ddekany