我的 JQM 站点上有一个无法正确加载的 OpenLayers 地图。我确信这取决于 onclick() 方法,但我不太确定其他任何方法。我已经查看了 JQuery 站点上的 .click() 方法,但由于该方法的工作原理,我认为这不会起作用。
onclick() 方法位于一个列表中,并加载一个 JS 函数来更新另一个页面上的 html。该列表由一个 PHP 循环填充,该循环从数组中获取数据;更改的 HTML 取决于选择的项目。该函数还在同一页面上创建地图。
这是 PHP 循环:
<?php
for ($row = 0; $row < $arrlength; $row++)
{
echo "<li>";
echo "<a href='#room-info' onclick='updateRoom(\"".$rooms[$row]["Room"]."\", \"".$rooms[$row]["Building"]."\", \"".$rooms[$row]["Campus"]."\", \"".$rooms[$row]["X"]."\", \"".$rooms[$row]["Y"]."\");'>";
echo $rooms[$row]["Room"];
echo "</a>";
echo "</li>";
}
?>
这是JS函数:
function updateRoom(roomNumber, building, campus, xCoor, yCoor)
{
x=document.getElementById("roomInfo"); // Find the element
x.innerHTML="<h1>Room</h1>" + roomNumber + "<br><h1>Building</h1>" + building + "<br><h1>Campus</h1>" + campus; // Change the content
var map, baseLayer;
var options = {numZoomLevels: 7, isBaseLayer: true,};
map = new OpenLayers.Map('map');
baseLayer = new OpenLayers.Layer.Image("College Lane","college-lane-large.png",
new OpenLayers.Bounds(-1000, -1000, 1000, 1000),
new OpenLayers.Size(1500,1500), options);
map.addLayer(baseLayer);
var center = new OpenLayers.LonLat(xCoor,yCoor);
map.setCenter(center ,0);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
var size = new OpenLayers.Size(21,25);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png',size,offset);
var markers = new OpenLayers.Layer.Markers( "Marker" );
map.addLayer(markers);
markers.addMarker(new OpenLayers.Marker(center), icon);
}
一旦选择了一个项目,您就会被带到一个页面,该页面显示更新的 HTML 以及 OpenLayers 地图。html 文本正确更新,但 OpenLayers 地图为空。
我会把代码放在这里,但有很多。我的网站可以在这里找到:http: //getontinternet.com/fyp/index.php
要进入麻烦的页面,您必须首先单击“查找房间”,搜索 LC154,因为这是我唯一正确设置的项目。选择该房间后,它将显示该页面。
我已经尝试解决这个问题好几天了,所以如果有人真的设法弄清楚它为什么不起作用,我将非常感激:)