ExcelからHTMLへ値を渡す。

こちらのページでは,ExcelからInternet ExplorerでWebページを開く手法やワークシートの値を引数としてクエリをかける手法などを紹介しました。
WebGIS側でその引数を活用するためには,緯度と経度に分割する処理が必要になりますので,引数を受け取ったHTML内のJavascriptで処理する必要があります。

このページの例のように,
http://・・・html?lon=139.75&lat=35.68
などでブラウザを開いた後,WebGISで使えるように,?以降の部分のQuery Stringを分解し,Javascriptの配列変数に入力する必要があります。
HTMLページのJavascript部分に以下のようなコードを作成します。

〔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番目なので)最後の文字列までを対象にします。上記の例で順に見ると,

  1. Query String そのもである location.search の中身は “?lon=139.75&lat=35.68” です。
  2. location.search.substr(1) で”?”を取り除き,”lon=139.75&lat=35.68″ となります。
  3. location.search.substr(1).split(“&”) で “lon=139.75” と “lat=35.68” に分割しています。
  4. よって,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の配列に追加します。上記の例では,

  1. m_Array[0].split(“=”) で “lon=139.75” を “lon” と “139.75” に分割します。
  2. それらをQSにpush(配列要素に追加)するため,QS[0][0]=”lon”, QS[0][1]=”139.75″ となります。
  3. 同様に,QS[1][0]=”lat” と QS[1][1]=”35.68″となります。

WebGISのコントロール部分で,経度・緯度にそれぞれ QS[0][1] と QS[1][1] を与えるなどの処理へ渡します。

関連記事