无法在traceroute结果中显示谷歌地图v3中的多个标记

时间:2012-06-05 21:36:26

标签: php google-maps-api-3 traceroute

我是php mysql和google maps v3的新手。我在谷歌地图v3有问题。我做了traceroute web,并将traceroute的结果映射到google maps v3中,作为我大学教育的最终项目。我已经尝试了这么多教程,但它没有用。我也试过这个论坛的教程,但没有任何效果。所以我的问题是我无法显示多个标记,我从数据库中获取位置数据。也许是因为我是新手而且不知道该怎么做。我也混淆循环来显示标记。所以这是代码

<?php
error_reporting(E_ALL ^ (E_NOTICE));
ini_set('max_execution_time', 360);
$enable_log_user = FALSE;

global $ip, $host_name,  $host_ip;

$host  = @$_POST['host']; 
$trace = @$_POST['trace'];
$self  = $_SERVER['PHP_SELF'];

include("phpsqlajax_dbinfo.php");
$connection = mysql_connect ('127.0.0.1', $username, $password);
if (!$connection) {  die('Not connected : ' . mysql_error());} 

$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
  die ('Can\'t use db : ' . mysql_error());
} 

?>
<!DOCTYPE html >
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>PHP/MySQL & Google Maps Example</title>
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
    //<![CDATA[

 </script>
  </head>
<body onload="initialize()">
var pinImage = new google.maps.MarkerImage ("http://chart.apis.google.com/chart?chst=d_map_xpin_letter_withshadow&chld=pin_star|%E2%80%A2|CC3300|000000|FF9900",
        new google.maps.Size (70, 83),
        new google.maps.Point (0,0),
        new google.maps.Point (10,34));
    var pinShadow = new google.maps.MarkerImage ("http://chart.apis.google.com/chart?chst=d_map_pin_shadow",
        new google.maps.Size (89, 85),
        new google.maps.Point (0, 0),
        new google.maps.point (12, 35));

    var map;
    function initialize() {
    var myLatlng = new google.maps.LatLng(41.258531,-96.012599);
    var myOptions = {
    zoom: 2,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    <!-- var infoWindow = new google.maps.InfoWindow; -->
    } 
    </script>
    <form name="tools" action="<?php $self ?>" method="post">
    <p><font size="2">Your IP is <?php $ip ?> </font></p>
    <input type="text" name="host" value=""></input>
    <input type="submit" name="trace" value="Traceroute!"></input>
    </form>
    <?php
    if ($_POST['submit']) 
{
    if (($host == 'Enter Host or IP') || ($host == "")) {
        echo '<br><br>You must enter a valid Host or IP address.';
        exit; } 

    if(eregi("^[a-z]",  $host))
    {
        $host_name = $host;
        $host_ip = gethostbyname($host);
    }
    else
    {
        $host_name = gethostbyaddr($host);
        $host_ip = $host;
    } 
}


    $host= preg_replace ("[-a-z0-9!#$%&\'*+/=?^_`{|}~]","",$host);
    $command = "tracert $host";
    $fp = shell_exec("$command 2>&1");
    $output .= (htmlentities(trim($fp)));
    echo "<pre>$output</pre>";
    echo '<br/>';

    $array = array($output);
    $space_separated = implode(" ", $array);

    function explodeRows($data) {
      $rowsArr = explode("\n", $data);
      return $rowsArr;
    }
    function explodeTabs($singleLine) {
      $parsed = preg_split('/ +/', $singleLine);
      return $parsed;
    }
    $data     = $space_separated;
    $rowsArr  = explodeRows($data);

    for($a=3;$a<count($rowsArr)-2;$a++) 
    {
        $lineDetails[$a] = explodeTabs($rowsArr[$a]);

        if (empty($lineDetails[$a][9]))
        {
            $ipList[] = $lineDetails[$a][8];
        }
        else
        {
            $ipList[] = substr($lineDetails[$a][9], 1, -1);
        }
    }

    for ($b=0; $b<count($ipList); $b++)
    {
        if ($ipList[$b] != "")
        {
            $arrLine[]=$ipList[$b];
        }
    }

function ip_address_to_number($IPaddress)
{
    if ($IPaddress == "") {
        return 0;
    } else {
        $ips = explode (".", "$IPaddress");
        return ($ips[3] + $ips[2] * 256 + $ips[1] * 256 * 256 + $ips[0] * 256 * 256 * 256);
    }
}
for($c=0; $c<count($arrLine); $c++) {
$integer[] = ip_address_to_number($arrLine[$c]);
}
    foreach ($integer as $lokasi) {
    $query = "SELECT cl.locId, cl.country as country, cl.region as region, cl.city as city, cl.postalCode as postalCode, cl.latitude as latitude, cl.longitude as longitude, cl.metroCode as metroCode, cl.areaCode as areaCode
    FROM (SELECT locId as idcihuy FROM cityblocks WHERE $lokasi BETWEEN startIpNum AND endIpNum) cb, citylocation cl WHERE cb.idcihuy = cl.locId";
    $result = mysql_query($query);
    while ($location = @mysql_fetch_assoc($result)){
    $country[] = $location['country'];
    $region[] = $location['region'];
    $city[] = $location['city'];
    $postalCode[] = $location['postalCode'];
    $latitude[] = $location['latitude'];
    $longitude[] = $location['longitude'];
    $metroCode[] = $location['metroCode'];
    $areaCode[] = $location['areaCode'];
    }
    }
    ?>
    <script type="text/javascript">
     var point = new google.maps.LatLng(<?php echo $latitude ?>, <?php echo $longitude; ?>);
     var icon = pinImage;
     var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: pinImage,
        shadow: pinShadow
        });
    </script>
<div id="map_canvas" style="width: 900px; height: 500px"></div>
</body>
</html>

好的,这是我的html源代码,是的,它看起来有些不对劲:

<!DOCTYPE html >

  <head>

    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>

    <title>PHP/MySQL & Google Maps Example</title>

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

    <script type="text/javascript">

    //<![CDATA[

    var pinImage = new google.maps.MarkerImage ("http://chart.apis.google.com/chart?chst=d_map_xpin_letter_withshadow&chld=pin_star|%E2%80%A2|CC3300|000000|FF9900",

        new google.maps.Size (70, 83),

        new google.maps.Point (0,0),

        new google.maps.Point (10,34));

    var pinShadow = new google.maps.MarkerImage ("http://chart.apis.google.com/chart?chst=d_map_pin_shadow",

        new google.maps.Size (89, 85),

        new google.maps.Point (0, 0),

        new google.maps.point (12, 35));



    var map;

    function initialize() {

    var myLatlng = new google.maps.LatLng(41.258531,-96.012599);

    var myOptions = {

    zoom: 2,

    center: myLatlng,

    mapTypeId: google.maps.MapTypeId.ROADMAP

    }

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    <!-- var infoWindow = new google.maps.InfoWindow; -->

    } 

    </script>

  </head>

<body onload="initialize()">

<form name="tools" action="" method="post">

    <p><font size="2">Your IP is  </font></p>

    <input type="text" name="host" value=""></input>

    <input type="submit" name="trace" value="Traceroute!"></input>

    </form>

    <pre>Tracing route to detik.com [203.190.242.69]
over a maximum of 30 hops:

  1     *        *        *     Request timed out.
  2   199 ms   177 ms   179 ms  192.168.36.11 
  3   385 ms   359 ms   299 ms  192.168.39.8 
  4  2005 ms  1400 ms  1536 ms  192.168.39.8 
  5  1857 ms  1277 ms  1874 ms  192.168.36.11 
  6  2359 ms  3401 ms     *     192.168.39.196 
  7  2477 ms  2641 ms     *     114.127.254.78 
  8  2230 ms  1203 ms  1570 ms  114.127.254.2 
  9  1595 ms  1642 ms  3005 ms  giga-0-0.openixp.net [218.100.27.129] 
 10     *        *        *     Request timed out.
 11     *     2517 ms  3294 ms  203.190.244.6 
 12  1632 ms  2961 ms  1297 ms  203.190.242.69 

Trace complete.</pre><br/>

    <script type="text/javascript">

     var point = new google.maps.LatLng(-5.0000, 120.0000);

     var icon = pinImage;

     var marker = new google.maps.Marker({

        map: map,

        position: point,

        icon: pinImage,

        shadow: pinShadow

        });

    </script>

<div id="map_canvas" style="width: 900px; height: 500px"></div>

</body>

</html>
好吧,如果你们看了我的代码,我真的很抱歉。看起来很乱。因为我不知道如何很好地显示代码。我希望得到帮助的最重要的事情是在地图中。如何显示所有标记。特别是循环。谷歌地图不显示标记。它只显示地图。对所有读过这个问题的大师来说都是如此。我只是需要你的帮助。如果我的英语不好而且我的错误给你们,我真的很抱歉。提前谢谢。

0 个答案:

没有答案