2

我正在处理一个 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)

;

4

0 回答 0