我正在处理一个 ACARS 页面,该页面应该显示带有飞机标记的地图,并且它们应该根据它们在模拟器中的实际位置移动。他们的实际位置每分钟都会使用不同的 Java GUI 输入到 MySQL 表中,该 GUI 使用 telnet 连接 sim。
现在,为此,我基本上是使用这个:
setInterval(function(){
$("#tracking").load("atc.php #tracking");
$("#mapcode").load("update_map.php");
}, 30000);
其中#tracking Division 用于ACARS 表,其中包含飞机上的数据,#mapcode Division 用于更新标记的代码。顺便说一句,ACARS 表工作和更新正常,只是地图有问题。
这是update_map.php中的代码
<?php
echo '<script type="text/javascript">
function updateMap() {
';
mysql_connect("localhost", "<hidden here>", "<hidden here>");
mysql_select_db("virtua6_flightdeck");
$sql = mysql_query(" SELECT * FROM `flightdeck_acars` ");
echo 'map.clearOverlays();';
while($result = mysql_fetch_assoc($sql)) {
echo 'aircraftPos = new google.maps.LatLng(' . $result['lat'] . ', ' . $result['lon'] . ');
';
$code = substr($result['flightnum'], 0, 3);
if ($result['pilotid'] > 999) {
$pilotid = $code . $result['pilotid'];
} elseif ($result['pilotid'] > 99) {
$pilotid = $code . '0' . $result['pilotid'];
} elseif ($result['pilotid'] > 9) {
$pilotid = $code . '00' . $result['pilotid'];
} else {
$pilotid = $code . '000' . $result['pilotid'];
}
$hdgInt = $result['hdg'];
echo 'new google.maps.Marker({
position: aircraftPos,
map: map,
title: "' . $result['flightnum'] . ' [' . $result['depicao'] . '-' . $result['arricao'] . ']",
icon: "plane/' . $hdgInt . '.png"
});';
}
echo '}
</script>
';
?>
但这似乎并没有更新地图。顺便说一句,在获取地图代码分区中显示的文本后添加一些文本,唯一的问题是地图没有更新。这就是我如何称呼地图。顺便说一句,地图有效,只是没有更新。
<div id="map" style="width:100%; height: 400px;"></div>
<script type="text/javascript">
var map = new google.maps.Map(document.getElementById('map'), {
mapTypeId: google.maps.MapTypeId.TERRAIN
});
var markerBounds = new google.maps.LatLngBounds();
var aircraftPos;
<?php
# PHPScript to create markers for flights
mysql_connect("localhost", "virtua6_omega", "Dogsrock99");
mysql_select_db("virtua6_flightdeck");
$sql = mysql_query(" SELECT * FROM `flightdeck_acars` ");
while($result = mysql_fetch_assoc($sql)) {
echo 'aircraftPos = new google.maps.LatLng(' . $result['lat'] . ', ' . $result['lon'] . ');';
$code = substr($result['flightnum'], 0, 3);
if ($result['pilotid'] > 999) {
$pilotid = $code . $result['pilotid'];
} elseif ($result['pilotid'] > 99) {
$pilotid = $code . '0' . $result['pilotid'];
} elseif ($result['pilotid'] > 9) {
$pilotid = $code . '00' . $result['pilotid'];
} else {
$pilotid = $code . '000' . $result['pilotid'];
}
$hdgInt = $result['hdg'];
?>
new google.maps.Marker({
position: aircraftPos,
map: map,
title: "<?php echo $result['flightnum'] . ' [' . $result['depicao'] . '-' . $result['arricao'] . ']'; ?>",
icon: "<?php echo 'plane/' . $hdgInt . '.png'; ?>"
// labelContent: "<?php echo $result['flightnum']; ?>",
// labelAnchor: new google.maps.Point(22, 0),
// labelClass: "labels", // the CSS class for the label
// labelStyle: {opacity: 0.5}
});
markerBounds.extend(aircraftPos);
<?php
}
?>
// At the end markerBounds will be the smallest bounding box to contain
// our 10 random points
// Finally we can call the Map.fitBounds() method to set the map to fit
// our markerBounds
map.fitBounds(markerBounds)
;