ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Google Mapで多角形を地図の上に書くとき、どーやっても書けない時、チェックしたいとこ

2007-03-04 23:43:06 | JavaとWeb

 GoogleMapで、AJAXをつかって、クリックされたところに、線を描いて、最後、閉じるボタンが押されると、最後の点と原点を結んで閉じるというものを作ってみました(クリアボタンをクリックすると、全部初めからやり直し)。

ソースはこんなかんじ

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 

"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml"  xmlns:v = 
"urn:schemas-microsoft-com:vml">
<HEAD><TITLE>多角形描画テスト</TITLE>
<META http-equiv=content-type content="text/html; charset=utf-8">
 <script src="http://maps.google.co.jp/maps?

file=api&v=1&key=自分のGoogleMapのキーが入る" type="text/javascript"></script>

<SCRIPT type=text/javascript>
    //<![CDATA[

var	map;
var	points	=	new Array();
var	linecol	=	"#FF0000";	//	線の色
var	lastclick;

//*====================================*//
//*				   //
//*	クリックされた		   //
//*				   //
//*====================================*//
function map_click(overlay,point)
{
	points.push(point);
	if ( points.length	>	1 )
	{
		//	現在のをクリア
		map.clearOverlays();

		//	多角形作成
		map.addOverlay(new GPolyline(points,linecol,6,0.5));
	}

}

//*====================================*//
//*				   //
//*	閉じるクリック		   //
//*				   //
//*====================================*//
function end_click()
{

	//	エラーチェック
	if ( points.length	<	1 )
	{
		alert("まだクリックされてません");
		return;
	}

	//	原点をいれて、閉じる
	points.push(points[0]);
	//	現在のをクリア
	map.clearOverlays();
	//	多角形作成
	map.addOverlay(new GPolyline(points,linecol,6,0.5));
}

//*====================================*//
//*				   //
//*	クリアクリック		   //
//*				   //
//*====================================*//
function clear_click()
{
	points	=	new	Array();
	map.clearOverlays();
}

//*====================================*//
//*				   //
//*	開始			   //
//*				   //
//*====================================*//
function load()
{
	if(! GBrowserIsCompatible())
	{
		alert("お使いのブラウザはGoogle Maps APIに対応していません");
		return;
	}

        map = new GMap(document.getElementById("map"));
	map.centerAndZoom(new GPoint(139.732114,35.672646), 0);
	map.disableDragging();
	map.addControl( new GMapTypeControl() );
	map.addControl( new GSmallMapControl() );

	// イベントの設定
	GEvent.addListener(map,"click",map_click);

}


//]]>
</script>
</head>
<body onLoad="load()" onunload="GUnload()">
<DIV style="width : 500px;height : 500px" id="map"></DIV>
<input type=button id="end" onclick="end_click()" value="閉じる">
<input type=button id="clear" onclick="clear_click()" value="クリア">
</body>
</html>

(上記< >は、本当は半角、「自分のGoogleMapのキーが入る」には、Google Mapで取得したキーが入る)

 簡単ジャン。。。
 って思いますよね。。。

 1箇所をのぞいて、そうです。。。
 でも、1箇所だけ、うぃりあむのいたずらがあります。

 赤字のところ

xmlns:v = "urn:schemas-microsoft-com:vml"

 を抜かすとエラーになり、多角形が書けません(>_<!)

 コレに気づくのに。。。今日一日使ったよ(;_;!)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rimoに対抗?したYouTubeのだら見サイト、oreseg(オレセグ)だって。。

2007-03-04 19:13:57 | Weblog

ここのニュース
テレビのようにYouTube再生 ペパボからもWii対応動画サービス
http://www.itmedia.co.jp/news/articles/0703/02/news096.html

で知ったんだけど、YouTubeのだら見サイト(だらだら自動的にYouTubeの動画を流してくれるサイト)で、oreseg(オレセグ)というができたそうな。

Rimoに対抗?

ニュースには、「Wii対応動画サービス」ってかいてあるけど、ふつうにPCでも見れる。

ここ
oreseg(オレセグ)
http://oreseg.com/

で、適当に見たい動画をクリックすると、そいつがはじまって、それが終わると、その後の番組を流すみたい。。

うーん。。セレクトが(^^)





  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Hello World程度のデータベース(その9:概念スキーマ(7)第二正規形の方法)

2007-03-04 15:09:12 | 土日シリーズ

情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「Hello World程度のデータベース」です。

現在、正規化についてやっています。
データを1箇所にだけ現れるようにする手法が正規化で、正規化のレベルとして、第一正規形から第五正規形まであります。でも、普通DBを作るには第一~第三正規形まででよく、それは、以下のとおりです。

第一正規形:繰り返しをなくす
第二正規形:エンティティごとにまとめ、主キーを決め、
   主キーが決まると、他の属性値の値がきまるようにする
    →これを主キーに対して完全関数従属といいます
第三正規形:主キー以外で、ある値が決まると、他の値が決まってしまう

 前回は、第二正規形をやりました。第二正規形は、「主キーに対して完全関数従属」にするということです。それについて説明しました。
 今回は、その第二正規形にする方法です。




■第二正規形にする方法
 第二正規形は、「主キーに対して完全関数従属」なのですが、この目的は、1つしかないものを、2箇所も3箇所も書くのは冗長だし、どっちかを更新して、他方を更新しないっていうことがありえるので、1箇所にまとめましょう(=1事実1箇所)っていう話です。

 つまり、実在する1つのものを、1箇所にまとめるっていうことです。

 さて、どうすればまとまるか?ということを考えたとき、そもそも、データっていうのは、ここ

あるモノや事柄(出来事)に関して、
   ある側面からみた結果を、
     数値、記号(文字による文章や画像なども含む)であらわしたもの


としました。そして、あるものっていうのが、エンティティ、ある側面から見たっていうのが、属性って言いました。
 つまり、「実在する1つのもの」っていうのは、上記の定義で言うエンティティのことですから、


・まず、データをエンティティごとにまとめて
・そのエンティティで一意になるものに主キーをつける

ってことをすると、第二正規形ができそうです。
っていうか、強引なんですけど、そうします(^^)




■つまり、こういうようにやります。

 つまり、まず、
・データをまとめる
  例:受注日、担当者氏名、取引先名称、取引先住所、受注商品、受注単価、受注数量

・第一正規形する(繰り返しの部分を分離)
  例:受注商品、受注単価、受注数量は繰り返しなので
   受注日、担当者氏名、取引先名称、取引先住所、受注番号
   受注番号、明細番号、受注商品、受注単価、受注数量にわける

したあとで、
(1)データをエンティティと属性部分に切り分けて
   受注-日、受注-番号
   担当者-氏名、
   取引先-名称、取引先-住所 (ハイフンの前がエンティティ、あとが属性)

(2)一意にできるものがあったら、そいつを主キー、なければ番号をつけて主キーにして
   受注-日、受注-番号
   担当者-氏名、担当者-番号
   取引先-名称、取引先-住所、取引先-番号

(3)分離元のエンティティに、その主キーの番号をいれる
   受注-日、受注-番号、担当者-番号、取引先-番号
   担当者-氏名、担当者-番号
   取引先-名称、取引先-住所、取引先-番号

こんなかんじ。。




■注意点

 ただし、注意することがあります。

エンティティ名称「だけで」判断してしまうと、主キーと連動しないものまで分離してしまうことがある。

 これは、エンティティの多重継承のようなときに起きる話なのですが、エンティティ名をもとに分離してしまうと、本来分離元の主キー(受注明細キー)に連動して動くもの(=分離してはいけないもの)まで、分離してしまうことがあります。

 あくまでも「主キーに対して完全関数従属」、つまり主キーと連動して動くことが大切です。

例:受注明細の場合、商品単価は、受注時の単価です。
 だから、
  受注番号、明細番号、受注商品名、受注商品単価、受注数量にわける

 になるのですが、ここでエンティティ名だけ見ると、商品名、商品単価とくるので、
  商品-番号、商品-名、商品-単価
  受注-番号、明細-番号、受注-数量、商品-番号にわけられそうですが、わけられないです。こうやってわけてしまうと、受注後に、商品単価が変わると、受注したときの商品単価も変わってしまいます(>_<!)


エンティティ名は、より抽象的なものに含まれることがある

 たとえば、受注担当者とは、従業員がなるもの(たいていは)なので、受注担当者というエンティティではなく、より抽象的な、従業員というエンティティをたてることになります。そういう読み替えが、たいてい必要になってきます。


属性名が省略、エンティティ名が省略されているデータがある

 たとえば、「取引先」のような、エンティティ名だけのデータ(たいてい、取引先名)や、「住所」(だれかの住所です。申請者住所とか)のような属性名だけのデータがあります。これらは省略されているので、省略されているエンティティや属性を補います。




 ってことで、第二正規形までできたということで、次は第三正規形についてです。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする