我在使用Google Map initMap功能时出现问题。我正在使用Express并尝试传递一系列位置以在地图上制作标记。当我在视图中将变量集传递给脚本的位置时,它会破坏initMap函数并且我得到错误:initMap不是函数,调用使用initMap作为其回调的延迟脚本。但是,如果我删除了位置变量,则地图正确加载而没有任何标记。这是我的代码:
<script>
window.initMap = function() {
var userLocation = {lat: 40.7410986, lng: -73.9888682};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 16,
center: userLocation
});
var locations = <%=JSON.stringify(locations)%>
console.log(locations)
var infowindow = new google.maps.InfoWindow();
for(let i = 0; i < locations.length; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
}
</script>
感谢您的帮助。
答案 0 :(得分:0)
您的代码可能会产生JS错误(所以它总是值得检查您的浏览器的JS控制台)。
使用<%= ... %>
生成unescaped output,而不是使用<%- ... %>
(执行HTML / XML类型转义):
var locations = <%- JSON.stringify(locations) %>