Jinja Google 地图与 Flask 中的多个信息窗口

-1 投票
1 回答
1091 浏览
提问于 2025-04-18 08:18

我今天一直在为这个问题苦恼。

下面的代码从Flask获取一个jinja数组,如果我不想要信息框的话,一切都运行得很好。

但是一旦我添加了下面的信息框代码,它就只显示一个标记,并且没有信息窗口。这让我非常困扰。我还想使用聚合功能,因为我有大约500个标记,但这只是个次要问题。

我在StackOverflow上看过,尝试了很多答案,但都没有解决。似乎有一种叫做闭包的神奇东西,正是这个问题的核心,但我显然不太理解。

任何帮助都将不胜感激。

谢谢大家的期待。

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> 

1 个回答

1

检查一下事件监听器的语法。

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

这里有个示例

撰写回答