我正在使用带有Jinja2和MapBox的Flask项目,该项目涉及使用从模型数据派生的GeoJSON在地图上绘制数据。如何加载它的示例:
$.getJSON("{{ url_for(".geojson") }}", function(data) {
var geojson = L.geoJson(data, {
onEachFeature: function (feature, layer) {
//do stuff
}
});
markers.addLayer(geojson);
var map = L.map('map', {maxZoom: 9, minZoom: 3}).fitBounds(markers.getBounds());
baseLayer.addTo(map);
markers.addTo(map);
在我的JS中使用此JSON数据的示例:
var feature = e.layer.feature;
//print item name
console.log(feature.properties.name)
//print item latitude
console.log(feature.properties.latitude)
//print item category info
console.log(feature.properties.category.name)
这很有效。我的数据集现已扩展为包含图片网址(示例09379_580_360.jpg
),图片本身也托管在static/images/eol
文件夹中。我希望将这些作为图像包含在DIV中,我通过JS动态设置这样的图像......
var commoncontent = '<div class="panel-heading"><h3>'+feature.properties.name+'</h3></div>'
$('#common').html(commoncontent)
但是,当我尝试将我的图像数据连接到jinja的url_for ...
var commoncontent = '<div><img src="{{ url_for("static", filename="images/eol/thumbs/big/'+feature.properties.category.localimageurl.jpg+'") }}"></div>'
...我在控制台中收到此错误
GET http://127.0.0.1:5000/static/images/eol/thumbs/big/feature.properties.category.localimageurl.jpg 404 (NOT FOUND)
我知道feature.properties.category.localimageurl
是正确的,因为它在我的console.log()时打印到我的控制台。但是,我不知道为什么解释器直接将它作为一个字符串而不是连接它?
答案 0 :(得分:1)
feature
是一个JavaScript对象。 Jinja无法接触到那些;它在服务器上运行,而您的JavaScript在客户端运行。呈现模板时,feature
不存在。您需要使用JavaScript处理串联。
var commoncontent = '<div><img src="{{ url_for("static", filename="images/eol/thumbs/big/") }}' + feature.properties.category.localimageurl.jpg + '"></div>'