2017年5月16日火曜日

OpenLayers4 Tutorials - 1 Introduction to OpenLayers

Introduction to OpenLayers
(http://openlayers.org/en/latest/doc/tutorials/introduction.html)
OpenLayers の紹介

目的

バージョン 3 で、OpenLayers web マッピング ライブラリを根本的にリニューアルしました。広く使われているバージョン 2 では、Javascript 開発の初期の時代に始まり、ますます不具合が出てきました。それで、現代のデザイン・パターンを使って、完全に書き直されました。

最初のリリースは、バージョン 2 で提供される機能の多くをサポートし、商用やフリーの広い範囲のタイルソース、および、最も一般的なオープンソースのベクタデータフォーマットのサポートを目的としています。バージョン 2 と同様に、データは、どんな投影法にもなります。最初のリリースは、マップを簡単に回転やアニメーションさせるような、いくつかの追加機能も追加します。

3D マップの表示や WebGL を使用して大きなベクタデータセットをすばやく表示するなどの重要な新機能を、今後のリリースで追加できるように設計されてます。


Google Closure

OpenLayers は、Closure Compiler[クロージャコンパイラ]でコンパイルできるような方法で書かれました。その「高度な」コンパイルモードは、他の使用可能なものを超える圧縮レベルを提供します。


パブリック API

Closure Compiler の高度な最適化を使用することは、プロパティとメソッドの名前が変更され(longMeaningfulName が xB になる)、ライブラリを使用するアプリケーションで効果的に使用できないことを意味します。使用できるためには、それらが明示的にエクスポートされなければなりません。つまり、エクスポートされる名前は、名前は変更されず、効果的にライブラリのパブリック API になります。これらのエクスポート可能なプロパティとメソッドはソース内でマークされ、API ドキュメントに記載されます。これは、ライブラリの公式にサポートされている API です。これらのエクスポート可能な名前のすべてを含むビルドは、フルビルド[full build]として知られています。このホスト版は、すべてのアプリケーションで使用できます。


カスタムビルド

例えば、モジュールの書き出しがソースで固定される Node とは異なり、クロージャコンパイラを使用して、書き出しがコンパイル時に定義できます。これで特定のサイトまたはアプリケーションのニーズに合わせてカスタマイズされるビルドを簡単に作成することができます。:カスタムビルドはサイトまたはアプリケーションで必要なプロパティとメソッドを書き出すだけです。完全なビルドは大きく、新しい機能がAPIに追加されるにつれてさらに大きくなる可能性が高いため、サイトでは本番ソフトウェアのカスタムビルドを作成することをお勧めします。


レンダラとブラウザのサポート

現在、ライブラリは、2 つのレンダラ、Canvas と WebGLを含んでいます。 それらの両方は、タイル/イメージサーバからラスタデータとベクタデータの両方をサポートします。ただし、WebGL はラベルをサポートしていません。明らかに、Canvas をサポートするこれらのブラウザのみ、Canvas レンダラを使用できます。同様に、WebGL レンダラは、それらのデバイスと WebGL をサポートするブラウザでのみ使用できます。

OpenLayers は、HTML5 や ECMAScript 5 をサポートするすべての近代的なブラウザで動作します。これには、Chrome、Firefox、Safari、Edge が含まれます。Internet Explorer(バージョン9まで)や Android 4.x などの古いブラウザやプラットフォームでは、requestAnimationFrame と Element.prototype.classList のポリフィルが必要です。 KML形式を使用するには、URL に polyfill が必要です。

ライブラリは、デスクトップ/ノート パソコンとモバイルデバイスの両方で使用することを意図しています。


オブジェクトと名前付け規約

トップレベルの名前空間は ol (基本的には、var ol = {};)です。これの下位区分は次の通りです。

● 次の名前空間、ol.layer など、これらは小文字の頭文字を持ちます。
● 静的プロパティおよびメソッドを含む単純なオブジェクト、ol.easing など、これらも、同じように、小文字の頭文字を持ちます。
● 型[type]は、大文字の頭文字を持ちます。これらは主に 'クラス[class]'です。ここでは、ol.Map や ol.layer.Vector(レイヤ名前空間内の Vector クラス)など、プロトタイプの継承を持つコンストラクタ関数を意味します。しかし、配列である ol.Extent のような、他にもより単純な型があります。

ol.layer などのクラス名前空間には、ol.layer.Layer などの同じ名前の基本クラス型があります。これらは主に抽象クラスであり、そこから他のサブクラスが継承します。

ソースファイルも同様に整理され、各クラスの名前空間のディレクトリがあります。名前は、しかし、すべて小文字です。例えば、ol/layer/vector.js です。

OpenLayers は、プライベートプロパティとメソッドの名前、つまり API の一部ではない名前がアンダースコアで終わるという規約に従います。一般に、インスタンスプロパティはプライベートであり、アクセサを使用してアクセスされます。

0 件のコメント: