2015年3月19日木曜日

2 - ol3.3ex 86b - Bind HTML input example 2

「bind-input.js(286-ol3ex.js)」は、マップを表示するための JavaScript ファイルです。

「286-ol3ex.js」
function checkWebGL(evt) {
 document.getElementById('no-webgl').style.display =
  ol.has.WEBGL ? 'none' : '';
  /** ol.has.WEBGL{boolean}
   * True if browser supports WebGL.
   * ブラウザが WebGL をサポートしていたら true。(ol3 API)
   */
  /** 条件演算子 condition ? expr1 : expr2 
   * condition: true か false かを評価する条件文です。
   * expr1, expr2: 各々の値の場合に実行する式です。
   * condition が true の場合、演算子は expr1 の値を選択します。
   * そうでない場合は expr2 の値を選択します。
   * (MDN[https://developer.mozilla.org/ja/docs/Web/
   * JavaScript/Guide/Expressions_and_Operators])
   */
 document.getElementById('has-webgl').style.display =
  ol.has.WEBGL && !evt.glContext ? '' : 'none';
  /** glContext()
   * WebGL context. Only available when a WebGL renderer 
   * is used, null otherwise.
   * WebGLのコンテキスト。WebGL レンダラを使用する場合にだけ
   * 利用でき、そうでない場合は null。
   * (ol3 API[説明は Stable Only のチェックを外すと表示])
   */
 document.getElementById('webgl').style.display =
  evt.glContext ? '' : 'none';
}
var layer = new ol.layer.Tile({
 source: new ol.source.OSM()
 /** ol.source.OSM 
  * Layer source for the OpenStreetMap tile server.
  * OpenStreetMap タイルサーバのレイヤソース。(ol3 API)
  */
});
layer.once('precompose', checkWebGL);
/** once()
 * Listen once for a certain type of event.
 * あるタイプのイヴェントを1回リッスンします。
 * Return: Unigue key for the listener.(ol3 API)
 */
/** precompose イベント
 * レイヤを描画する前に発生するイベント。
 * (「Layer spy example」参照)
 */
var view = new ol.View({
 center: [0, 0],
 zoom: 2
});
var map = new ol.Map({
 layers: [layer],
 renderer: exampleNS.getRendererFromQueryString(),
 /** 'example-behavior.js' により URL にある renderer を返します */
 target: 'map',
 controls: ol.control.defaults({
 /** controls
  * Controls initially added to the map. 
  * If not specified, ol.control.defaults() is used.
  * 初期設定で、マップに追加されたコントロール。
  * 明示されていなければ、ol.control.defaults() が使用されます。
  * (ol3 API)
  */
 /** ol.control.defaults()
  * デフォルトでは、マップに含まコントロールのセット。
  * 特に設定しない限り、これは、以下の各コントロールの
  * インスタンスを含むコレクションを返します。(ol3 API)
  * ol.control.Zoom, ol.control.Rotate, ol.control.Attribution
  */
  attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
  /** @type 
   * 値のタイプ(型)の説明 - 式などで表示
   * (@use JSDoc[http://usejsdoc.org/]より)
   */
   collapsible: false // 折りたたみ
  })
 }),
 view: view
});
var visible = new ol.dom.Input(document.getElementById('visible'));
/** ol.dom.Input
 * Helper class for binding HTML input to an ol.Object.
 * ol.Object に HTML input要素を接続するためのヘルパークラス。
 * (ol3 API)
 */
visible.bindTo('checked', layer, 'visible');
/** bindTo 
 * The bindTo method allows you to set up a two-way 
 * binding between a `source` and `target` object. 
 * The method returns an object with a `transform` 
 * method that you can use to provide `from` and 
 * `to` functions to transform values on the way 
 * from the source to the target and on the way back.
 * bindTo メソッドは、`source` と ` target` オブジェク
 * ト間の結合を双方向に設定することができます。メソッドは、
 * ソースからターゲットに、および、その逆方向に値を変換
 * する、 `from` と ` to` ファンクションを提供するため
 * に使用することがでる `transform` メソッドをともなっ
 * た、オブジェクトを返します。
 * (ol3 API[説明は Stable Only のチェックを外すと表示])
 */
var opacity = new ol.dom.Input(document.getElementById('opacity'));
opacity.bindTo('value', layer, 'opacity')
 .transform(parseFloat, String);
 /** parseFloat()
  * 引数として与えられた文字列を解析し、浮動小数点数を返します。
  * (MDN[https://developer.mozilla.org/ja/docs/Web/
  * JavaScript/Reference/Global_Objects/parseFloat])
  */
var hue = new ol.dom.Input(document.getElementById('hue'));
hue.bindTo('value', layer, 'hue')
 .transform(parseFloat, String);
var saturation = new ol.dom.Input(document.getElementById('saturation'));
saturation.bindTo('value', layer, 'saturation')
 .transform(parseFloat, String);
var contrast = new ol.dom.Input(document.getElementById('contrast'));
contrast.bindTo('value', layer, 'contrast')
 .transform(parseFloat, String);
var brightness = new ol.dom.Input(document.getElementById('brightness'));
brightness.bindTo('value', layer, 'brightness')
 .transform(parseFloat, String);

var rotation = new ol.dom.Input(document.getElementById('rotation'));
rotation.bindTo('value', view, 'rotation').transform(parseFloat, String);
var resolution = new ol.dom.Input(document.getElementById('resolution'));
resolution.bindTo('value', view, 'resolution').transform(parseFloat, String);

0 件のコメント: