我正在尝试在每个标记信息窗口中显示一个标题,该标题将显示事件的名称。现在我只能在JSON数组中显示最后一个元素名称,并且不确定如何使其他元素成为他们的事件标题。任何帮助表示赞赏,谢谢!我还希望最终显示事件名称以及其他一些元素,例如" eventPhone"等...
仅显示最后一个元素的信息窗口:
数组的样子:
我的添加标记功能:
addMarkersMap(markers){
for(let marker of markers)
{
var loc = marker.calEvent.locations[0]['coords'];
var name = marker.calEvent['eventName'];
console.log(name); //displays name of each event within this object
marker = new google.maps.Marker({
position: loc,
map: this.map,
});
var infoWindow = new google.maps.InfoWindow({
//content: name
});
google.maps.event.addListener(marker, 'click', function() {
infoWindow.open(this.map, marker);
infoWindow.setContent(name);
});
}
}
JSON:
http://app.toronto.ca/cc_sr_v1_app/data/edc_eventcal_APR?limit=500
答案 0 :(得分:1)
编辑:所以,只需将您的所有var
更改为let
,即可启用let
正确的块范围变量声明,并遵循惯例。
您可能遇到关闭问题,其中marker
的值是最后一个。
虽然我们应该解决这个问题,因为这会让你的marker
处于阻止范围内,但请尝试将addListener
变成IIFE,看看是否有帮助:
(function(marker) {
google.maps.event.addListener(marker, 'click', function() {
infoWindow.open(this.map, marker);
});
}(marker));
关于闭包的更多信息here