私はphp mysqlとgoogle maps v3の初心者です。Google マップ v3 で問題が発生しました。大学教育の最終プロジェクトのために、traceroute を Web ベースで作成し、traceroute の結果を Google マップ 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>
皆さんが私のコードを読んでくれたら、本当に申し訳ありません。めちゃくちゃに見えます。コードをうまく表示する方法がわからないためです。私が助けてもらいたい最も重要なことは、地図です。すべてのマーカーを表示する方法について。特にルーピング。Googleマップにはマーカーが表示されません。マップのみを表示します。この質問を読んだすべてのマスターのために。できるだけ早くあなたの助けが必要です。私の英語が下手で、皆さんに私の間違いがあった場合は、本当に申し訳ありません。前もって感謝します。