Google地图v3 api中的标记不再访问内容

时间:2012-02-10 17:09:42

标签: php mysql google-maps google-maps-markers

我通过在以下代码行中更新Google maps API版本来解决以下问题:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?v=3.9
&sensor=false"> </script>

但现在我又遇到了同样的问题!我再次更新了版本(到上面看到的3.9),但内容再次没有显示在侧边栏div中(见下文)。我没有对这个代码做过任何事情,自2011年12月以来一直在线。有什么想法会突然停止工作吗?


我有一个应用程序使用谷歌地图v3与PHP和MySQL在地图上显示标记。鼠标悬停时连接到信息窗口内容(从数据库中绘制),然后在单击时显示侧面div中的新内容(也从数据库中绘制)。见:www.corkmemorymap.org

所有这一切都很好,然后突然间没有。单击栏上不再显示侧栏。什么都没发生。如果您使用地图上方的主题搜索,您可以看到应该发生的事情(点击选择主题时在地图上下拉的其中一个故事)。

此页面的代码基于Google地图文档: http://code.google.com/apis/maps/articles/phpsqlajax_v3.html
我正在使用php echo函数来处理XML文件(这是因为托管组织有一个旧版本的php)。

我添加了此功能,以便在点击时获取侧边栏内容:

function contentBox(marker, map, sidebar, winHtml, infoWindow) {
    google.maps.event.addListener(marker, 'click', function() {
    document.getElementById('sidebar').innerHTML=winHtml;
    /*closes the info window when users clicks the marker 
    and launches the content*/
    infoWindow.close(map, marker);

    });
}

它位于较大的ajax函数内,也在该函数内调用。

哦,这是winHtml变量:

var winHtml =
      '<!DOCTYPE html>' +
      '<head>' +
      '<link rel="stylesheet" href="mapstyle4.css">' +
      '</head>' +
      '<body>' +
      '<div id="sidebar">' + '<h2>' + ph_title + '</h2>' 
        + '</header>' +
      '<div id="photos">' +
      '<img width="220" src="'+ph_web+'"/>' +
      '</div>' +
      '<div id="trans">' + trans_xcrpt +
      '</div>' +
      '<div id="audio">' +
      '<audio autoplay="autoplay" controls="controls">' +
      '<source src="'+audio_ogg+'" type="audio/ogg">' +
      '<source src="'+audio_mp3+'" type="audio/mpeg">' +
      '</audio>' +
      '</div>' +
      '</body>' +
      '</html>';

我也在本地测试了这个(在我的MAMP上),它也没有在那里工作,这表明它已经在谷歌发生了变化。但是什么?如何找出已更改的内容以便我可以调整代码?这有发生在其他人身上吗?没有错误消息和代码已经工作了6个月,但突然间我不会在故障排除方面有点亏。

1 个答案:

答案 0 :(得分:1)

您网页第128行的DOM引用中存在错误,从而产生以下JS错误:

TypeError: 'null' is not an object (evaluating 'document.getElementById('infoWindow').parentNode')

第128行的代码中也有换行符。

我建议删除对parentnode的引用,以便您的代码如下所示:

document.getElementById('infoWindow').style.overflow = 'visible';

一旦按照描述设置了JS,我就可以通过标记点击来获取侧边栏。