使用setContent时,InfoWindow上没有HTML

时间:2015-07-08 12:22:35

标签: javascript python html google-maps flask

我一直在使用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变量实现我想要的功能?

1 个答案:

答案 0 :(得分:0)

jinja2 中,在for loop内,您没有loop.counter,但loop.index会显示当前循环的迭代(从1开始) 。 loop.index0从0开始执行某些操作。

此外,你应该在你的javascript代码中引用所有jinja变量,例如:

position: new google.maps.LatLng("{{marker.0}}", "{{marker.1}}")