我正在尝试使用一些测试坐标构建数组,以与OpenLayers Overlays一起使用。

这是代码:

var parada = [];

for(var i = 0; i < <%- coords.length%>; i++){ //First loop to fill the array

    var arr = [<%- coords[i].lon %>, <%- coords[i].lat %>]; //THIS IS THE ERROR LINE! ... says the console...
    parada.push(arr);

}

var overlays = [];

for (i = 0; i < parada.lenght; i++) { //Second loop to build the overlays
    overlays.push(new ol.Overlay({
        position: ol.proj.fromLonLat([parada[i][0], parada[i][1]]), //With the data of the array above
        positioning: 'center-center',
        element: document.getElementById('parada' + i),
        stopEvent: false
    }));

}

for (i = 0; i<overlays.length; i++){ // Last loop to assign the overlays.
    map.addOverlay(overlays[i]);
}


重要说明:在我的app.js文件中,坐标定义为对象数组(我在mongodb中找到({}))。

我真的被困在这里,请帮忙!
谢谢! :DDD

最佳答案

您的变量i存在于客户端JS中,而不存在于服务器端JS中。

您可以通过多种方式解决此问题,其中一种是:

var parada = <%- JSON.stringify(coords.map(function(pair) {
    return [pair.lon, pair.lat];
})) %>;


我假设lonlat总是数字,这样就不会有注入攻击的风险。

或者,您可以在调用模板之前进行转换,从而将复杂性保持在模板本身之外。

顺便说一句,您在lenght中也有错字。

10-06 04:37