2015年5月11日月曜日

v3.5.0 がリリースされました

日本時間で(2015.5.5)に v3.5.0 がリリースされました。

Releases v3.5.0 - openlayers/ol3 GitHub
(https://github.com/openlayers/ol3/releases/tag/v3.5.0)より

v3.5.0

Summary

The 3.5.0 release includes features and fixes from a whopping 129 pull requests since 3.4.0. This release removes a number of "experimental" features from the API, so take a close look at the notes below when upgrading.
3.5.0リリースは3.4.0以降の129ものプルリクエスト(訳注:Git でリクエストを出す機能)からの機能と修正が含まれています。このリリースでは、APIから「実験的」な機能の数を除去するため、アップグレード時に以下の注意事項をよく見てください。

Upgrade notes

ol.Object and bindTo
ol.Object と bindTo

The following experimental methods have been removed from ol.Object: bindTo, unbind, and unbindAll. If you want to get notification about ol.Object property changes, you can listen for the 'propertychange' event (e.g. object.on('propertychange', listener)). Two-way binding can be set up at the application level using property change listeners. See #3472 for details on the change.
次の実験的方法、bindTo、unbind、および unbindAll、が ol.Object から削除されています。あなたが ol.Object のプロパティの変更についての通知を取得したい場合は、「propertyChange」イベント(例えば object.on('propertychange'、listener))をリッスンすることができます。双方向 binding は、プロパティ変更リスナを使用して、アプリケーション·レベルで設定することができます。変更の詳細については、#3472を参照してください。

The experimental ol.dom.Input component has been removed. If you need to synchronize the state of a dom Input element with an ol.Object, this can be accomplished using listeners for change events. For example, you might bind the state of a checkbox type input with a layer's visibility like this:
実験的 ol.dom.Input コンポーネントが削除されました。あなたが ol.Object と DOM 入力要素の状態を同期化する必要がある場合、これは変更イベントのリスナを使用して達成することができます。たとえば、次のようなレイヤ表示のチェックボックス型入力の状態に結合することがあります。
var layer = new ol.layer.Tile();
var checkbox = document.querySelector('#checkbox');

checkbox.addEventListener('change', function() {
 var checked = this.checked;
 if (checked !== layer.getVisible()) {
  layer.setVisible(checked);
 }
});

layer.on('change:visible', function() {
 var visible = this.getVisible();
 if (visible !== checkbox.checked) {
  checkbox.checked = visible;
 }
});


New Vector API
新しい Vector API

The following experimental vector classes have been removed: ol.source.GeoJSON, ol.source.GML, ol.source.GPX, ol.source.IGC, ol.source.KML, ol.source.OSMXML, and ol.source.TopoJSON. You now will use ol.source.Vector instead.
以下の実験的ベクタクラスが削除されました:ol.source.GeoJSON、ol.source.GML、ol.source.GPX、ol.source.IGC、ol.source.KML、ol.source.OSMXML、ol.source、TopoJSON。代わりに ol.source.Vector を使用します。

For example, if you used ol.source.GeoJSON as follows:
たとえば、次のように ol.source.GeoJSONを 使用した場合:
var source = new ol.source.GeoJSON({
 url: 'features.json',
 projection: 'EPSG:3857'
});

you will need to change your code to:
次ようにコードを変える必要があります
var source = new ol.source.Vector({
 url: 'features.json',
 format: new ol.format.GeoJSON()
});

See http://openlayers.org/en/v3.5.0/examples/vector-layer.html for a real example.

実際に使われている例は、http://openlayers.org/en/v3.5.0/examples/vector-layer.html を参照してください。

Note that you no longer need to set a projection on the source!
ソースに投影を設定する必要がないことに注意してください。

Previously the vector data was loaded at source construction time, and, if the data projection and the source projection were not the same, the vector data was transformed to the source projection before being inserted (as features) into the source.
これまでは、ベクタデータは、ソース構築時にロードされ、そして、データ投影とソース投影が同じでなかった場合、ベクタデータは、ソースに(フィーチャとして)挿入される前に、ソース投影に変換しました。

The vector data is now loaded at render time, when the view projection is known. And the vector data is transformed to the view projection if the data projection and the source projection are not the same.
ベクタデータは、現在、レンダリング時にロードされまが、そのときビュー投影はわかっています。そして、データ投影とソースの投影が同じでない場合は、ベクタデータは、ビュー投影に変換されます。

If you still want to "eagerly" load the source you will use something like this:
それでもどうしてもソースをロードしたい場合は、このようなものを使用します。
var source = new ol.source.Vector();
$.ajax('features.json').then(function(response) {
 var geojsonFormat = new ol.format.GeoJSON();
 var features = geojsonFormat.readFeatures(response,
  {featureProjection: 'EPSG:3857'});
 source.addFeatures(features);
});

The above code uses jQuery to send an Ajax request, but you can obviously use any Ajax library.
上記コードは、Ajax リクエストを送信するために jQuery を使用しています。

See http://openlayers.org/en/v3.5.0/examples/igc.html for a real example.
実際に使われている例は、http://openlayers.org/en/v3.5.0/examples/igc.html を参照してください。


Note about KML
KML についての注意

If you used ol.source.KML's extractStyles or defaultStyle options, you will now have to set these options on ol.format.KML instead. For example, if you used:
ol.source.KML の extractStyles または defaultStyle オプションを使用した場合は、現在、替りに、ol.format.KML についてこれらのオプションを設定しなければなりません。
var source = new ol.source.KML({
 url: 'features.kml',
 extractStyles: false,
 projection: 'EPSG:3857'
});

you will now use:
現在、つぎのように使用します。
var source = new ol.source.Vector({
 url: 'features.kml',
 format: new ol.format.KML({
  extractStyles: false
 })
});

The ol.source.ServerVector class has been removed. If you used it, for example as follows:
ol.source.ServerVector クラスは取り除かれました。それを使った場合、次のような例です。
var source = new ol.source.ServerVector({
 format: new ol.format.GeoJSON(),
 loader: function(extent, resolution, projection) {
  var url = …;
  $.ajax(url).then(function(response) {
   source.addFeatures(source.readFeatures(response));
  });
 },
 strategy: ol.loadingstrategy.bbox,
 projection: 'EPSG:3857'
});

you will need to change your code to:
次のようにコードを変更する必要があります。
var source = new ol.source.Vector({
 loader: function(extent, resolution, projection) {
  var url = …;
  $.ajax(url).then(function(response) {
   var format = new ol.format.GeoJSON();
   var features = format.readFeatures(response,
    {featureProjection: projection});
   source.addFeatures(features);
  });
 },
 strategy: ol.loadingstrategy.bbox
});

See http://openlayers.org/en/v3.5.0/examples/vector-osm.html for a real example.
実際に使われている例は、http://openlayers.org/en/v3.5.0/examples/vector-osm.html を参照してください。

The experimental ol.loadingstrategy.createTile function has been renamed to ol.loadingstrategy.tile. The signature of the function hasn't changed. See http://openlayers.org/en/v3.5.0/examples/vector-osm.html for an example.
実験的な ol.loadingstrategy.createTile 関数は ol.loadingstrategy.tile に改名されました。関数のサインは変わりません。例は、http://openlayers.org/en/v3.5.0/examples/vector-osm.html を参照してください。


Change to ol.style.Icon
ol.style.Icon に変更

When manually loading an image for ol.style.Icon, the image size should now be set with the imgSize option and not with size. size is supposed to be used for the size of a sub-rectangle in an image sprite.
ol.style.Icon の画像を手動でrローディングするとき、画像サイズは size ではなく imgSize オプションで設定しなければなりません。size はイメージスプライト(一つの画像にまとめられた画像の集まり)でサブレクタングルのサイズのために使用することになっています。


Support for non-square tiles
非スクエアタイルをサポート

The return value of ol.tilegrid.TileGrid#getTileSize() will now be an ol.Size array instead of a number if non-square tiles (i.e. an ol.Size array instead of a number as tilsSize) are used. To always get an ol.Size, the new ol.size.toSize() was added.
非スクエアタイル(例えば、tilsSize のように数値の替りに ol.Size 配列)が使用される場合、ol.tilegrid.TileGrid#getTileSize() の戻り値は、現在、数値の替りに ol.Size 配列です。


Change to ol.interaction.Draw
ol.interaction.Draw に変更

When finishing a draw, the drawend event is now dispatched before the feature is inserted to either the source or the collection. This change allows application code to finish setting up the feature.
描画終了時、フィーチャがソースまたはコレクションどちらかに挿入される前に、現在、drawend イベントは送出されます。この変更は、アプリケーションコードがフィーチャのセットアップを終了することを許可します。

Misc.

If you compile your application together with the library and use the ol.feature.FeatureStyleFunction type annotation (this should be extremely rare), the type is now named ol.FeatureStyleFunction.
ライブラリと一緒にしてアプリケーションをコンパイルし、ol.feature.FeatureStyleFunction 型の注釈(これは非常にまれであるべきである)を使用している場合、型は、現在、ol.FeatureStyleFunction という名前が付けられます。

(New features and fixes リストはサイトをみてください。)


v3.5.0 の examples を試してみます
OpenLayers 3 のホームページ(http://openlayers.org/)の「LATEST」の文中の「v3.5.0」をクリックします。
開いたページ「Downloads for the v3.5.0 release(http://openlayers.org/download/)」の「v3.5.0.zip」ボタンをクリックしてダウンロードします。
展開したフォルダを Eclipse の ol3proj にコピーします。

ディレクトリは次のようににしました。
ol3proj
|-v3.0.0/
|-v3.1.1/
|-v3.2.0/
|-v3.2.1/
|-v3.3.0/
|-v3.4.0/
|-v3.5.0/
|-2xx-ol3ex.html
|-2xx-ol3ex.js
|-2xx-ol3ex-require.js
|-loader.js
|-loader-v3.0.0.js
|-loader-v3.1.1.js
|-loader-v3.2.0.js
|-loader-v3.2.1.js
|-loader-v3.3.0.js

v.3.4.0 の loader.js の名前を loader-v3.4.0.js に変更し、v3.5.0/examples/loader.js を ol3proj 直下にコピーします。
ol3proj
|-v3.0.0/
|-v3.1.1/
|-v3.2.0/
|-v3.2.1/
|-v3.3.0/
|-v3.4.0/
|-v3.5.0/
|-2xx-ol3ex.html
|-2xx-ol3ex.js
|-2xx-ol3ex-require.js
|-loader.js
|-loader-v3.0.0.js
|-loader-v3.1.1.js
|-loader-v3.2.0.js
|-loader-v3.2.1.js
|-loader-v3.3.0.js
|-loader-v3.4.0.js

loader.js の内容を次のように修正します。

---
  if (!raw) {
    // document.write('<scr' + 'ipt type="text/javascript" src="../build/ol.js"></scr' + 'ipt>');
     // ディレクトリ修正
    document.write('<scr' + 'ipt type="text/javascript" src="v3.5.0/build/ol.js"></scr' + 'ipt>');

  } else {
    window.CLOSURE_NO_DEPS = true; // we've got our own deps file
    // document.write('<scr' + 'ipt type="text/javascript" src="../closure-library/closure/goog/base.js"></scr' + 'ipt>');
    // document.write('<scr' + 'ipt type="text/javascript" src="../build/ol-deps.js"></scr' + 'ipt>');
     // ディレクトリ修正
    document.write('<scr' + 'ipt type="text/javascript" src="v3.5.0/closure-library/closure/goog/base.js"></scr' + 'ipt>');
    document.write('<scr' + 'ipt type="text/javascript" src="v3.5.0/build/ol-deps.js"></scr' + 'ipt>');

    document.write('<scr' + 'ipt type="text/javascript" src="' + scriptId + '-require.js"></scr' + 'ipt>');
  }
  document.write('<scr' + 'ipt type="text/javascript" src="' + scriptId + '.js"></scr' + 'ipt>');
}());


以下の examples が削除されました
Mobile full screen example
Geolocation tracking with orientation example
Bind HTML input example

0 件のコメント: