2015年7月9日木曜日

2 - ol3.7ex 123b - Feature animation example 2

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

「2123-ol3ex.js」
var map = new ol.Map({
 layers: [
  new ol.layer.Tile({
  /** ol.layer.Tile 
   * For layer sources that provide pre-rendered, tiled 
   * images in grids that are organized by zoom levels for 
   * specific resolutions. 
   * プリレンダリング(事前描画)を提供するレイヤソースのための、
   * 特定の解像度でのズームレベルによって編成されているグリッドの
   * タイルイメージ。(ol3 API)
   */
   source: new ol.source.OSM({
   /** ol.source.OSM 
    * Layer source for the OpenStreetMap tile server.
    * OpenStreetMap タイルサーバのレイヤソース。(ol3 API)
    */
    wrapX: false
   /** wrapX:
    * Whether to wrap the world horizontally. Default is 
    * false.
    * 水平に世界を覆うかどうかを設定します。デフォルトはfalse
    * です。
    * (ol3 API[説明は Stable Only のチェックを外すと表示])
    */
   })
  })
 ],
 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 // 折りたたみ
  })
 }),
 renderer: common.getRendererFromQueryString(),
// 'common.js' により URL にある renderer を返します
 target: 'map',
 view: new ol.View({
  center: [0, 0],
  zoom: 1
 })
});
var source = new ol.source.Vector({
 /** ol.source.Vector 
  * Provides a source of features for vector layers.
  * ベクタレイヤのフィーチャのソースを提供します。(ol3 API)
  */
 wrapX: false
});
var vector = new ol.layer.Vector({
/** ol.layer.Vector
 * Vector data that is rendered client-side.
 * クライアント側で描画されたベクタデータ。(ol3 API)
 */
 source: source
});
map.addLayer(vector);
function addRandomFeature() {
 var x = Math.random() * 360 - 180;
 /** Math.random()
  * The Math.random() function returns a floating-point, 
  * pseudo-random number in the range [0, 1) that is, 
  * from 0 (inclusive) up to but not including 1 
  * (exclusive), which you can then scale to your 
  * desired range. The implementation selects the 
  * initial seed to the random number generation 
  * algorithm; it cannot be chosen or reset by the 
  * user.
  * Math.random() 関数は浮動小数点を返し、0 と 1 の範囲の
  * 擬似乱数、すなわち 0 以上 1 未満、で、任意の範囲に合わせ
  * ることができます。インプリメンテーションは、乱数発生アル
  * ゴリズムのためにイニシャルシードを選択しますが、ユーザが
  * 選んだりリセットできません。
  * (MDN[https://developer.mozilla.org/en-US/docs/Web/
  * JavaScript/Reference/Global_Objects/Math/random])
  */
 var y = Math.random() * 180 - 90;
 var geom = new ol.geom.Point(ol.proj.transform([x, y],
  'EPSG:4326', 'EPSG:3857'));
 /** ol.geom.Point
  * Point geometry.(ol3 API)
  */
 /** ol.proj.transform(coordinate, source, destination)
  * Transforms a coordinate from source projection to 
  * destination projection. This returns a new coordinate 
  * (and does not modify the original).
  * ソース投影から変換先投影に座標変換します。これは、新しい座標
  * を返します(オリジナルを変更しません)。(ol3 API)
  */
 var feature = new ol.Feature(geom);
 /** ol.Feature
  * A vector object for geographic features with a 
  * geometry and other attribute properties, similar 
  * to the features in vector file formats like GeoJSON.
  * GeoJSONのようなベクトルファイル形式のフィーチャに類似した、
  * ジオメトリとその他の属性プロパティを持つ地物フィーチャのため
  * のベクトルオブジェクト。(ol3 API)
  */
 source.addFeature(feature);
}
var duration = 3000;
function flash(feature) {
 var start = new Date().getTime();
 /** Date
  * 日付や時刻を扱うことが可能な、JavaScript の Date 
  * インスタンスを生成します。
  * (MDN[https://developer.mozilla.org/ja/docs/Web/
  * JavaScript/Reference/Global_Objects/Date])
  */
 /** Date.prototype.getTime()
  * ユニバーサル時間に従い、指定された日付の時刻に対応する数
  * 値を返します。
  * GetTime メソッドによって返される値は、1970 年 1 月 1 日 
  * 00:00:00 UTC からの経過ミリ秒です。このメソッドは、日付
  * と時刻を別の Date オブジェクトに割り当てるために使用できま
  * す。
  * (MDN[https://developer.mozilla.org/ja/docs/Web/
  * JavaScript/Reference/Global_Objects/Date/getTime])
  */
 var listenerKey;
 function animate(event) {
  var vectorContext = event.vectorContext;
  /** vectorContext{ol.render.VectorContext}
   * For canvas, this is an instance of 
   * ol.render.canvas.Immediate.
   * キャンバスの場合、これは ol.render.canvas.Immediate 
   * のインスタンスです。
   * (ol3 API[説明は Stable Only のチェックを外すと表示])
   */
  var frameState = event.frameState;
  /** frameState{olx.FrameState}
   * The frame state at the time of the event.
   * イベント時のフレーム状態。
   * (ol3 API[説明は Stable Only のチェックを外すと表示])
   */
  var flashGeom = feature.getGeometry().clone();
  /** getGeometry()
   * Returns the Geometry associated with this feature 
   * using the current geometry name property. By default, 
   * this is geometry but it may be changed by calling 
   * setGeometryName.
   * 現在のジオメトリネームプロパティを使用して、このフィーチャに
   * 関連したジオメトリを返します。デフォルトでは、ジオメトリです
   * が、setGeometryName を呼び出すことによって変更することが
   * できます。(ol3 API)
   */
  /** clone()
   * Clone this feature. If the original feature has 
   * a geometry it is also cloned. The feature id is 
   * not set in the clone.
   * このフィーチャを複製します。元のフィーチャは、ジオメトリ
   * を有する場合にも複製します。フィーチャ ID は、クローンに
   * 設定されていません。(ol3 API)
   */
  var elapsed = frameState.time - start;
  var elapsedRatio = elapsed / duration;
  // radius will be 5 at start and 30 at end.
  var radius = ol.easing.easeOut(elapsedRatio) * 25 + 5;
  /** ol.easing.easeOut(t)
   * Start fast and slow down.
   * 早くしたり遅くしたりします。
   * (ol3 API[説明は Stable Only のチェックを外すと表示])
   */
  var opacity = ol.easing.easeOut(1 - elapsedRatio);
  var flashStyle = new ol.style.Circle({
  /** ol.style.Circle
   * Set circle style for vector features.
   * ベクタフィーチャの円のスタイルを設定。(ol3 API)
   */
   radius: radius,
   snapToPixel: false,
   /** snapToPixel:
    * If true integral numbers of pixels are used as 
    * the X and Y pixel coordinate when drawing the 
    * circle in the output canvas. If false 
    * fractional numbers may be used. Using true 
    * allows for "sharp" rendering (no blur), while 
    * using false allows for "accurate" rendering. 
    * Note that accuracy is important if the 
    * circle's position is animated. Without it, the 
    * circle may jitter noticeably. Default value is 
    * true.
    * true(真)の場合、ピクセルの整数は、出力キャンバスに
    * 円を描画するとき、X と Y のピクセル座標として使用され
    * ます。false(偽)の場合、分数を使用することができます。
    * true(真)を使用すると「シャープ」なレンダリング(ぼ
    * かしなし)を可能にします。一方、false(偽)を使用する
    * と「精密」なレンダリングを可能にします。円の位置がアニ
    * メーション化されている場合は、その精度が重要であること
    * に注意してください。それがなければ、円が著しく小刻みに
    * 動きます。デフォルト値は true です。
    * (ol3 API[説明は Stable Only のチェックを外すと表示])
    */
   stroke: new ol.style.Stroke({
   /** ol.style.Stroke 
    * Set stroke style for vector features. 
    * Note that the defaults given are the Canvas defaults, 
    * which will be used if option is not defined. 
    * The get functions return whatever was entered 
    * in the options;  they will not return the default.
    * ベクタフィーチャのためのストロークスタイルの設定。
    * デフォルトは、オプションが定義されていない場合に使用され
    * る Canvas のデフォルトを与えられることに注意してください。
    * GET関数は、オプションで入力されたものはすべて返します。
    * それらはデフォルトを返しません。(ol3 API)
    */
    color: 'rgba(255, 0, 0, ' + opacity + ')',
    width: 1,
    opacity: opacity
   })
  });
  vectorContext.setImageStyle(flashStyle);
  /** setImageStyle()
   * Set the image style for subsequent draw 
   * operations. Pass null to remove the image 
   * style.
   * その後のドロー操作のための画像のスタイルを設定します。
   * 画像のスタイルを削除するには null を渡します。
   * (ol3 API[説明は Stable Only のチェックを外すと表示])
   */
  vectorContext.drawPointGeometry(flashGeom, null);
  /** drawPointGeometry(pointGeometry, feature)
   * Render a Point geometry into the canvas. 
   * Rendering is immediate and uses the current 
   * style.
   * キャンバスにポイントジオメトリをレンダリングします。
   * レンダリングは即座にされ、現在のスタイルを使用します。
   * (ol3 API[説明は Stable Only のチェックを外すと表示])
   */
  if (elapsed > duration) {
   ol.Observable.unByKey(listenerKey);
   /** ol.Observable.unByKey(key)
    * Removes an event listener using the key 
    * returned by on() or once().
    * on() または once() によって返されたキーを使うことで
    * イベントリスナを削除します。(ol3 API)
    */
   return;
  }
  // tell OL3 to continue postcompose animation
  frameState.animate = true;
 }
 listenerKey = map.on('postcompose', animate);
 /** on
  * Listen for a certain type of event.
  * あるタイプのイベントをリッスンします。(ol3 API)
  */
 /** postcompose イベント
  * レイヤを描画した後に発生するイベント。
  * (「Layer spy example」参照)
  */
}
source.on('addfeature', function(e) {
 flash(e.feature);
});
window.setInterval(addRandomFeature, 1000);
/** WindowTimers.setInterval()
 * Calls a function or executes a code snippet 
 * repeatedly, with a fixed time delay between 
 * each call to that function. Returns an 
 * intervalID.
 * 関数を呼び出すか、その関数への各呼び出しの間に一定の時間
 * 遅延して、繰り返しコードスニペットを実行します。 
 * intervalID を返します。
 * (MDN[https://developer.mozilla.org/en-US/
 * docs/Web/API/WindowTimers/setInterval])
 */


0 件のコメント: