我一直在使用Flask-GoogleMaps扩展程序: https://github.com/nikulesko/Flask-GoogleMaps
我正在尝试在InfoWindows中插入一些HTML,但这些不会显示(标签本身显示为纯文本)。我怎么做到这一点?我认为传递带有HTML标签的字符串会在infoWindow上呈现HTML但是这不起作用。这就是infoWindow的内容设置方式:
var infoWindow = new google.maps.InfoWindow({
content: "loading..."
});
{% for marker in gmap.markers %}
var marker_{{loop.counter}} = new google.maps.Marker({
position: new google.maps.LatLng({{marker.0}}, {{marker.1}}),
map: {{gmap.varname}},
title: '{{marker.2}}',
icon: '{{marker.3}}',
});
google.maps.event.addListener(marker_{{loop.counter}}, 'click', function() {
infoWindow.setContent('{{marker.4}}');
infoWindow.open({{gmap.varname}}, this);
});
{% endfor %}
有什么想法吗? markers
是一个包含marker
元组的列表,其中(latitude, longitude, title, icon, info)
为marker.4
。所以infoWindow.setContent("some text with html...")
是一个字符串。
infoWindow.setContent("{{marker.4}}")
这样可以正常显示HTML,但是当我这样做时
var contentStr = '{{marker.4}}';
HTML没有显示出来。我也尝试过设置变量(就在调用addListener的行之前):
infoWindow.setContent(contentStr);
然后:
req.user._id.toString() === post.author.user_id.toString()
然而,这也不起作用。我不明白传递jinja变量和普通js之间的区别。如何使用python string / jinja变量实现我想要的功能?
答案 0 :(得分:0)
在 jinja2 中,在for
loop内,您没有loop.counter
,但loop.index
会显示当前循环的迭代(从1开始) 。 loop.index0
从0开始执行某些操作。
此外,你应该在你的javascript代码中引用所有jinja变量,例如:
position: new google.maps.LatLng("{{marker.0}}", "{{marker.1}}")