Python 多个infowindows Jinja谷歌地图和flask

Python 多个infowindows Jinja谷歌地图和flask,python,google-maps,flask,infowindow,jinja2,Python,Google Maps,Flask,Infowindow,Jinja2,我已经为此奋斗了一整天 下面的代码从flask中获取了一个jinja数组,如果我不想要一个信息框,那么它就可以正常工作 在下面添加信息框代码,它将显示一个标记,没有信息窗口。这让我快发疯了。我还想使用集群,因为我有大约500个管脚,但这是一个二阶问题 我已经看了这么多的答案,但都没有结果,有一种叫做闭包的魔法,它似乎是问题的核心,我显然不明白 任何帮助都将不胜感激 期待中的感谢 function initialize() { var infowindow = new google.map

我已经为此奋斗了一整天

下面的代码从flask中获取了一个jinja数组,如果我不想要一个信息框,那么它就可以正常工作

在下面添加信息框代码,它将显示一个标记,没有信息窗口。这让我快发疯了。我还想使用集群,因为我有大约500个管脚,但这是一个二阶问题

我已经看了这么多的答案,但都没有结果,有一种叫做闭包的魔法,它似乎是问题的核心,我显然不明白

任何帮助都将不胜感激

期待中的感谢

function initialize() {
    var infowindow = new google.maps.InfoWindow();
    var map = new google.maps.Map(
    document.getElementById('map_canvas'), {
      center: new google.maps.LatLng(10.455177, 12.584731),
      zoom: 2,
      mapTypeId: google.maps.MapTypeId.ROADMAP
  });


function addMarker(lat,long,name,content){
var info = content;
var message = name;
var point = new google.maps.LatLng(lat,long);
var newmarker = new google.maps.Marker({position: point,
                                     map: map,
                                     title: name
                                    });
\\take this block of code out and I get all the markers fine 
 google.maps.AddListener(point, 'click', function(map, newmarker){
      infowindow.setContent(info)
      infowindow.open(map,newmarker)
  });
}

 {% for marker in markers %}  
         addMarker({{marker.lat}},{{marker.long}},'{{marker.name}}', '{{marker.url}}');        
 {% endfor %}
}
google.maps.event.addDomListener(window, 'load', initialize);
</script> 
函数初始化(){
var infowindow=new google.maps.infowindow();
var map=new google.maps.map(
document.getElementById('map_canvas'){
中心:新google.maps.LatLng(10.455177,12.584731),
缩放:2,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
函数addMarker(lat、long、name、content){
var信息=内容;
var消息=名称;
var point=new google.maps.LatLng(lat,long);
var newmarker=newgoogle.maps.Marker({position:point,
地图:地图,
标题:姓名
});
\\把这段代码去掉,我就能把所有的标记都弄清楚了
google.maps.AddListener(指向“单击”,函数(map,newmarker){
infowindow.setContent(info)
infowindow.open(地图、新标记)
});
}
{标记%中的标记为%s}
addMarker({marker.lat},{{marker.long},{{{marker.name}},{{{marker.url}}');
{%endfor%}
}
google.maps.event.addDomListener(窗口“加载”,初始化);

检查事件侦听器的语法

应该是
google.maps.event.addListener(newmarker,'click',function(evt){


您是否查看了javascript控制台?您的事件侦听器中有一个输入错误。
marker
不存在,该变量在代码中称为
newmarker
infowindow.open(map,newmarker)
我对其进行了编辑,其中当然有新的标记-在添加侦听器时,除了最后一个pin之外,仍然无法显示所有pin,而不是信息窗口:(如果不是那讨厌的Jinja代码,GeocodeZIP会把它钉死的。答案是测试python列表是否为空,如果不是,则将其通过一个过滤器,请参见这里:
{%if theRecord%}var markers={{{theRecord|tojson | safe};{%endif%}
完成后,所有使用(var i=0;i标准示例都可以正常工作了。感谢您的努力!这是两个过滤器,而不是一个,Python列表
theRecord
被转换为json,允许使用标记[i]对数组项进行索引。名称或标记[i].url,但仅当它被进一步筛选并使用安全允许转义代码时。希望这对其他人有所帮助。