私はphpmysqlとgooglemapsv3の初心者です。グーグルマップv3に問題があります。tracerouteをWebベースにし、tracerouteの結果をGoogleマップv3にマッピングして、大学教育の最終プロジェクトに使用しました。たくさんのチュートリアルを試しましたが、うまくいきませんでした。このフォーラムのチュートリアルも試しましたが、何も機能しませんでした。だから私の問題は、データベースから位置データを取得した複数のマーカーを表示できないことです。たぶん私は初心者で、やり方がわからないからです。また、マーカーを表示するためのループと混同します。だからここに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>
そしてこれは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[
</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 youtube-ui.l.google.com [173.194.38.129]
over a maximum of 30 hops:
1 204 ms 238 ms 233 ms 192.168.1.1
2 992 ms 241 ms 200 ms 192.168.1.11
3 852 ms 239 ms 502 ms 192.168.4.36
4 1079 ms 257 ms 281 ms 192.168.4.36
5 856 ms 321 ms 306 ms 192.168.1.11
6 * * * Request timed out.
7 1073 ms 239 ms 198 ms 205.128.240.180.telin.sg [180.240.128.205]
8 216 ms 292 ms 281 ms 109.190.240.180.telin.sg [180.240.190.109]
9 239 ms 239 ms 299 ms 72.14.215.170
10 1838 ms 539 ms 508 ms 209.85.243.158
11 467 ms 998 ms 1098 ms 72.14.233.79
12 1601 ms 239 ms * sin04s01-in-f1.1e100.net [173.194.38.129]
13 790 ms 356 ms 179 ms sin04s01-in-f1.1e100.net [173.194.38.129]
Trace complete.</pre><br/> <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);
<!-- var infoWindow = new google.maps.InfoWindow; -->
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);
}
</script>
<div id="map_canvas" style="width: 900px; height: 500px"></div>
</body>
</html>
さて、皆さんが私のコードを読んでくれたら本当に申し訳ありません。散らかっています。コードをうまく表示する方法がわからないからです。私が助けたい最も重要なことは地図にあります。すべてのマーカーを表示する方法について。特にループ。グーグルマップはマーカーを表示しません。地図のみを表示します。それで、この質問を読んだすべてのマスターのために。できるだけ早くあなたの助けが必要です。私の英語が下手で、あなたたちに私の間違いがあったら本当にすみません。