所以我将当前位置的传单的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文件中的传单函数中使用我的数据库信息。