Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从traceroute输出循环显示google maps v3中的标记_Php_Javascript_Loops_Google Maps Api 3_Markers - Fatal编程技术网

Php 如何从traceroute输出循环显示google maps v3中的标记

Php 如何从traceroute输出循环显示google maps v3中的标记,php,javascript,loops,google-maps-api-3,markers,Php,Javascript,Loops,Google Maps Api 3,Markers,我是php mysql和google maps v3的新手。我在谷歌地图v3中遇到了一个问题。我将traceroute建立在网络上,并将traceroute的结果映射到googlemapsv3中,这是我大学教育的最后一个项目。我试过很多教程,但都不管用。我也尝试过这个论坛上的教程,但没有任何效果。所以我的问题是我无法显示从数据库中获取位置数据的多个标记。也许是因为我是新手,不知道怎么做。我还混淆了显示标记的循环。下面是php代码: <?php error_reporting(E_ALL ^

我是php mysql和google maps v3的新手。我在谷歌地图v3中遇到了一个问题。我将traceroute建立在网络上,并将traceroute的结果映射到googlemapsv3中,这是我大学教育的最后一个项目。我试过很多教程,但都不管用。我也尝试过这个论坛上的教程,但没有任何效果。所以我的问题是我无法显示从数据库中获取位置数据的多个标记。也许是因为我是新手,不知道怎么做。我还混淆了显示标记的循环。下面是php代码:

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

global $ip, $host_name,  $host_ip, $output, $integer;

$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());
} 

function get_ip()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

$ip = get_ip(); 

?>
<!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()">
<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]);
}

    ?>
    <script type="text/javascript">
        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
    }
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    <?php
    $posisi = array();
    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)){
    $posisi[]= 'new google.maps.LatLng(' . $location['latitude'] . ', ' . $location['longitude'] . ')';
    }
    }
    ?>
    <!-- var infoWindow = new google.maps.InfoWindow; -->
     var point = [<?php echo implode(',', $posisi) ?>];
     var icon = pinImage;
     var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: pinImage,
        shadow: pinShadow
        });
             marker.setMap(map);
        }
    </script>
<div id="map_canvas" style="width: 900px; height: 500px"></div>
</body>
</html>

PHP/MySQL和googlemaps示例
//

问题是你没有给你的标记任何位置:

var point = [new google.maps.LatLng(1.3667, 103.8000),new google.maps.LatLng(1.3667, 103.8000),new google.maps.LatLng(37.4192, -122.0574),new google.maps.LatLng(37.4192, -122.0574),new google.maps.LatLng(37.4192, -122.0574),new google.maps.LatLng(37.4192, -122.0574)];

var icon = pinImage;

for (var i = 0; i < point.length; i++) {
     var marker = new google.maps.Marker({
        map: map,
        position: point[i],
        icon: pinImage,
        shadow: pinShadow
        });
}
因此,您所做的只是将位置创建为空数组。您需要在此处为该位置创建一个LatLng()


现在你有了一系列的点:

您需要做的是在阵列上循环,为每个阵列创建一个标记:

var point=[new google.maps.LatLng(1.3667103.8000),new google.maps.LatLng(1.3667103.8000),new google.maps.LatLng(37.4192,-122.0574),new google.maps.LatLng(37.4192,-122.0574),new google.maps.LatLng(37.4192,-122.0574)];
var图标=pinImage;
对于(变量i=0;i

另外,setMap行是多余的,因为当你说map:map时,你只需要这么做。

对不起,duncan先生,我已经编辑了我问题中的代码。因此点不是空数组。那么对于我的新编辑代码,显示标记的代码有什么问题吗??提前谢谢。抱歉,不清楚。因此代码仍然不显示标记。你介意帮我吗,邓肯先生??我不知道如何修复它:(邓肯先生,这真的很有效!!!天哪,我真的非常感谢你。你的帮助对我来说真的很重要。我不能给你任何东西。但我可以向上帝祈祷,愿上帝永远保佑你,让你在这个论坛上对他人所做的一切更加成功。我是印尼新手,我真的很感激你对我所做的一切。谢谢你,我很高兴。)uch:)当然可以,邓肯先生。但我不知道怎么做。因为我是这个论坛的新手。你能给我解释一下怎么做吗?点击我答案左边的复选框。请看:发布一个简短、完整、正确的示例()肯定会增加你得到答案的机会。没有多少勇敢的人会通过所有的代码来找出错误和/或如何修复。对不起,@Alex,我不能清楚地理解它。请告诉我你的意思。如果我英语不好,我很抱歉。谢谢。谢谢你编辑了我对@Alex的拼写。我会小心写什么。因为我还在学说英语。拼写没那么重要,SSCE更重要。很高兴你找到了答案。继续。
 var point = [];
 var icon = pinImage;

 var marker = new google.maps.Marker({
    map: map,
    position: point,
    icon: pinImage,
    shadow: pinShadow
    });
 var point = [new google.maps.LatLng(1.3667, 103.8000),new google.maps.LatLng(1.3667, 103.8000),new google.maps.LatLng(37.4192, -122.0574),new google.maps.LatLng(37.4192, -122.0574),new google.maps.LatLng(37.4192, -122.0574),new google.maps.LatLng(37.4192, -122.0574)];

 var icon = pinImage;

 var marker = new google.maps.Marker({
    map: map,
    position: point,
    icon: pinImage,
    shadow: pinShadow
    });

    marker.setMap(map);
var point = [new google.maps.LatLng(1.3667, 103.8000),new google.maps.LatLng(1.3667, 103.8000),new google.maps.LatLng(37.4192, -122.0574),new google.maps.LatLng(37.4192, -122.0574),new google.maps.LatLng(37.4192, -122.0574),new google.maps.LatLng(37.4192, -122.0574)];

var icon = pinImage;

for (var i = 0; i < point.length; i++) {
     var marker = new google.maps.Marker({
        map: map,
        position: point[i],
        icon: pinImage,
        shadow: pinShadow
        });
}