我在索引页上显示 Google 地图时遇到问题。这是我目前正在尝试的方式:
- 使用GoogleMapApiV3 PHP 类 ( http://pastebin.com/LCb3mP7f )
- 使用以下方法在 PHP 文件 (loadMap.php) 中生成我的地图:
$gmap->generate();
echo $gmap->getGoogleMap();
3 - 使用 AJAX 获取地图的脚本(基本上是什么echo
)然后使用eval()
.
这是我的refresh.js页面的内容:
$(document).ready(function() {
// show map and news
refreshGUI();
});
// Update every 5 seconds
setInterval('refreshData()', 5000);
setInterval('refreshGUI()', 5000);
function refreshData() {
$.post('index.php?js=refresh');
}
;
// Refreshes the page elements
function refreshGUI() {
refreshNews();
refreshMap();
}
function refreshNews() {
$.post('index.php?js=lastNews&lim=3', function(data) {
var s = '';
data = data.childNodes.item(0);
for (var i = 0; i <= data.childNodes.length; i++) {
data2 = data.childNodes.item(i);
s += ('<div>' + data2.childNodes.item(1).textContent + '</div>');
$('#newspane #news').html(s);
}
$('#newspane #news').html($('#newspane #news').html() + s);
});
}
function refreshMap() {
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
var myDiv = document.getElementById('map');
myDiv.innerHTML = xmlhttp.responseText;
var myScripts = myDiv.getElementsByTagName("script");
if (myScripts.length > 0) {
eval(myScripts[0].innerHTML);
}
}
}
// js=loadMap is my loadMap.php file, where I echo the map's script.
xmlhttp.open("GET", "index.php?js=loadMap", true);
xmlhttp.send();
}
我的问题:地图仅在我使用 CTRL+F5 手动刷新索引页面时显示。然后它在 5 秒后消失(我猜这是因为setInterval()
)
我怎样才能解决这个问题?这样做的最佳方法是什么?
这整件事让我发疯了,提前感谢任何帮助!
halpsb.