不仅在 init 上打开时调用信息窗口内容的函数

Call function for content of infowindow when opening not only on init

我有一些带有标记的对象。这些对象具有动态数据,我想将它们输出到对象标记的信息窗口中。 到目前为止,这就是我所拥有的:

function createRandomObjectWithAMarker() {
  var marker;
  var aData = "dataToDisplay";
  var infowindow = new google.maps.InfoWindow({
    content:callThisFunctionWhenOpenWindow(aData)
  });
  marker.addListener('click', function() {
    infowindow.open(map, marker);
  });
  randomObject = {
    /*
    someData
    */
    marker: marker
  };
  return randomObject;
}

而且我希望在单击标记以将 return modifiedData 显示为 infoWindowcontent 时调用此函数。

function callThisFunctionWhenOpenWindow(aData){
  /*
  do some stuff on aData
  */
  return modifiedData;
}

但实际上,这个函数被调用了一次:只有当我用 createRandomObjectWithAMarker() 的调用初始化 randomObject 时。因此,如果我在一段时间后显示 infoWindow,当数据与脚本启动时的数据不同时,它仍会显示相同的输出。 有什么办法吗?如果是怎么办?

试试这样的东西?

这样信息窗口(及其数据)仅在您单击标记时创建

function createRandomObjectWithAMarker() {
  var marker;
  var aData = "dataToDisplay";
  marker.addListener('click', function() {
    var infowindow = new google.maps.InfoWindow({
      content:callThisFunctionWhenOpenWindow(aData)
    });
    infowindow.open(map, marker);
  });
  randomObject = {
    /*
    someData
    */
    marker: marker
  };
  return randomObject;
}