﻿  //経度緯度から住所を取得しそれに関連するものを表示します。
  //施設のURLへ直接リンクするようにしています。
 
	
		
	
//経度緯度から住所を検索開始------------

function addressSearch (){
	     //基本マーカー以外全てを削除します。
        　	del_all();		
	
	    //世界測地系の緯度経度で以下を扱います。
	     var wy = BasemyMarkPosition.lat(); //世界系緯度
	     var wx = BasemyMarkPosition.lng(); //世界系経度
         
		//緯度経度から住所をjsonにて結果を受け取ります。
		//Toy Service　http://www.finds.jp/wsdocs/rgeocode/index.htmlのＡＰＩを利用しています
		$('yado_ichiran').innerHTML = '<p style="padding:2px"><img src="scr_hol/ajax-loader.gif" \/><br />検索中...<\/p>';
		
     
		// API リクエストURL 生成
		var url = 'http://www.finds.jp/ws/rgeocode.php'
			+ '?jsonp=ad_callback'
			+ '&lat=' + wy + '&lon=' + wx
	
		// リクエスト実施
		var script     = document.createElement( 'script' );
		script.type    = 'text/javascript';
		script.charset = 'utf-8';
		script.src     = url;
		document.getElementsByTagName("head")[0].appendChild( script );
		// 成功すると下の ad_callback() が実行される
		
	
		//----cgiに必要データを送信終了
}




		//----cgiから受信したデータを加工します
function ad_callback(json){
		$('yado_ichiran').innerHTML = "";
		//alert('json.status' + json.status);
		var editword = ""
		jusho   = ""            //住所
		ad_ken  = "";           //地点の都道府県を取得
		ad_shi  = "";           //地点の市を取得
		ad_cho  = "";           //地点の町を取得
		ad_banchi  = "";        //地点の番地を取得
		
		switch (json.status) {

		  case 200:
		  //alert('json.result.municipality.mname200=' + json.result.municipality.mname);
 		  //alert('json.result.local[0].section200=' + json.result.local[0].section);
        
		   ad_ken = json.result.prefecture.pname ;
		   ad_shi = json.result.municipality.mname ;
		   ad_cho = json.result.local[0].section ;
		   ad_banchi = json.result.local[0].homenumber ;
		   BasemyInfo = '<div style="padding:4px;font-size:8pt;background-color:#cee7b5;"><b>住所:</b><br>' + ad_ken + ad_shi + ad_cho + ad_banchi + '</div>';

		　 //町、番地まで入れると郵便番号が出ない為、引数(editword)には含めない
		　 //後で、ad_choを参照する
		   editword = ad_ken + ad_shi;
		   //alert('editword200=' + editword);
        
		    //引数(editword)をpostSearchに渡し、郵便番号検索開始します。
		    postSearch (editword);
		   break;

		  case 201:
		//alert('json.result.municipality.mname201=' + json.result.municipality.mname);
 	
		   ad_ken = json.result.prefecture.pname ;
		   ad_shi = json.result.municipality.mname ;
		   BasemyInfo = '<div style="padding:4px;font-size:8pt;background-color:#cee7b5;"><b>住所:</b><br>' + ad_ken + ad_shi + '</div>';
		   editword = ad_ken + ad_shi;
		    //引数(editword)をpostSearchに渡し、郵便番号検索開始します。
		    postSearch (editword);
		   break;

		  case 202:
		//alert('json.result.municipality.mname202=' + json.result.municipality.mname);
 	        //alert('json.result.local[0].section202=' + json.result.local[0].section);
        	   ad_ken = json.result.prefecture.pname ;
		   ad_shi = json.result.municipality.mname ;
		   ad_cho = json.result.local[0].section ;
		   BasemyInfo = '<div style="padding:4px;font-size:8pt;background-color:#cee7b5;"><b>住所:</b><br>' + ad_ken + ad_shi + ad_cho + '</div>';

		　　//町、番地まで入れると郵便番号が出ない為、引数(editword)には含めない
		　 //後で、ad_choを参照する
		   editword = ad_ken + ad_shi;
		    //引数(editword)をpostSearchに渡し、郵便番号検索開始します。
		    postSearch (editword);
		   break;

		  default:
		   BasemyInfo = '<div style="padding:4px;font-size:8pt;background-color:#cee7b5;"><font color="red">指定の緯度経度から<br>住所を取得する事ができませんでした。<br>別の場所を指定してください</font></div>'; 
		   //基本のマーカー(BasemyMarker)、情報ウィンドウ(BasemyInfo)の表示後obSearch()へ移動
		   show_makinfo();
		}	
			
				

	}





//郵便番号検索開始-------
//http://groovetechnology.co.jp/webservice/zipsearch/

function postSearch (editword){

			//1.受信した住所のデータから市または郡のキーワードを取得します。	
			 var num = ad_shi.indexOf("郡",2);
		     var word_shi = "";
		     var keyword ="";
		    if(num != -1)
			{
				for( i=0 ; i <= num ; i++)
				{
				word_shi += ad_shi.charAt(i);
				}
			}
			
			else
			{
			//市が含まれている場合の検索
		     num = ad_shi.indexOf("市",2);
		   	if(num != -1)
			{
				for( i=0 ; i <= num ; i++)
				{
				word_shi += ad_shi.charAt(i);
				}
			}
			}
			
		//郡でも市でもない場合はそのものを検索します
			 if(editword==""){
			word_shi = ad_shi;
			}

	　　　　	//editwordをURI変換します	
		
			
			//このとき、市または郡（都道府県も含む）のキーワードを利用してWikipediaで検索できるよう
			//指定の場所に表示します。
				var keyword_ken = encodeURIComponent(ad_ken) ;
				var keyword_shi = encodeURIComponent(word_shi) ;
				var wiki_ken = 'http://wikipedia.simpleapi.net/api?keyword=' + keyword_ken + '&output=html';
				var wiki_shi = 'http://wikipedia.simpleapi.net/api?keyword=' + keyword_shi + '&output=html';
				
			//Wikipediaで検索した結果を表示する
				BasemyInfo += '<div style="padding:4px;font-size:8pt;background-color:#cee7b5;"><b>Wikipedia:</b><br><a href="' + wiki_ken + '" target="_blank">' + ad_ken + '</a>　　<a href="' + wiki_shi + '" target="_blank">' + word_shi + '</a></div>';
				//Wikipedia htmlリンク作成終了
			
			//住所を表示する場所に検索中を表示します
			$('yado_ichiran').innerHTML = '<p style="padding:4px"><img src="scr_hol/ajax-loader.gif" \/><br />検索中...<\/p>'			

			var keyword = encodeURIComponent(editword) ;
		

			var url = 'http://api.postalcode.jp/v1/zipsearch' 
			+ '?word=' + keyword
			+ '&callback=post_callback'
			
			// リクエスト実施
			var script     = document.createElement( 'script' );
			script.type    = 'text/javascript';
			script.charset = 'utf-8';
			script.src     = url;
			document.getElementsByTagName("head")[0].appendChild( script );
			// 成功すると下の post_callback() が実行される
			
}
			

			
		
		//3.郵便番号検索結果を受信し、さらにそのデータの中から町に一致するものを選択します
function post_callback (json){
			var post_num = "" ;
			//alert('post_callback()成功!');
			$('yado_ichiran').innerHTML = "";
			//データが空の場合は検索できなかった旨表示し、終了する
			if(!json.zipcode.a1){
				BasemyInfo += '<div style="padding:4px;font-size:8pt;background-color:#cee7b5;"><b>郵便番号:</b><br>取得できませんでした</div>';
			//基本のマーカー(BasemyMarker)、情報ウィンドウ(BasemyInfo)の表示後obSearch()へ移動
		   	show_makinfo();
				}
				
				
			//データが存在する場合は町と一致するものを探し出しその郵便番号を採用します。
			else{
			var baddress ="";
			for (i in json.zipcode)
			{	
				//正規表現にてマッチする町があるかどうかを調べます
				var reg = new RegExp((json.zipcode[i]).town);
				//存在すればその郵便番号を取得します
				
				if(ad_cho.match((json.zipcode[i]).town ))
				{
				post_num = (json.zipcode[i]).zipcode;
				
				}
			}
			
		
			//一致するものが無ければ、一番最初の郵便番号データを採用します。
			if(post_num == "")
			{
				post_num = json.zipcode.a1.zipcode ;
			}
			
			
			
			//郵便番号を表示します
				BasemyInfo += '<div style="padding:4px;font-size:8pt;background-color:#cee7b5;"><b>郵便番号:</b><br>' + post_num + '</div>';
			
			
			}	

//基本のマーカー(BasemyMarker)、情報ウィンドウ(BasemyInfo)の表示後obSearch()へ移動
		   show_makinfo();

}
	
//---------郵便番号検索終了-------






    
    











