15

我试图使更改显示在作为信息窗口内容的 DIV 中的内容成为可能。我已经能够在信息窗口中将内容从 Hello 更改为 YO。问题是当我关闭信息窗口并重新打开它时,更新的内容会恢复为原始内容。下面是我的代码:

  google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
      if (event.type == google.maps.drawing.OverlayType.MARKER) {
          //event.overlay.setTitle("Hello");
          var infowindow = new google.maps.InfoWindow({
              content: '<div id="content" onmouseover="updateContent()">Hello</div>',
              maxWidth: 10
          });
          google.maps.event.addListener(event.overlay, 'click', function() {
              infowindow.open(map, event.overlay);
          });
      }
  });

  function updateContent() {
      document.getElementById('content').innerHTML = "Yo";
  }

我基本上想创建一个默认信息窗口,并允许用户在页面上放置标记后输入自己的文本......

4

3 回答 3

14

我发现上面接受的答案不起作用,因为我必须使用 setContent() 如下:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function (event) {
    if (event.type == google.maps.drawing.OverlayType.MARKER) {
        //event.overlay.setTitle("Hello");
        var infowindow = new google.maps.InfoWindow({
            content: '<div id="content" onmouseover="updateContent()">Hello</div>',
            maxWidth: 10
        });
        google.maps.event.addListener(event.overlay, 'click', function () {
            infowindow.open(map, event.overlay);
        });
    }
});
function updateContent() {
    infowindow.setContent("Yo");
}
于 2015-09-04T00:32:33.767 回答
12

您必须通过 setContentHTML 方法设置内容

var infowindow ;
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
    if (event.type == google.maps.drawing.OverlayType.MARKER) {
        //event.overlay.setTitle("Hello");
        infowindow = new google.maps.InfoWindow({
            content: '<div id="content" onmouseover="updateContent()">Hello</div>',
            maxWidth: 10
        });
        google.maps.event.addListener(event.overlay,'click',function()
        infowindow.open(map,event.overlay);
     });
}});

function updateContent(){
    infowindow.setContent("YO");
} 
于 2012-09-05T21:04:03.507 回答
1

最好的方法是不使用 HTML 字符串,而是使用 DOM 元素来创建 InfoWindow 的内容。所以替换:

new google.maps.InfoWindow({
        content: '<div id="content" onmouseover="updateContent()">Hello</div>'
    });

和:

var domElement = document.createElement('div');
domElement.innerHTML = '<div id="content" onmouseover="updateContent()">Hello</div>';
new google.maps.InfoWindow({
        content: domElement
    });

现在您可以轻松地访问 divdocument.getElementById("content");并进行所有您想要的 DOM 操作。

于 2019-04-04T22:57:50.393 回答