こちらのページでは,ExcelからInternet ExplorerでWebページを開く手法やワークシートの値を引数としてクエリをかける手法などを紹介しました。
WebGIS側でその引数を活用するためには,緯度と経度に分割する処理が必要になりますので,引数を受け取ったHTML内のJavascriptで処理する必要があります。
このページの例のように,
http://・・・html?lon=139.75&lat=35.68
などでブラウザを開いた後,WebGISで使えるように,?以降の部分のQuery Stringを分解し,Javascriptの配列変数に入力する必要があります。
HTMLページのJavascript部分に以下のようなコードを作成します。
1 2 3 4 5 6 7 |
var QS = new Array; if (location.search.length > 1) { var m_Array = location.search.substr(1).split("&"); for (idx in m_Array) { QS.push(m_Array[idx].split("=")); } } |
〔1行目〕
QS(Query String)という配列を用意しています。以降で二次元配列として用いられます。
〔2行目〕
locationオブジェクトのsearchプロパティは,?で始まる検索クエリ部分を取得します。length >1 の条件は,1文字目が?なので2文字以上のQuery Stringがある場合のみ,If ブロック内を処理します。
〔3行目〕
“&” で分割したものをm_arrayという一次元配列に代入しています。location.search.substr(1)では,Query Stringの2文字目から(1文字目は0番目なので)最後の文字列までを対象にします。上記の例で順に見ると,
- Query String そのもである location.search の中身は “?lon=139.75&lat=35.68” です。
- location.search.substr(1) で”?”を取り除き,”lon=139.75&lat=35.68″ となります。
- location.search.substr(1).split(“&”) で “lon=139.75” と “lat=35.68” に分割しています。
- よって,m_Array[0]=”lon=139.75″ と m_Array[1]=”lat=35.68″ に代入されます。
ちなみに,substr(a,b)は文字列のa番目からb個の文字列を取り出すことができますが,2番めの引数bを省略すると,a番目からすべての文字列を取り出すことができます。
〔4行目〕
m_Arrayの要素idxでループします。上記の例の場合,idx=0,1 の順に繰り返し処理されます。
〔5行目〕
m_Array[idx]を”=”で分割したものをQSの配列に追加します。上記の例では,
- m_Array[0].split(“=”) で “lon=139.75” を “lon” と “139.75” に分割します。
- それらをQSにpush(配列要素に追加)するため,QS[0][0]=”lon”, QS[0][1]=”139.75″ となります。
- 同様に,QS[1][0]=”lat” と QS[1][1]=”35.68″となります。
WebGISのコントロール部分で,経度・緯度にそれぞれ QS[0][1] と QS[1][1] を与えるなどの処理へ渡します。