在EJS模板中

时间:2017-06-23 17:30:42

标签: javascript leaflet

所以我将当前位置的传单的latlng对象转换为geoJSON,并将坐标作为字符串拉出,并通过将值存储到输入中将它们保存到数据库中。

function onMapClick(e) {
    var coordinatesNew = (e.latlng.lat.toString()) + ", " + (e.latlng.lng.toString());
    if (mymap.hasLayer(mark_by_input)) {
       mymap.removeLayer(mark_by_input);
    }
    if(mymap.hasLayer(mark_by_click)) {
        mark_by_click.setLatLng(e.latlng);
        mymap.panTo(e.latlng);
        $('.coords').val(coordinatesNew);
        console.log(coordinatesNew);
    } else {
      mark_by_click = new L.marker(e.latlng);
      mark_by_click.addTo(mymap)
      .bindPopup(e.latlng.toString());
      $('.coords').val(e.latlng);
      mymap.flyTo(e.latlng);
      var g = mark_by_click.toGeoJSON();
      var s = g.geometry.coordinates.reverse().toString();
      coordinatesNew = s;
      $('.coords').val(coordinatesNew);
      console.log(coordinatesNew);
     } 
}

这是来自app.js的GET路由,我从数据库中提取集合,然后在我的EJS文件中使用它。

app.get('/events', function(req, res){
    Event.find({}, function(err, allevents){
       if(err) {
           console.log('Error!');
       } else {
           res.render('eventDisplay', {events:allevents});
       }
    });
});

这是我应用一些数据库信息的EJS片段

<div class="info-container">
 <% events.forEach(function(event){ %>
   <div>
    <ul>    
     <li><a href="/event/<%= event._id %>"><strong>Author: <%=event.author%></strong> | <%=event.name%></a></li>
     </ul>
   </div>
 <% }); %>
</div>

我尝试做的是使用我的&lt;%= event.coordinates%&gt;循环并应用L.marker.addTo(myMap),但是包含传单对象的传单mapInit()是没有与我的EJS文件通信,没有这个路径,我不知道如何在我的JS文件中的传单函数中使用我的数据库信息。

0 个答案:

没有答案