我使用mongoose将来自mongoDB的信息传递给了我的ejs文件。从这里开始,我试图通过名为addMarker的函数循环数据,该函数使用<%=%>标记提取数据并将其添加到Google地图。
我已经通过将值及其“ typeof”打印到控制台来测试了这些值,它们表明它们是正确的(数字,数字,字符串)和正确的值。因此,我的假设是我传递值的方式无效或<%=%>标记正在更改变量的类型。我也尝试使用<%-和<%标签
ejs
<script>
function initMap(){
//Map Options to dictate zoom and position
var options = {
zoom: 16,
center: {lat:35.6543936, lng: -97.4714266}
}
//init map for view
var map = new google.maps.Map(document.getElementById('map'), options);
/*var marker = new google.maps.Marker({
position:{lat: 35.654243, lng: -97.472937 },
map: map,
title: 'Math And Computer Science'
});*/
//addMarker({coords:{lat:35.6543936, lng: -97.4714266}, title: "TestCase"});
//addMarker({coords:{lat:35, lng: -97}, title: "TestCase2"});
<% for (const location of results) { %>
addMarker({coords:{lat: <%=location.lat %>, lng: <%=location.lng%> }, title: <%=location.title%> } );
<%= console.log(location.lat) %>
<%= console.log(typeof location.lat) %>
<%= console.log( location.title) %>
<% } %>
//Add Marker Function
function addMarker(props){
var marker = new google.maps.Marker({
position: props.coords,
map:map,
title: props.title
})
}
}
</script>
所以我已经注释掉了addMarker的测试:
//addMarker({coords:{lat:35.6543936, lng: -97.4714266}, title: "TestCase"});
//addMarker({coords:{lat:35, lng: -97}, title: "TestCase2"});
两者均按预期工作。当我在循环中运行addMarker时,地图显示出来,但地图上没有显示标记。
答案 0 :(得分:0)
您可以在浏览器中查看脚本源,以查看生成的代码。
代码<%在服务器上执行,然后生成的js在浏览器中执行。
例如,您需要在“'”中包含标题,并在<%(例如console.log的示例)之外使用js函数:
<% for (const location of results) { %>
addMarker({coords:{lat: <%=location.lat %>, lng: <%=location.lng%> }, title: '<%=location.title%>' } );
console.log( <%= location.lat %> );
console.log( <%= typeof location.lat %> );
console.log( '<%= location.title %>' );
<% } %>