google maps APIに関する質問です.


ホームページの閲覧者が,
地図上をクリックして,その地点に印をつけ,コメントをいれ,さらに,それを他の人が見れるというのは可能でしょうか.
もし,可能であれば,具体的なプログラムソースを教えていただけると有難いです.

回答の条件
  • 1人2回まで
  • 登録:2007/02/12 23:12:10
  • 終了:2007/02/13 10:43:16

ベストアンサー

id:ymlab No.2

ymlab回答回数508ベストアンサー獲得回数342007/02/13 00:13:43

ポイント50pt

一応可能です。

ただ、google maps APIのみでは不可能です。

印をつけた場所を格納するデータベースが必要です。

Javascript単体なら、Ajaxなどのテクニックを使って、

HTTP通信させるとよいかも知れません。

私は、PHPで作りました。

参考になるかどうかわかりませんが、

下に紹介します。

(これだけではうごかないと思います。

大体雰囲気だけでもつかんでいただければ・・。)

あと、xmlを制御するxml.phpというものが必要だったりしますが(無料)、

面倒なら、そこはCSVか何かにしてもよいと思います。

menu.phpやcommon.phpや

あたりは他の用途につかっています。

具体的には、

http://gakkouweblog.yh.land.to/admin/googlemap2.php

を参考にしてみてください。

ただ、まだ開発中で、運営しているサーバと漢字コードが

ちがったため、文字化けしてしまいます。

<?php /* vim: set fdm=marker: */
	///////////////////////////////////
	//いろんな場所をgooglemapで登録する
	//////////////////////////////////
	include_once("./menu.php");
	include("../db/xml.php");
	include("common.php");
	include("googlemapcommon.php");
	
	html_start();

	//iniファイルを読み込む
	$inifile = "../setup.ini";
	$hash = parse_ini_file( $inifile );
?>

<?php
	//編集したデータを更新する.
	if ( $_REQUEST['isUpdate'] == "PLOKM" ) {
		//print "更新";
		$filepath = "../db/googlemapdb/googlemappoints.xml";
		$fp = fopen($filepath, "r") or die;
		$buffer = "";
		while ( !feof($fp) ) {
			$buffer .= fgets( $fp, 1024 );
		}
		fclose( $fp );
		$buffer = mb_convert_encoding( $buffer, "UTF-8", "sjis-win" );
		$array = XML_unserialize( $buffer );
		//print_r($array);
	//	print "返還前<br>";
		$countnum = $_REQUEST['countnum'];
		/*print "北緯=".$array[googlemapdata][item][$countnum][lat];
		print "東経=".$array[googlemapdata][item][$countnum][lon];
		print "表題=".$array[googlemapdata][item][$countnum][title];
		print "内容=".$array[googlemapdata][item][$countnum][contents];
		print "画像=".$array[googlemapdata][item][$countnum][imageurl];
		print "<br >";
		
		print "変換後<br/>";
		*/
		$lat = $_REQUEST['lat'];
		$lat = mb_convert_encoding( $lat, "UTF-8", "sjis-win");
		$lon = $_REQUEST['lon'];
		$lon = mb_convert_encoding( $lon, "UTF-8", "sjis-win");
		$title = $_REQUEST['title'];
		$title = mb_convert_encoding( $title, "UTF-8", "sjis-win");
		$contents = $_REQUEST['contents'];
		$contents = mb_convert_encoding( $contents, "UTF-8", "sjis-win");
		
		$array[googlemapdata][item][$countnum][lat] = $lat;
		$array[googlemapdata][item][$countnum][lon] = $lon;
		$array[googlemapdata][item][$countnum][title] = tagWrapper($title);
		$array[googlemapdata][item][$countnum][contents] = tagWrapper($contents);
/*
		print "北緯=".$array[googlemapdata][item][$countnum][lat];
		print "東経=".$array[googlemapdata][item][$countnum][lon];
		print "表題=".$array[googlemapdata][item][$countnum][title];
		print "内容=".$array[googlemapdata][item][$countnum][contents];
*/		
		//画像削除するか.
		if ($_REQUEST['isDelete'] == "on") {
			//画像を削除する.
			if ( file_exists($array['googlemapdata']['item'][$countnum]['imageurl'])) {
				//画像が存在していたら.
				$path = $array['googlemapdata']['item'][$countnum]['imageurl'];
				unlink($path);
				$array['googlemapdata']['item'][$countnum]['imageurl'] = "";
			}
		}
		//画像をアップロードするか.
		/**{{{*/
		if ( $_FILES['uupload']['name'] != "" ) {
			//画像のアップロードは空白ならなにもしない
			$extension = strtolower( strrchr( $_FILES['uupload']['name'], "." ) );
			if ( $extension == ".jpg" || $extension == ".png" ) {
				//指定された拡張子以外はアップロードしない
				$ffp = fopen("../db/googlemapdb/counter.dat", "r") or die;
				$idnum = trim(fgets($ffp, 1024));
				$idnum++;
				fclose( $ffp );
				if ( is_uploaded_file( $_FILES['uupload']['tmp_name'] ) ) {
					//アップロード
					$filepath = getcwd();
					$filepath .= "/../db/googlemapdb/$idnum$extension";
					//画像を圧縮する.
					$length = 320;
					$size = getImageSize($_FILES['uupload']['tmp_name']);
					//縦幅より横幅が大きければ横幅を固定
					if ( $size[0] < $length &amp;&amp; $size[1] < $length ) {
						$width = $size[0];$high = $size[1];
					} else if ( $size[0] >= $size[1] ) {
						$width = $length;$high = $size[1] * $length / $size[0];
					} else {
						$width = $size[0] * $length / $size[1];
						$high = $length;
					}
					if ( $extension == ".jpg" ) {
						$img_in = ImageCreateFromJPEG( $_FILES['uupload']['tmp_name']);//元画像を作成
					} else if ( $extension == ".png" ) {
						$img_in = ImageCreateFromPNG( $_FILES['uupload']['tmp_name']);
					}
					$img_out = ImageCreateTruecolor( $width, $high );
					ImageCopyResampled( $img_out, $img_in, 0, 0, 0, 0, $width, $high, $size[0], $size[1] );
					if ( $extension == ".jpg" ) {
						ImageJPEG( $img_out, $filepath );
						chmod($filepath, 0666);
					} else if ( $extension == ".png" ) {
						ImagePNG( $img_out, $filepath );
						chmod($filepath, 0666);
					}
					ImageDestroy( $img_in );
					ImageDestroy( $img_out );
					$array['googlemapdata']['item'][$countnum]['imageurl'] = "../db/googlemapdb/$idnum$extension";
					$array['googlemapdata']['item'][$countnum]['id'] = $idnum;
					print "\n<br/>画像=".$array[googlemapdata][item][$countnum][imageurl];
					//DB更新
					$fp = fopen("../db/googlemapdb/counter.dat", "w") or die;
					fputs( $fp, $idnum );
					fclose( $fp );
				}
			}
		}
		/**}}}*/
		
		$data = XML_serialize( $array );
		$data = mb_convert_encoding( $data, "sjis-win", "auto");	
		$fp = fopen( "../db/googlemapdb/googlemappoints.xml", "w") or die;
		fputs($fp, $data);
		fclose( $fp );
		chmod($filepath, 0777);
		
	}


	
	//チェックをつけた項目を削除する.
	if ( $_REQUEST['isDelete'] == "ZRNXTM") {
		//print "削除するモード";
		$filepath = "../db/googlemapdb/googlemappoints.xml";
		$fp = fopen( $filepath, "r" ) or die;
		$buffer = "";
		while ( !feof( $fp ) ) {
			$buffer .= fgets( $fp, 1024 );
		}
		fclose( $fp );
		$buffer = mb_convert_encoding( $buffer, "UTF-8", "sjis-win" );
		//print $buffer;
		$array = XML_unserialize( $buffer );
		//print_r($array);
		//どのデータを削除するのかをチェックする.
		//print "<hr>削除前<br/>";
		//print_r($array);
		for ( $iCounter = count($array['googlemapdata']['item'])-1; $iCounter >= 2; $iCounter-- ) {
			if ( $_REQUEST["del$iCounter"] == "on" ) {
				//削除する.
				//print "$iCounter 番目を削除する.";
				//画像ファイルがある場合は、それも削除する.
				$delimage = $array['googlemapdata']['item'][$iCounter]['imageurl'];
				if ( $delimage != "" ) {
					//画像データがある.
					unlink($delimage);
				}
				
				unset($array['googlemapdata']['item'][$iCounter]);
			}
		}
		//print "<hr>削除後<hr><br>";
		//print_r($array);
		$data = XML_serialize( $array );
		$data = mb_convert_encoding( $data, "sjis-win", "auto");

		$fp = fopen( $filepath, "w") or die;
		fputs($fp, $data);
		fclose( $fp );
		chmod($filepath, 0777);
		//print"<br/><br/>$data";
	}
?>


<?php
	$isUploaded = 0;//画像をアップロードしたか.
	if ( $_REQUEST['isfirst'] == "poiuyt" ) {
		$lat = $_REQUEST['lat'];
		$lon = $_REQUEST['lon'];
		$title = $_REQUEST['title'];
		$id = $_REQUEST['id'];
		$contents = $_REQUEST['contents'];
		/*echo "id = $id";
		echo "lat = $lat";
		echo "lon = $lon";
		echo "title = $title";
		echo "contents = $contents";
		*/
		//画像のアップロード
		/** {{{*/
		if ( $_FILES['upload']['name'] != "" ) {
			//画像のアップロードは空白なら何もしない
			$extension = strtolower( strrchr( $_FILES['upload']['name'], '.'));
			if ( $extension == ".jpg" || $extension == ".png" ) {
				//指定された拡張子以外はアップロードしない
				if ( is_uploaded_file(  $_FILES['upload']['tmp_name'] ) ) {
					//アップロード
					$filepath = getcwd();
					$filepath .= "/../db/googlemapdb/$id$extension";
					//画像を圧縮する.
					$length = 320;
					$size = getImageSize($_FILES['upload']['tmp_name']);
					//縦幅より横幅が大きければ横幅を固定
					if ( $size[0] < $length &amp;&amp; $size[1] < $length ) {
						$width = $size[0];$high = $size[1];
					} else if ( $size[0] >= $size[1] ) {
						$width = $length;$high = $size[1] * $length / $size[0];
					} else {
						$width = $size[0] * $length / $size[1];
						$high = $length;
					}
					if ( $extension == ".jpg" ) {
						$img_in = ImageCreateFromJPEG( $_FILES['upload']['tmp_name']);//元画像を作成
					} else if ( $extension == ".png" ) {
						$img_in = ImageCreateFromPNG( $_FILES['upload']['tmp_name']);
					}
					$img_out = ImageCreateTruecolor( $width, $high );
					ImageCopyResampled( $img_out, $img_in, 0, 0, 0, 0, $width, $high, $size[0], $size[1] );
					if ( $extension == ".jpg" ) {
						ImageJPEG( $img_out, $filepath );
						chmod($filepath, 0666);
					} else if ( $extension == ".png" ) {
						ImagePNG( $img_out, $filepath );
						chmod($filepath, 0666);
					}
					$isUploaded = 1;
					ImageDestroy( $img_in );
					ImageDestroy( $img_out );
				}
			}
		}
		/**}}}*/
		
		/////////////////////
		//データベースの更新
		////////////////////
		$filepath = "../db/googlemapdb/googlemappoints.xml";
		if ( !file_exists( $filepath )) {
			//存在していないなら
			putDummyFile($filepath);
		}
		$fp = fopen( $filepath, "r" ) or die;
		$buffer = "";
		while ( !feof( $fp ) ) {
			$buffer .= fgets( $fp, 1024 );
		}
		fclose( $fp );
		$buffer = mb_convert_encoding( $buffer, "UTF-8", "sjis-win" );
		//print $buffer;
		$array = XML_unserialize( $buffer );
		//後は新しい配列に、<>を置換してい貼り付けるだけ
		$lat		= tagWrapper($lat);
		$lon		= tagWrapper($lon);
		$title		= tagWrapper($title);
		$contents	= tagWrapper($contents);
		$title = str_replace("\"", "&quot;", $title);
		$contents	= str_replace("\"", "&quot;", $contents);
		//print "現在の配列の数は".count($array[googlemapdata][item]);
		$num = count($array[googlemapdata][item]);
		$array[googlemapdata][item][$num][id]=$id;
		$array[googlemapdata][item][$num][lat]=$lat;
		$array[googlemapdata][item][$num][lon]=$lon;
		$array[googlemapdata][item][$num][title]=mb_convert_encoding( $title, "UTF-8", "sjis-win");
		$array[googlemapdata][item][$num][contents]=mb_convert_encoding($contents, "UTF-8", "sjis-win");
		
		if ( $isUploaded == 1 ) {
			$array[googlemapdata][item][$num][imageurl]="../db/googlemapdb/$id$extension";
		} else {
			//画像をアップロードしていない
			$array[googlemapdata][item][$num][imageurl]="";
		}
		//print_r($array);
		$data = XML_serialize( $array );
		$data = mb_convert_encoding( $data, "sjis-win", "auto");
		$filepath = "../db/googlemapdb/googlemappoints.xml";		
		$fp = fopen( $filepath, "w") or die;
		fputs($fp, $data);
		fclose( $fp );
		chmod($filepath, 0777);
		//ID番号も更新する.
		$id++;
		$fp = fopen("../db/googlemapdb/counter.dat", "w") or die;
		fputs( $fp, $id );
		fclose( $fp );
	}
?>

<?php
	startHead();
	headers($hash['diarytitle'],"./", "no-cash");


	$filepath = "../db/googlemapdb/googlemappoints.xml";
	$fp = fopen( $filepath, "r" ) or die;
	$buffer = "";
	while ( !feof( $fp ) ) {
		$buffer .= fgets( $fp, 1024 );
	}
	fclose( $fp );
	$buffer = mb_convert_encoding( $buffer, "UTF-8", "sjis-win" );
	//print $buffer;
	$array = XML_unserialize( $buffer );
	$googlekey = putGoogleMapAPI($array);
	endHead();
?>




<body onload = "load(-1,-1)" onunload="GUnload()">


<script type = "text/javascript">
<!--
	function move(lon, lat) {
		load(lon, lat);
	}
	function asubmitChecker() {
	var ret;
	ret = confirm("本当に削除してもよいですか?");
	return ret;
}

	/**一旦広げた、編集設定をまた見えなくする*/
	function enclose() {
		document.getElementById("edittt").style.visibility = "Hidden";
		document.getElementById("edittt").style.height = 0+"px";
		document.getElementById("upload_nasi").style.visibility = "Hidden";
		document.getElementById("upload_nasi").style.height = 0+"px";
		document.getElementById("upload_ari").style.visibility = "Hidden";
		document.getElementById("upload_ari").style.height = 0+"px";
	}

	function editter(lon,lat,title,contents,imageurl,iCounter) {
		document.getElementById("edittt").style.visibility = "Visible";
		document.getElementById("edittt").style.height = 150+ "px";
		//一応初期化
		document.editer.lat.value = "";
		document.editer.lon.value = "";
		document.editer.title.value = "";
		document.editer.contents.value = "";
		document.editer.isDelete.checked = false;
	//	document.editer.uupload.value = "";
		document.editer.countnum.value = "";
		//入力
		document.editer.countnum.value = iCounter;
		document.editer.lat.value = lat;
		document.editer.lon.value = lon;
		document.editer.title.value = title;
		document.editer.contents.value = contents;
		if ( imageurl != '' ) {
			document.getElementById("upload_nasi").style.visibility = "Hidden";
			document.getElementById("upload_nasi").style.height = 0+"px";
			document.getElementById("upload_ari").style.visibility = "Visible";
			document.getElementById("upload_ari").style.height = 40+"px";
		} else {
			document.getElementById("upload_nasi").style.visibility = "Visible";
			document.getElementById("upload_nasi").style.height = 40+"px";
			document.getElementById("upload_ari").style.visibility = "Hidden";
			document.getElementById("upload_ari").style.height = 0+"px";
		}
	}
//-->
</script>


<?php
	putMenu("googlemaps");
?>
<?php
	setH2Logo(".",2,"いろんな場所をGoogle Mapsで登録しよう",630);
?>
<p class = "elbox">
	いろんな場所をGoogle Mapsで登録しましょう
</p>
<?php
	//ID番号を取得する.
	$fp = fopen("../db/googlemapdb/counter.dat", "r") or die;
	$id = trim(fgets( $fp, 1024 ));
	fclose( $fp );
?>
<form name = "f1" enctype = "multipart/form-data" method = "post" onSubmit = "return submitChecker('googlemap2')" action = "googlemap2.php">
北緯:<input type = "text" name = "lat" id = "lat" value = "">
東経:<input type = "text" name = "lon"id = "lon" value = ""><br>
表題:<input type = "text" name = "title" id = "title" value = "" size = "40"><br />
内容:<input type = "text" name = "contents" id = "contents" value = "" size = "80"/><br/>
画像:<input type = "file" name = "upload" id = "upload" value = "" size = "80"/><br/>
<input type = "hidden" name = "id" id = "id" value = "<?php print $id;?>"/>
	<input type = "hidden" name = "isfirst" id = "isfirst" value = "poiuyt"/>
<input type = "submit" value = "登録">
<input type = "reset" value = "リセット">
</form>
<table>
	<tr>
		<td>
			<div id = "mapr" style = "width:600px;height:800px"></div>
		</td>
		<td valign = "top">
			<form name = "editer" method = "post" action = "googlemap2.php" enctype = "multipart/form-data">
				<input type = "hidden" name = "isUpdate" id = "isUpdate" value = "PLOKM" />
				<div id = "edittt" style = "position:relative;height:1px;overflow:hidden;">
				<input type = "hidden" name = "countnum" id = "countnum" value = ""/>
				北緯:<input type = "text" name = "lat" id = "lat" value = "">
				東経:<input type = "text" name = "lon"id = "lon" value = ""><a href = "javascript:enclose()">収納する</a><br>
				表題:<input type = "text" name = "title" id = "title" value = "" size = "40"><br />
				内容:<input type = "text" name = "contents" id = "contents" value = "" size = "80"/><br/>
				<div id = "upload_nasi" style="height:1px;overflow:hidden;">画像:<input type = "file" name = "uupload" id = "uupload" value = "" size = "80"/></div>
				<div id = "upload_ari" style = "height:1px;overflow:hidden;">画像:<input type = "checkbox" name = "isDelete" id = "isDelete" />削除する<br /></div>
				<input name = "ssubmit" id = "_submit" type = "submit" value = "更新">
				<input name = "rreset" name = "_reset" type = "reset"  value = "リセット">
				</div>
			</form>
			<?php
			//ここに既に登録された情報を入れる。
			$filepath = "../db/googlemapdb/googlemappoints.xml";
			if ( !file_exists( $filepath )) {
				//存在していないなら
				putDummyFile($filepath);
			}
			$fp = fopen( $filepath, "r" ) or die;
			$buffer = "";
			while ( !feof( $fp ) ) {
				$buffer .= fgets( $fp, 1024 );
			}
			fclose( $fp );
			$buffer = mb_convert_encoding( $buffer, "UTF-8", "sjis-win" );
			$array = XML_unserialize( $buffer );
			//print_r($array);
			$iNum = count($array[googlemapdata][item]);
			//print $iNum;
			print "<form method = \"post\" action = \"./googlemap2.php\" onSubmit=\"return asubmitChecker()\">\n";
			print "\t\t\t<table summary = \"google maps points\" class = \"nobordersize\">\n";
			print "\t\t\t<tr bgcolor = \"#8d9eb5\">\n\t\t\t\t\t<td>登録された地図情報</td><td>編集<td>削除</td>\n\t\t\t\t</tr>\n";

			for ( $iCounter = 2; $iCounter < $iNum; $iCounter++ ) {
				$pointsTitle= mb_convert_encoding($array[googlemapdata][item][$iCounter][title], "sjis-win", "UTF-8");
				$contents	= mb_convert_encoding($array[googlemapdata][item][$iCounter][contents], "sjis-win", "UTF-8");
				$imageurl	= mb_convert_encoding($array[googlemapdata][item][$iCounter][imageurl], "sjis-win", "UTF-8");
				// " はご法度なので、置換する.
				$pointsTitle= str_replace("\"", "&quot;", $pointsTitle);
				$contents	= str_replace("\"", "&quot;", $contents);
				$lon		= $array[googlemapdata][item][$iCounter][lon];
				$lat		= $array[googlemapdata][item][$iCounter][lat];
				if ( $iCounter % 2 == 0 ) {
					//print "\t\t\t\t<tr bgcolor = \"#ffffff\">\n";
					print "\t\t\t\t<tr bgcolor = \"#f1f5fa\">\n";
				}
				print "\t\t\t\t\t<td>\n";
				print "<a href = \"javascript:move($lon,$lat)\">$pointsTitle</a>";
				print "\t\t\t\t\t</td>\n";
				print "\t\t\t\t\t<td>\n";
				print "\t\t\t\t\t<a href = \"javascript:editter($lon,$lat,'$pointsTitle','$contents','$imageurl','$iCounter')\">編集</a>";
				print "\t\t\t\t\t</td>\n";
				print "\t\t\t\t\t<td><input type = \"checkbox\" name = \"del$iCounter\" id = \"del$iCounter\"/></td>\n";
				
				print "\t\t\t\t</tr>\n";
			}
			print "\t\t\t</table>";
			print "<input type = \"hidden\" name = \"isDelete\" id = \"isDelete\" value = \"ZRNXTM\" />";
			print "<input type = \"submit\" value = \"チェックをつけた項目を削除する\">\n";
			print "<input type = \"reset\" value = \"リセットする\">\n";
			print "</form>";
			?>
		</td>
	</tr>
</table>
</form>
<?php
	htmlcheck("../img/");
	endBody();
	endHtml();
?>

<?php
	/** Google map の場所データ保存のためのダミー
	* ファイルを用意する
	* @param $filepath ダミーファイルの名前と場所
	*/
	function putDummyFile($filepath) {
	/** {{{*/
		$data = "";
		$data .= "<?xml version=\"1.0\"?>\n";
		$data .= "<googlemapdata>\n";
		$data .= "\t<item>\n";
		$data .= "\t\t<id>id1</id>\n";
		$data .= "\t\t<lat>latitude1</lat>\n";
		$data .= "\t\t<lon>longitude1</lon>\n";
		$data .= "\t\t<title>title1</title>\n";
		$data .= "\t\t<contents>contents1</contents>\n";
		$data .= "\t\t<imageurl>imageurl1</imageurl>\n";
		$data .= "\t</item>\n";
		$data .= "\t<item>\n";
		$data .= "\t\t<id>id2</id>\n";
		$data .= "\t\t<lat>latitude2</lat>\n";
		$data .= "\t\t<lon>longitude2</lon>\n";
		$data .= "\t\t<title>title2</title>\n";
		$data .= "\t\t<contents>contents2</contents>\n";
		$data .= "\t\t<imageurl>imageurl2</imageurl>\n";
		$data .= "\t</item>\n";
		$data .= "</googlemapdata>";
		$fp = fopen($filepath, "w") or die;
		fputs( $fp, $data );
		fclose( $fp );
		chmod( $filepath, 0777 );
	}
	/**}}}*/
?>

Googlemapcommon.php

<?php

/** Google map を表示する*/
function putGoogleMapAPI($array){
	print "\t\t<script src=\"http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=";
	$fpin = fopen("../db/googlemapkey.dat", "r") or die;
	$k = trim(fgets( $fpin, 510 ));
	fclose( $fpin );
	print $k."\"";
    print " type=\"text/javascript\" charset = 'UTF-8'></script>\n";
	print "\t\t<script src = \"./googlemap.js\"></script>\n";


	/** マーカの部分できるかなぁ。*/
	print "\t\t<script type = \"text/javascript\">\n";
	//print "\t\t<![CDATA[\n";
	//現在位置情報を取得する
	$fp = fopen("../db/googlemaplocation.dat", "r") or die;
	$x = trim(fgets($fp, 200));
	$y = trim(fgets($fp, 200));
	fclose($fp);
	//登録したばかりならそこを中心にすべき.
	if ($_REQUEST['lon'] != "" &amp;&amp; $_REQUEST['lat'] != "") {
		$x = trim($_REQUEST['lon']);
		$y = trim($_REQUEST['lat']);
	} else {
		$x = 135.77286511659622;
		$y = 34.949485388090274;
	}
	print<<<EM
function load(lon,lat) {
		//編集の時に必要な情報を表示しない
		document.getElementById("edittt").style.pixelHeight = 0;
		document.getElementById("edittt").style.Height = 0;
		document.getElementById("edittt").style.visibility = "hidden";
		
		
		//十字マップ作成
		var icon = new GIcon();
		icon.image = "./cross2.png";
		icon.iconSize = new GSize(100, 100);
		icon.iconAnchor = new GPoint(50, 50);
	
		var map = new GMap(document.getElementById("mapr"));
		if (lon<= 0 || lat <= 0) {
			//map.setCenter( new GLatLng(34.772437033477544, 135.6432580947876), 17);//中心地点を設定する.
			map.setCenter( new GLatLng($y, $x), 17);//中心地点を設定する.
		} else {
			map.setCenter( new GLatLng(lat, lon), 17);
		}
		//map.setMapType( G_SATELLITE_TYPE );//衛星写真のタイプを指定
		map.setMapType( G_HYBRID_TYPE );//衛星写真のタイプを指定
		map.addControl(new GLargeMapControl());//+-で拡大とかするコントロールの表示
    	//map.addControl(new GOverviewMapControl(new GSize(200,150)));//右下にガイドの地図を表示.
		map.addControl(new GMapTypeControl());
		var marker = new GMarker(map.getCenter(), icon);//十字アイコンを表示
		map.addOverlay(marker);							//十字アイコンを表示


		GEvent.addListener(map, 'move', function() {	//地図が移動したとき
			var point = map.getCenter();
			document.f1.lat.value = point.y;//緯度表示
			document.f1.lon.value = point.x;//東経表示
			marker.setPoint(map.getCenter());			//十字も移動する
		});
    	
		GEvent.addListener(map, 'click', function(){	//クリックされたとき
    		;
		});
		
EM;
		//画面に登録された情報を表示させる
		//print "document.getElementById(\"edittt\").style.fontSize = 0+ \"px\";\n";
		print "\t\tdocument.getElementById(\"edittt\").style.height = 0+ \"px\";\n";//最初は表示しない
		print "document.getElementById(\"edittt\").style.overFlow = \"hidden\";\n";
		
		print "\t\tvar aryData = new Array(".count($array[googlemapdata][item]).");\n";
		print "\t\tvar Title = new Array(".count($array[googlemapdata][item]).");\n";
		print "\t\tvar Contents = new Array(".count($array[googlemapdata][item]).");\n";
		for ( $iCounter = 2; $iCounter < count($array[googlemapdata][item]); $iCounter++ ) {
			$Title = mb_convert_encoding( $array[googlemapdata][item][$iCounter][title], "sjis-win", "UTF-8" );
			$Contents = mb_convert_encoding(  $array[googlemapdata][item][$iCounter][contents],"sjis-win", "UTF-8");
			$ImageUrl = $array[googlemapdata][item][$iCounter][imageurl];

			//すでに、ksesで、タグをWrapsしているので、ここで表示する<>は、安全なものしかのこってない
			$Title		= str_replace("&lt;", "<", $Title );
			$Title		= str_replace("&gt;", ">", $Title );
			$Contents	= str_replace("&lt;", "<", $Contents );
			$Contents	= str_replace("&gt;", ">", $Contents );
			
			print "\t\tTitle[$iCounter] = \"$Title\";\n";
			print "\t\tContents[$iCounter] = \"$Contents\";\n";
			print "\t\taryData[$iCounter] = \"<span class = \\\"big\\\">".$Title."</span><br/>".$Contents."<br/>";
			if ( $ImageUrl != "" ) {
				print "<a href = \\\"".$ImageUrl."\\\"><img src = \\\"$ImageUrl\\\" width = 100/></a>";
			}
			
			print "\";\n";
			$lon = $array[googlemapdata][item][$iCounter][lon];
			$lat = $array[googlemapdata][item][$iCounter][lat];
			
			print "\t\taddMarker(map, $lon,$lat, aryData[$iCounter]);\n";
		}
		//aryData[0] = "aaa";
		//addMarker(map, 135.6421,34.7744, aryData[0]);
		
print "}\n";



	
	//print "\t\t//]]>\n";
	print "\t\t</script>\n";
	return $k;
}

?>

id:gauchon

ありがとうございます.

実例もあって,参考になります.

2007/02/13 10:21:58

その他の回答(1件)

id:tamtam3 No.1

tamtam3回答回数345ベストアンサー獲得回数202007/02/13 00:11:16

ポイント20pt

とりあえず、この二つを参照に

http://googlemapsapi.blogspot.com/

http://www.google.com/apis/maps/documentation/reference.html#GPo...



ちゃんと実装例も書いてあります。

(ブログの上 順番に読んでいけばすぐ判る筈)

id:gauchon

ありがとうございます.

2007/02/13 10:22:08
id:ymlab No.2

ymlab回答回数508ベストアンサー獲得回数342007/02/13 00:13:43ここでベストアンサー

ポイント50pt

一応可能です。

ただ、google maps APIのみでは不可能です。

印をつけた場所を格納するデータベースが必要です。

Javascript単体なら、Ajaxなどのテクニックを使って、

HTTP通信させるとよいかも知れません。

私は、PHPで作りました。

参考になるかどうかわかりませんが、

下に紹介します。

(これだけではうごかないと思います。

大体雰囲気だけでもつかんでいただければ・・。)

あと、xmlを制御するxml.phpというものが必要だったりしますが(無料)、

面倒なら、そこはCSVか何かにしてもよいと思います。

menu.phpやcommon.phpや

あたりは他の用途につかっています。

具体的には、

http://gakkouweblog.yh.land.to/admin/googlemap2.php

を参考にしてみてください。

ただ、まだ開発中で、運営しているサーバと漢字コードが

ちがったため、文字化けしてしまいます。

<?php /* vim: set fdm=marker: */
	///////////////////////////////////
	//いろんな場所をgooglemapで登録する
	//////////////////////////////////
	include_once("./menu.php");
	include("../db/xml.php");
	include("common.php");
	include("googlemapcommon.php");
	
	html_start();

	//iniファイルを読み込む
	$inifile = "../setup.ini";
	$hash = parse_ini_file( $inifile );
?>

<?php
	//編集したデータを更新する.
	if ( $_REQUEST['isUpdate'] == "PLOKM" ) {
		//print "更新";
		$filepath = "../db/googlemapdb/googlemappoints.xml";
		$fp = fopen($filepath, "r") or die;
		$buffer = "";
		while ( !feof($fp) ) {
			$buffer .= fgets( $fp, 1024 );
		}
		fclose( $fp );
		$buffer = mb_convert_encoding( $buffer, "UTF-8", "sjis-win" );
		$array = XML_unserialize( $buffer );
		//print_r($array);
	//	print "返還前<br>";
		$countnum = $_REQUEST['countnum'];
		/*print "北緯=".$array[googlemapdata][item][$countnum][lat];
		print "東経=".$array[googlemapdata][item][$countnum][lon];
		print "表題=".$array[googlemapdata][item][$countnum][title];
		print "内容=".$array[googlemapdata][item][$countnum][contents];
		print "画像=".$array[googlemapdata][item][$countnum][imageurl];
		print "<br >";
		
		print "変換後<br/>";
		*/
		$lat = $_REQUEST['lat'];
		$lat = mb_convert_encoding( $lat, "UTF-8", "sjis-win");
		$lon = $_REQUEST['lon'];
		$lon = mb_convert_encoding( $lon, "UTF-8", "sjis-win");
		$title = $_REQUEST['title'];
		$title = mb_convert_encoding( $title, "UTF-8", "sjis-win");
		$contents = $_REQUEST['contents'];
		$contents = mb_convert_encoding( $contents, "UTF-8", "sjis-win");
		
		$array[googlemapdata][item][$countnum][lat] = $lat;
		$array[googlemapdata][item][$countnum][lon] = $lon;
		$array[googlemapdata][item][$countnum][title] = tagWrapper($title);
		$array[googlemapdata][item][$countnum][contents] = tagWrapper($contents);
/*
		print "北緯=".$array[googlemapdata][item][$countnum][lat];
		print "東経=".$array[googlemapdata][item][$countnum][lon];
		print "表題=".$array[googlemapdata][item][$countnum][title];
		print "内容=".$array[googlemapdata][item][$countnum][contents];
*/		
		//画像削除するか.
		if ($_REQUEST['isDelete'] == "on") {
			//画像を削除する.
			if ( file_exists($array['googlemapdata']['item'][$countnum]['imageurl'])) {
				//画像が存在していたら.
				$path = $array['googlemapdata']['item'][$countnum]['imageurl'];
				unlink($path);
				$array['googlemapdata']['item'][$countnum]['imageurl'] = "";
			}
		}
		//画像をアップロードするか.
		/**{{{*/
		if ( $_FILES['uupload']['name'] != "" ) {
			//画像のアップロードは空白ならなにもしない
			$extension = strtolower( strrchr( $_FILES['uupload']['name'], "." ) );
			if ( $extension == ".jpg" || $extension == ".png" ) {
				//指定された拡張子以外はアップロードしない
				$ffp = fopen("../db/googlemapdb/counter.dat", "r") or die;
				$idnum = trim(fgets($ffp, 1024));
				$idnum++;
				fclose( $ffp );
				if ( is_uploaded_file( $_FILES['uupload']['tmp_name'] ) ) {
					//アップロード
					$filepath = getcwd();
					$filepath .= "/../db/googlemapdb/$idnum$extension";
					//画像を圧縮する.
					$length = 320;
					$size = getImageSize($_FILES['uupload']['tmp_name']);
					//縦幅より横幅が大きければ横幅を固定
					if ( $size[0] < $length &amp;&amp; $size[1] < $length ) {
						$width = $size[0];$high = $size[1];
					} else if ( $size[0] >= $size[1] ) {
						$width = $length;$high = $size[1] * $length / $size[0];
					} else {
						$width = $size[0] * $length / $size[1];
						$high = $length;
					}
					if ( $extension == ".jpg" ) {
						$img_in = ImageCreateFromJPEG( $_FILES['uupload']['tmp_name']);//元画像を作成
					} else if ( $extension == ".png" ) {
						$img_in = ImageCreateFromPNG( $_FILES['uupload']['tmp_name']);
					}
					$img_out = ImageCreateTruecolor( $width, $high );
					ImageCopyResampled( $img_out, $img_in, 0, 0, 0, 0, $width, $high, $size[0], $size[1] );
					if ( $extension == ".jpg" ) {
						ImageJPEG( $img_out, $filepath );
						chmod($filepath, 0666);
					} else if ( $extension == ".png" ) {
						ImagePNG( $img_out, $filepath );
						chmod($filepath, 0666);
					}
					ImageDestroy( $img_in );
					ImageDestroy( $img_out );
					$array['googlemapdata']['item'][$countnum]['imageurl'] = "../db/googlemapdb/$idnum$extension";
					$array['googlemapdata']['item'][$countnum]['id'] = $idnum;
					print "\n<br/>画像=".$array[googlemapdata][item][$countnum][imageurl];
					//DB更新
					$fp = fopen("../db/googlemapdb/counter.dat", "w") or die;
					fputs( $fp, $idnum );
					fclose( $fp );
				}
			}
		}
		/**}}}*/
		
		$data = XML_serialize( $array );
		$data = mb_convert_encoding( $data, "sjis-win", "auto");	
		$fp = fopen( "../db/googlemapdb/googlemappoints.xml", "w") or die;
		fputs($fp, $data);
		fclose( $fp );
		chmod($filepath, 0777);
		
	}


	
	//チェックをつけた項目を削除する.
	if ( $_REQUEST['isDelete'] == "ZRNXTM") {
		//print "削除するモード";
		$filepath = "../db/googlemapdb/googlemappoints.xml";
		$fp = fopen( $filepath, "r" ) or die;
		$buffer = "";
		while ( !feof( $fp ) ) {
			$buffer .= fgets( $fp, 1024 );
		}
		fclose( $fp );
		$buffer = mb_convert_encoding( $buffer, "UTF-8", "sjis-win" );
		//print $buffer;
		$array = XML_unserialize( $buffer );
		//print_r($array);
		//どのデータを削除するのかをチェックする.
		//print "<hr>削除前<br/>";
		//print_r($array);
		for ( $iCounter = count($array['googlemapdata']['item'])-1; $iCounter >= 2; $iCounter-- ) {
			if ( $_REQUEST["del$iCounter"] == "on" ) {
				//削除する.
				//print "$iCounter 番目を削除する.";
				//画像ファイルがある場合は、それも削除する.
				$delimage = $array['googlemapdata']['item'][$iCounter]['imageurl'];
				if ( $delimage != "" ) {
					//画像データがある.
					unlink($delimage);
				}
				
				unset($array['googlemapdata']['item'][$iCounter]);
			}
		}
		//print "<hr>削除後<hr><br>";
		//print_r($array);
		$data = XML_serialize( $array );
		$data = mb_convert_encoding( $data, "sjis-win", "auto");

		$fp = fopen( $filepath, "w") or die;
		fputs($fp, $data);
		fclose( $fp );
		chmod($filepath, 0777);
		//print"<br/><br/>$data";
	}
?>


<?php
	$isUploaded = 0;//画像をアップロードしたか.
	if ( $_REQUEST['isfirst'] == "poiuyt" ) {
		$lat = $_REQUEST['lat'];
		$lon = $_REQUEST['lon'];
		$title = $_REQUEST['title'];
		$id = $_REQUEST['id'];
		$contents = $_REQUEST['contents'];
		/*echo "id = $id";
		echo "lat = $lat";
		echo "lon = $lon";
		echo "title = $title";
		echo "contents = $contents";
		*/
		//画像のアップロード
		/** {{{*/
		if ( $_FILES['upload']['name'] != "" ) {
			//画像のアップロードは空白なら何もしない
			$extension = strtolower( strrchr( $_FILES['upload']['name'], '.'));
			if ( $extension == ".jpg" || $extension == ".png" ) {
				//指定された拡張子以外はアップロードしない
				if ( is_uploaded_file(  $_FILES['upload']['tmp_name'] ) ) {
					//アップロード
					$filepath = getcwd();
					$filepath .= "/../db/googlemapdb/$id$extension";
					//画像を圧縮する.
					$length = 320;
					$size = getImageSize($_FILES['upload']['tmp_name']);
					//縦幅より横幅が大きければ横幅を固定
					if ( $size[0] < $length &amp;&amp; $size[1] < $length ) {
						$width = $size[0];$high = $size[1];
					} else if ( $size[0] >= $size[1] ) {
						$width = $length;$high = $size[1] * $length / $size[0];
					} else {
						$width = $size[0] * $length / $size[1];
						$high = $length;
					}
					if ( $extension == ".jpg" ) {
						$img_in = ImageCreateFromJPEG( $_FILES['upload']['tmp_name']);//元画像を作成
					} else if ( $extension == ".png" ) {
						$img_in = ImageCreateFromPNG( $_FILES['upload']['tmp_name']);
					}
					$img_out = ImageCreateTruecolor( $width, $high );
					ImageCopyResampled( $img_out, $img_in, 0, 0, 0, 0, $width, $high, $size[0], $size[1] );
					if ( $extension == ".jpg" ) {
						ImageJPEG( $img_out, $filepath );
						chmod($filepath, 0666);
					} else if ( $extension == ".png" ) {
						ImagePNG( $img_out, $filepath );
						chmod($filepath, 0666);
					}
					$isUploaded = 1;
					ImageDestroy( $img_in );
					ImageDestroy( $img_out );
				}
			}
		}
		/**}}}*/
		
		/////////////////////
		//データベースの更新
		////////////////////
		$filepath = "../db/googlemapdb/googlemappoints.xml";
		if ( !file_exists( $filepath )) {
			//存在していないなら
			putDummyFile($filepath);
		}
		$fp = fopen( $filepath, "r" ) or die;
		$buffer = "";
		while ( !feof( $fp ) ) {
			$buffer .= fgets( $fp, 1024 );
		}
		fclose( $fp );
		$buffer = mb_convert_encoding( $buffer, "UTF-8", "sjis-win" );
		//print $buffer;
		$array = XML_unserialize( $buffer );
		//後は新しい配列に、<>を置換してい貼り付けるだけ
		$lat		= tagWrapper($lat);
		$lon		= tagWrapper($lon);
		$title		= tagWrapper($title);
		$contents	= tagWrapper($contents);
		$title = str_replace("\"", "&quot;", $title);
		$contents	= str_replace("\"", "&quot;", $contents);
		//print "現在の配列の数は".count($array[googlemapdata][item]);
		$num = count($array[googlemapdata][item]);
		$array[googlemapdata][item][$num][id]=$id;
		$array[googlemapdata][item][$num][lat]=$lat;
		$array[googlemapdata][item][$num][lon]=$lon;
		$array[googlemapdata][item][$num][title]=mb_convert_encoding( $title, "UTF-8", "sjis-win");
		$array[googlemapdata][item][$num][contents]=mb_convert_encoding($contents, "UTF-8", "sjis-win");
		
		if ( $isUploaded == 1 ) {
			$array[googlemapdata][item][$num][imageurl]="../db/googlemapdb/$id$extension";
		} else {
			//画像をアップロードしていない
			$array[googlemapdata][item][$num][imageurl]="";
		}
		//print_r($array);
		$data = XML_serialize( $array );
		$data = mb_convert_encoding( $data, "sjis-win", "auto");
		$filepath = "../db/googlemapdb/googlemappoints.xml";		
		$fp = fopen( $filepath, "w") or die;
		fputs($fp, $data);
		fclose( $fp );
		chmod($filepath, 0777);
		//ID番号も更新する.
		$id++;
		$fp = fopen("../db/googlemapdb/counter.dat", "w") or die;
		fputs( $fp, $id );
		fclose( $fp );
	}
?>

<?php
	startHead();
	headers($hash['diarytitle'],"./", "no-cash");


	$filepath = "../db/googlemapdb/googlemappoints.xml";
	$fp = fopen( $filepath, "r" ) or die;
	$buffer = "";
	while ( !feof( $fp ) ) {
		$buffer .= fgets( $fp, 1024 );
	}
	fclose( $fp );
	$buffer = mb_convert_encoding( $buffer, "UTF-8", "sjis-win" );
	//print $buffer;
	$array = XML_unserialize( $buffer );
	$googlekey = putGoogleMapAPI($array);
	endHead();
?>




<body onload = "load(-1,-1)" onunload="GUnload()">


<script type = "text/javascript">
<!--
	function move(lon, lat) {
		load(lon, lat);
	}
	function asubmitChecker() {
	var ret;
	ret = confirm("本当に削除してもよいですか?");
	return ret;
}

	/**一旦広げた、編集設定をまた見えなくする*/
	function enclose() {
		document.getElementById("edittt").style.visibility = "Hidden";
		document.getElementById("edittt").style.height = 0+"px";
		document.getElementById("upload_nasi").style.visibility = "Hidden";
		document.getElementById("upload_nasi").style.height = 0+"px";
		document.getElementById("upload_ari").style.visibility = "Hidden";
		document.getElementById("upload_ari").style.height = 0+"px";
	}

	function editter(lon,lat,title,contents,imageurl,iCounter) {
		document.getElementById("edittt").style.visibility = "Visible";
		document.getElementById("edittt").style.height = 150+ "px";
		//一応初期化
		document.editer.lat.value = "";
		document.editer.lon.value = "";
		document.editer.title.value = "";
		document.editer.contents.value = "";
		document.editer.isDelete.checked = false;
	//	document.editer.uupload.value = "";
		document.editer.countnum.value = "";
		//入力
		document.editer.countnum.value = iCounter;
		document.editer.lat.value = lat;
		document.editer.lon.value = lon;
		document.editer.title.value = title;
		document.editer.contents.value = contents;
		if ( imageurl != '' ) {
			document.getElementById("upload_nasi").style.visibility = "Hidden";
			document.getElementById("upload_nasi").style.height = 0+"px";
			document.getElementById("upload_ari").style.visibility = "Visible";
			document.getElementById("upload_ari").style.height = 40+"px";
		} else {
			document.getElementById("upload_nasi").style.visibility = "Visible";
			document.getElementById("upload_nasi").style.height = 40+"px";
			document.getElementById("upload_ari").style.visibility = "Hidden";
			document.getElementById("upload_ari").style.height = 0+"px";
		}
	}
//-->
</script>


<?php
	putMenu("googlemaps");
?>
<?php
	setH2Logo(".",2,"いろんな場所をGoogle Mapsで登録しよう",630);
?>
<p class = "elbox">
	いろんな場所をGoogle Mapsで登録しましょう
</p>
<?php
	//ID番号を取得する.
	$fp = fopen("../db/googlemapdb/counter.dat", "r") or die;
	$id = trim(fgets( $fp, 1024 ));
	fclose( $fp );
?>
<form name = "f1" enctype = "multipart/form-data" method = "post" onSubmit = "return submitChecker('googlemap2')" action = "googlemap2.php">
北緯:<input type = "text" name = "lat" id = "lat" value = "">
東経:<input type = "text" name = "lon"id = "lon" value = ""><br>
表題:<input type = "text" name = "title" id = "title" value = "" size = "40"><br />
内容:<input type = "text" name = "contents" id = "contents" value = "" size = "80"/><br/>
画像:<input type = "file" name = "upload" id = "upload" value = "" size = "80"/><br/>
<input type = "hidden" name = "id" id = "id" value = "<?php print $id;?>"/>
	<input type = "hidden" name = "isfirst" id = "isfirst" value = "poiuyt"/>
<input type = "submit" value = "登録">
<input type = "reset" value = "リセット">
</form>
<table>
	<tr>
		<td>
			<div id = "mapr" style = "width:600px;height:800px"></div>
		</td>
		<td valign = "top">
			<form name = "editer" method = "post" action = "googlemap2.php" enctype = "multipart/form-data">
				<input type = "hidden" name = "isUpdate" id = "isUpdate" value = "PLOKM" />
				<div id = "edittt" style = "position:relative;height:1px;overflow:hidden;">
				<input type = "hidden" name = "countnum" id = "countnum" value = ""/>
				北緯:<input type = "text" name = "lat" id = "lat" value = "">
				東経:<input type = "text" name = "lon"id = "lon" value = ""><a href = "javascript:enclose()">収納する</a><br>
				表題:<input type = "text" name = "title" id = "title" value = "" size = "40"><br />
				内容:<input type = "text" name = "contents" id = "contents" value = "" size = "80"/><br/>
				<div id = "upload_nasi" style="height:1px;overflow:hidden;">画像:<input type = "file" name = "uupload" id = "uupload" value = "" size = "80"/></div>
				<div id = "upload_ari" style = "height:1px;overflow:hidden;">画像:<input type = "checkbox" name = "isDelete" id = "isDelete" />削除する<br /></div>
				<input name = "ssubmit" id = "_submit" type = "submit" value = "更新">
				<input name = "rreset" name = "_reset" type = "reset"  value = "リセット">
				</div>
			</form>
			<?php
			//ここに既に登録された情報を入れる。
			$filepath = "../db/googlemapdb/googlemappoints.xml";
			if ( !file_exists( $filepath )) {
				//存在していないなら
				putDummyFile($filepath);
			}
			$fp = fopen( $filepath, "r" ) or die;
			$buffer = "";
			while ( !feof( $fp ) ) {
				$buffer .= fgets( $fp, 1024 );
			}
			fclose( $fp );
			$buffer = mb_convert_encoding( $buffer, "UTF-8", "sjis-win" );
			$array = XML_unserialize( $buffer );
			//print_r($array);
			$iNum = count($array[googlemapdata][item]);
			//print $iNum;
			print "<form method = \"post\" action = \"./googlemap2.php\" onSubmit=\"return asubmitChecker()\">\n";
			print "\t\t\t<table summary = \"google maps points\" class = \"nobordersize\">\n";
			print "\t\t\t<tr bgcolor = \"#8d9eb5\">\n\t\t\t\t\t<td>登録された地図情報</td><td>編集<td>削除</td>\n\t\t\t\t</tr>\n";

			for ( $iCounter = 2; $iCounter < $iNum; $iCounter++ ) {
				$pointsTitle= mb_convert_encoding($array[googlemapdata][item][$iCounter][title], "sjis-win", "UTF-8");
				$contents	= mb_convert_encoding($array[googlemapdata][item][$iCounter][contents], "sjis-win", "UTF-8");
				$imageurl	= mb_convert_encoding($array[googlemapdata][item][$iCounter][imageurl], "sjis-win", "UTF-8");
				// " はご法度なので、置換する.
				$pointsTitle= str_replace("\"", "&quot;", $pointsTitle);
				$contents	= str_replace("\"", "&quot;", $contents);
				$lon		= $array[googlemapdata][item][$iCounter][lon];
				$lat		= $array[googlemapdata][item][$iCounter][lat];
				if ( $iCounter % 2 == 0 ) {
					//print "\t\t\t\t<tr bgcolor = \"#ffffff\">\n";
					print "\t\t\t\t<tr bgcolor = \"#f1f5fa\">\n";
				}
				print "\t\t\t\t\t<td>\n";
				print "<a href = \"javascript:move($lon,$lat)\">$pointsTitle</a>";
				print "\t\t\t\t\t</td>\n";
				print "\t\t\t\t\t<td>\n";
				print "\t\t\t\t\t<a href = \"javascript:editter($lon,$lat,'$pointsTitle','$contents','$imageurl','$iCounter')\">編集</a>";
				print "\t\t\t\t\t</td>\n";
				print "\t\t\t\t\t<td><input type = \"checkbox\" name = \"del$iCounter\" id = \"del$iCounter\"/></td>\n";
				
				print "\t\t\t\t</tr>\n";
			}
			print "\t\t\t</table>";
			print "<input type = \"hidden\" name = \"isDelete\" id = \"isDelete\" value = \"ZRNXTM\" />";
			print "<input type = \"submit\" value = \"チェックをつけた項目を削除する\">\n";
			print "<input type = \"reset\" value = \"リセットする\">\n";
			print "</form>";
			?>
		</td>
	</tr>
</table>
</form>
<?php
	htmlcheck("../img/");
	endBody();
	endHtml();
?>

<?php
	/** Google map の場所データ保存のためのダミー
	* ファイルを用意する
	* @param $filepath ダミーファイルの名前と場所
	*/
	function putDummyFile($filepath) {
	/** {{{*/
		$data = "";
		$data .= "<?xml version=\"1.0\"?>\n";
		$data .= "<googlemapdata>\n";
		$data .= "\t<item>\n";
		$data .= "\t\t<id>id1</id>\n";
		$data .= "\t\t<lat>latitude1</lat>\n";
		$data .= "\t\t<lon>longitude1</lon>\n";
		$data .= "\t\t<title>title1</title>\n";
		$data .= "\t\t<contents>contents1</contents>\n";
		$data .= "\t\t<imageurl>imageurl1</imageurl>\n";
		$data .= "\t</item>\n";
		$data .= "\t<item>\n";
		$data .= "\t\t<id>id2</id>\n";
		$data .= "\t\t<lat>latitude2</lat>\n";
		$data .= "\t\t<lon>longitude2</lon>\n";
		$data .= "\t\t<title>title2</title>\n";
		$data .= "\t\t<contents>contents2</contents>\n";
		$data .= "\t\t<imageurl>imageurl2</imageurl>\n";
		$data .= "\t</item>\n";
		$data .= "</googlemapdata>";
		$fp = fopen($filepath, "w") or die;
		fputs( $fp, $data );
		fclose( $fp );
		chmod( $filepath, 0777 );
	}
	/**}}}*/
?>

Googlemapcommon.php

<?php

/** Google map を表示する*/
function putGoogleMapAPI($array){
	print "\t\t<script src=\"http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=";
	$fpin = fopen("../db/googlemapkey.dat", "r") or die;
	$k = trim(fgets( $fpin, 510 ));
	fclose( $fpin );
	print $k."\"";
    print " type=\"text/javascript\" charset = 'UTF-8'></script>\n";
	print "\t\t<script src = \"./googlemap.js\"></script>\n";


	/** マーカの部分できるかなぁ。*/
	print "\t\t<script type = \"text/javascript\">\n";
	//print "\t\t<![CDATA[\n";
	//現在位置情報を取得する
	$fp = fopen("../db/googlemaplocation.dat", "r") or die;
	$x = trim(fgets($fp, 200));
	$y = trim(fgets($fp, 200));
	fclose($fp);
	//登録したばかりならそこを中心にすべき.
	if ($_REQUEST['lon'] != "" &amp;&amp; $_REQUEST['lat'] != "") {
		$x = trim($_REQUEST['lon']);
		$y = trim($_REQUEST['lat']);
	} else {
		$x = 135.77286511659622;
		$y = 34.949485388090274;
	}
	print<<<EM
function load(lon,lat) {
		//編集の時に必要な情報を表示しない
		document.getElementById("edittt").style.pixelHeight = 0;
		document.getElementById("edittt").style.Height = 0;
		document.getElementById("edittt").style.visibility = "hidden";
		
		
		//十字マップ作成
		var icon = new GIcon();
		icon.image = "./cross2.png";
		icon.iconSize = new GSize(100, 100);
		icon.iconAnchor = new GPoint(50, 50);
	
		var map = new GMap(document.getElementById("mapr"));
		if (lon<= 0 || lat <= 0) {
			//map.setCenter( new GLatLng(34.772437033477544, 135.6432580947876), 17);//中心地点を設定する.
			map.setCenter( new GLatLng($y, $x), 17);//中心地点を設定する.
		} else {
			map.setCenter( new GLatLng(lat, lon), 17);
		}
		//map.setMapType( G_SATELLITE_TYPE );//衛星写真のタイプを指定
		map.setMapType( G_HYBRID_TYPE );//衛星写真のタイプを指定
		map.addControl(new GLargeMapControl());//+-で拡大とかするコントロールの表示
    	//map.addControl(new GOverviewMapControl(new GSize(200,150)));//右下にガイドの地図を表示.
		map.addControl(new GMapTypeControl());
		var marker = new GMarker(map.getCenter(), icon);//十字アイコンを表示
		map.addOverlay(marker);							//十字アイコンを表示


		GEvent.addListener(map, 'move', function() {	//地図が移動したとき
			var point = map.getCenter();
			document.f1.lat.value = point.y;//緯度表示
			document.f1.lon.value = point.x;//東経表示
			marker.setPoint(map.getCenter());			//十字も移動する
		});
    	
		GEvent.addListener(map, 'click', function(){	//クリックされたとき
    		;
		});
		
EM;
		//画面に登録された情報を表示させる
		//print "document.getElementById(\"edittt\").style.fontSize = 0+ \"px\";\n";
		print "\t\tdocument.getElementById(\"edittt\").style.height = 0+ \"px\";\n";//最初は表示しない
		print "document.getElementById(\"edittt\").style.overFlow = \"hidden\";\n";
		
		print "\t\tvar aryData = new Array(".count($array[googlemapdata][item]).");\n";
		print "\t\tvar Title = new Array(".count($array[googlemapdata][item]).");\n";
		print "\t\tvar Contents = new Array(".count($array[googlemapdata][item]).");\n";
		for ( $iCounter = 2; $iCounter < count($array[googlemapdata][item]); $iCounter++ ) {
			$Title = mb_convert_encoding( $array[googlemapdata][item][$iCounter][title], "sjis-win", "UTF-8" );
			$Contents = mb_convert_encoding(  $array[googlemapdata][item][$iCounter][contents],"sjis-win", "UTF-8");
			$ImageUrl = $array[googlemapdata][item][$iCounter][imageurl];

			//すでに、ksesで、タグをWrapsしているので、ここで表示する<>は、安全なものしかのこってない
			$Title		= str_replace("&lt;", "<", $Title );
			$Title		= str_replace("&gt;", ">", $Title );
			$Contents	= str_replace("&lt;", "<", $Contents );
			$Contents	= str_replace("&gt;", ">", $Contents );
			
			print "\t\tTitle[$iCounter] = \"$Title\";\n";
			print "\t\tContents[$iCounter] = \"$Contents\";\n";
			print "\t\taryData[$iCounter] = \"<span class = \\\"big\\\">".$Title."</span><br/>".$Contents."<br/>";
			if ( $ImageUrl != "" ) {
				print "<a href = \\\"".$ImageUrl."\\\"><img src = \\\"$ImageUrl\\\" width = 100/></a>";
			}
			
			print "\";\n";
			$lon = $array[googlemapdata][item][$iCounter][lon];
			$lat = $array[googlemapdata][item][$iCounter][lat];
			
			print "\t\taddMarker(map, $lon,$lat, aryData[$iCounter]);\n";
		}
		//aryData[0] = "aaa";
		//addMarker(map, 135.6421,34.7744, aryData[0]);
		
print "}\n";



	
	//print "\t\t//]]>\n";
	print "\t\t</script>\n";
	return $k;
}

?>

id:gauchon

ありがとうございます.

実例もあって,参考になります.

2007/02/13 10:21:58

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません