2016年5月30日月曜日

OpenLayers 3 を使ってみよう(番外4:OpenLayers v3.7.0 から v3.16.0 の間に変わった点)

OpenLayers 3 を使ってみよう(その0:はじめに:地理院地図を表示)に目次がある。

 ここでは OpenLayers v3.7.0OpenLayers v3.16.0 の違いについて述べようと思う。
2014年9月に OpenLayers 3 を使ってみよう(その0:はじめに:地理院地図を表示)として,OpenLayers v3.0.0 について一連の投稿を書いた。 その後,OpenLayers 3 を使ってみよう(番外3:OpenLayers ver. 3.0.0 と 3.7.0 の違いについて)として,OpenLayers v3.0.0 と OpenLayers v3.7.0 の違いについて書いた。 それは,v3.7.0 では ol.source.KML などが廃止されるなど大きな変更があったので,書いたものだった。

 今回,2016年5月に気づくと,OpenLayers は v3.16.0 になっていた。いつの間に,という感じがした。 そこで,このブログの OpenLayer 3 を使ってみようのサンプルスクリプトがそのまま使えるか,などについてみてみた,というのが今回の話し。


 v3.7.0 から v3.16.0 の間にもいくつも変更がなされているみたいだった。 バージョンが上がるごとにどのような点に変更が加えられたかは,各バージョンのリリースページを見れば書いてある。 例えば v3.16.0 の場合だと,https://github.com/openlayers/ol3/releases/tag/v3.16.0 がリリースページになっている。 他のバージョンの場合は,URL の最後の「v3.16.0」の部分を該当するバージョンに変えればよい。 あるいは https://github.com/openlayers/ol3/releases/ に行けば,OpenLayers v3 の alpha バージョンからの全てのバージョンのリリースノートを見ることができる。 今回は,OpenLayers 3 を使ってみよう(その0:はじめに:地理院地図を表示)から始まる一連のページで使ったいた項目に関連する変更点について書こう。

(1) ol.format.KML のデフォルト値の変更
 まず,v3.11.0 で行われた ol.format.KML のデフォルト値の変更について書こう。
OpenLayers のバージョンアップでは,v3.XX.YY から v3.(XX+1).0 へのバージョンアップでは大きな変更がなされている。 (逆にある程度以上の変更がなければ,XX の部分の数字は変えない) 大きな変更点に関しては,各バージョンのリリースページの Upgrade notes という項目に書いてある。
 v3.11.0 のリリースページにおいては,
ol.format.KML changes
ol.interaction.DragBox and ol.interaction.DragZoom changes
Removal of ol.source.TileVector
ol.Map#forEachFeatureAtPixel changes for unmanaged layers
があげられていた。

 この中でこのサイトに関連するのが最初の ol.format.KML changes だった。 ほんとのところは,v3.11.0 のリリースページをチェックして気づいたんじゃなくて,動作を見たら KML 関連で振る舞いが変わっていたので,調べたら v3.11.0 での変更点にたどり着いた,ということなのだが…。
 では,何が変わったのかというと,ol.format.KML() において,placemark の横にデフォルトで <name> フィールドが文字として表示されるようになった点である。 KML フォーマットの経路データを読み込む際,データの種類を指定できる。その際,データが line や multiline ではなく「点」を表していて,かつその「点」にアイコンが設定されていて,さらに <name> というタグ指定されている場合,これまでは単にアイコンが表示されるだけだったが,v3.11.0 の変更で,デフォルトで地図のアイコンの横に <name> フィールドの情報が文字で表示されるようになってしまった。なぜこの変更が必要だったのかよくわからないが,とにかくそう変更されていた。

 ではどうすればよいか,ということになるが,v3.11.0 のリリースページによると,KML フォーマットの指定の際に
new ol.format.KML({ showPointNames: false });
とすればよいと書いてあった。 実際,このようにすれば文字列は消えた。 しかし,なんでこれをデフォルトにしたのかなぁ?? それが不思議でならない…。

 ちなみに OpenLayers 3 を使ってみよう(その13:センターマークと凡例の表示・KML による経路+マーカーの場合)のサンプルページの例を示すと,以下のようになる。
  ・「その13」のサンプル (デフォルトのまま)
  ・「その13」のサンプル (showPointNames: false としたもの)

(2) ol.format.GPX() のデータを読み込めるようになっていた
 これも https://github.com/openlayers/ol3/releases/tag/v3.11.0 で改善されたと思われる項目である。 実は,v3.11.0 以前のバージョンでは,GPX 形式のファイルをうまく読み込めなかった。 なぜかよくわかっていなかったが,どうやら GPX で OpenLayers でサポートされていない形式のデータを読み込むと読み込みエラーを起こしていたらしい。 それが v3.11.0 以降で読み込めるようになった,ということだった。 つまりは,私の作った GPX 形式のファイルにミスがあった,ということなのだが…。
 その14:GPX による経路の表示・各点の通過時刻を知るに GPX 形式のデータを用いた経路図の作成について書いたのでそちらも見て欲しい。

 ここに書いた以外にも変更はあると思うので,適宜 http://openlayers.org/en/v3.16.0/apidoc/ol.html などのリファレンスや,Examples を参照してみてほしい。

0 件のコメント: