2016年10月31日月曜日

2 - ol3.19ex 162b - Extent Interaction 2

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

「2162-ol3ex.js」
var vectorSource = new ol.source.Vector({
/** ol.source.Vector
 * Provides a source of features for vector layers. 
 * Vector features provided by this source are suitable 
 * for editing. See ol.source.VectorTile for vector 
 * data that is optimized for rendering.
 * ベクタレイヤのフィーチャのソースを用意します。このソース
 * が提供するベクタフィーチャは、編集に適しています。レンダ
 * リングのために最適化されたベクタデータの 
 * ol.source.VectorTile を参照してください。(ol3 API)
 */
 //url: 'data/geojson/countries.geojson',
 url: 'v3.19.1/examples/data/geojson/countries.geojson',
  /** url
   * Setting this option instructs the source to load 
   * features using an XHR loader (see 
   * ol.featureloader.xhr). Use a string and an 
   * ol.loadingstrategy.all for a one-off download of 
   * all features from the given URL. Use a 
   * ol.FeatureUrlFunction to generate the url with 
   * other loading strategies. Requires format to be 
   * set as well. When default XHR feature loader is 
   * provided, the features will be transformed from 
   * the data projection to the view projection during 
   * parsing. If your remote data source does not 
   * advertise its projection properly, this 
   * transformation will be incorrect. For some formats, 
   * the default projection (usually EPSG:4326) can be 
   * overridden by setting the defaultDataProjection 
   * constructor option on the format. Note that if a 
   * source contains non-feature data, such as a 
   * GeoJSON geometry or a KML NetworkLink, these will 
   * be ignored. Use a custom loader to load these.
   * このオプションを設定すると、XHR ローダーを
   * (ol.featureloader.xhr参照)を使用してフィーチャを
   * ロードするためのソースを指示します。指定された URL から
   * のすべてのフィーチャの1回限りのダウンロードのために 
   * string と ol.loadingstrategy.all を使用してくださ
   * い。他のローディングストラテジと共に URL を生成するため
   * に、ol.FeatureUrlFunctionを使用してください。format 
   * も同様に設定する必要があります。デフォルトの XHR フィー
   * チャローダが提供される場合、フィーチャは、解析中にデータ
   * 投影からビュー投影へ変換されます。リモート・データ・ソー
   * スが適切に投影を示していない場合は、この変換は不正確にな
   * ります。いくつかのフォーマットでは、デフォルトの投影(通
   * 常はEPSG:4326)は、フォーマット上の 
   * defaultDataProjection constructor オプションを設
   * 定することで上書きすることができます。ソースが、このよう
   * な GeoJSON ジオメトリ、または、 KML NetworkLink などの
   * 非フィーチャデータを含んでいる場合、これらは無視される
   * ことに注意してください。これらをロードするために、カス
   * タムローダーを使用してください。
   * (ol3 API[説明は Stable Only のチェックを外すと表示])
   */
 format: new ol.format.GeoJSON()
 /** format
  * he feature format used by the XHR feature loader when 
  * url is set. Required if url is set, otherwise ignored. 
  * Default is undefined.
  * フィーチャのフォーマットは、url が設定されている場合、XHR
  * フィーチャローダーで使用されます。url が設定されている場
  * 合は必須で、それ以外の場合は無視されます。デフォルトは未
  * 定義です。
  * (ol3 API[説明は Stable Only のチェックを外すと表示])
  */
});
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)
    */
  }),
  new ol.layer.Vector({
  /** ol.layer.Vector
   * Vector data that is rendered client-side.
   * クライアント側で描画されるベクタデータ。(ol3 API)
   */
   source: vectorSource
  })
 ],
 target: 'map',
 view: new ol.View({
  center: [0, 0],
  zoom: 2
 })
});
var extent = new ol.interaction.Extent({
/**  ol.interaction.Extent
 * Allows the user to draw a vector box by clicking and 
 * dragging on the map. Once drawn, the vector box can 
 * be modified by dragging its vertices or edges. This 
 * interaction is only supported for mouse devices.
 * ユーザがマップ上でクリックとドラッグにより、ベクタボックス
 * を描画することができます。描画された後、ベクタボックスは、
 * その頂点またはエッジをドラッグすることによって修正すること
 * ができます。このインタラクションは、マウスデバイスでのみサ
 * ポートされています。
 * (ol3 API[説明は Stable Only のチェックを外すと表示])
 */
 condition: ol.events.condition.platformModifierKeyOnly
 /** ol.events.condition.platformModifierKeyOnly
  * (mapBrowserEvent)
  * Return true if only the platform-modifier-key (the 
  * meta-key on Mac, ctrl-key otherwise) is pressed, false 
  * otherwise (e.g. when additionally the shift-key is 
  * pressed).
  * プラットフォーム-モディファイキー(Macではメタキー、他では 
  * Ctrlキー)が押されている場合は true 、そうでない場合(例
  * えば、追加的に shift キーが押されたとき)は false を返し
  * ます。(ol3 API)
  */
});
map.addInteraction(extent);
/** addInteraction(interaction)
 * Add the given interaction to the map.
 * マップへ指定されたインターラクションを追加します。
 * (ol3 API)
 */
extent.setActive(false);
/** setActive(active)
 * Activate or deactivate the interaction.
 * インタラクションを有効、または、無効にします。
 * (ol3 API)
 */
// Enable interaction by holding shift
// shift キーを押し続けることによって、インタラクションを有効
// にします。
this.addEventListener('keydown', function(event) {
/** EventTarget.addEventListener
 * The EventTarget.addEventListener() method registers 
 * the specified listener on the EventTarget it's called 
 * on. The event target may be an Element in a document, 
 * the Document itself, a Window, or any other object 
 * that supports events (such as XMLHttpRequest).
 * EventTarget.addEventListener() メソッドは、それが呼び
 * 出される EventTarget に指定されたリスナを登録します。イベ
 * ントターゲットは、ドキュメントの Element、Document 自身、
 * Window、または(XMLHttpRequest などの)イベントをサポート
 * している他のオブジェクトです。
 * (MDN[https://developer.mozilla.org/en-US/docs/Web/API/
 * EventTarget/addEventListener])
 */
 if (event.keyCode == 16) {
 /** KeyboardEvent.keyCode [Deprecated]
  * The KeyboardEvent.keyCode read-only property represents 
  * a system and implementation dependent numerical code 
  * identifying the unmodified value of the pressed key. 
  * This is usually the decimal ASCII (RFC 20) or Windows 
  * 1252 code corresponding to the key. If the key can't be 
  * identified, this value is 0.
  * KeyboardEvent.keyCode 読み取り専用プロパティは、押された
  * キーの未修正の値を特定するシステムおよび実装に依存する数値
  * コードを表します。これは通常、小数点 ASCII(RFC20)または
  * キーに対応する Windows1252 のコードです。キーは識別できな
  * い場合、この値は0です。
  * (MDN[https://developer.mozilla.org/ja/docs/Web/API/
  * KeyboardEvent/keyCode])
  */
  extent.setActive(true);
 }
});
this.addEventListener('keyup', function(event) {
 if (event.keyCode == 16) {
  extent.setActive(false);
 }
});
 
 

0 件のコメント: