OpenLayers2でGoogleMapをちゃんと表示する。(3度目の正直)
またまた OpenLayers & GoogleMap ネタ
最近(といってもそろそろ1年経ちそう)触り始めたOpenLayersで、去年ハマった問題を書いた。
問題とは、OpenLayers を使って GoogleMap が表示できないこと。
もう少し厳密に言うと、OpenLayersのクラス「OpenLayers.Layer.Google」を使ってGoogleMapが表示されない問題にハマった。
↓そのときの記事
しかも1回で解決しなかったため2つ目の記事を書いた
↓2回目
ありがたいことに、これらの記事へのアクセスが多い。
しかしちゃんとした解決策が書かれていない気がするので、もう一度「ちゃんとした」解決策を書こうと思う
↓実際の現象はこんな感じ
GoogleMap のレイヤだけが正しく表示されず、OpenStreetMap、Vectorレイヤ、UIコントローラは問題なく動作している
また厄介なことに、ブラウザのコンソールを見てもエラーは何も表示されていない。
GoogleMapが表示されない原因は GoogleMapAPI のバージョンアップ(過去バージョンの廃止)によって Openlayersで 正しく動作しなかったため(2回目の記事にも記載している)
2回目の記事では、Openlayersを利用したWEBアプリを作成しているユーザが自力で修正したものを利用していた。
Openlayers2のリポジトリを監視していたところ、その修正のプルリクエストがマージされていた。
そのため、今回はGithubで管理されているOpenlayers2のソースファイルを利用する。
必要なもの & Openlayers.js のビルド
「Openlayers.js」のビルドにPython2.xが必要。Python3.xではビルドできなかった。
Python2のダウンロードはこちら
私が使用したPythonは「2.7.11」
Openlayers2のGithubより、ソースファイルをダウンロードする。(Zipのダウンロード&解凍、またはGitのクローン)
コマンドプロンプトを開いて、「build」フォルダをカレントフォルダにする。
「python build.py」コマンドを実行し、Openlayers.jsをビルドする。
↓「build」フォルダで「python build.py」をコマンド実行すると「build」フォルダの中にOpenlayers.jsが作られる。
ちなみに「python buildUncompressed.py」を実行すると、デバッグ版(未圧縮)のOpenlayersが生成される。
生成されたOpenlayers.jsを使用すると、GoogleMapが表示されなかった全く同じコードでも問題なく表示されるようになる。
↓自分の環境で試したもの
mobile版とかlight版のビルドは?
・・・(゚A゚?)
「python build.py」の後ろに「mobile.cfg」とか「light.cfg」とか付ければ良いんじゃないでせうか?(試してない)
次のOpenlayers2のリリースの考察
Openlayers2のGithubの色んな所を覗いてみると「2.14」のバージョン番号が!
Openlayers2.14のリリースが来るのか!?とちょっとワクワク
でもGithubの様子から考えると、次のOpenlayers2のリリースがあるのか怪しいところ・・・
GithubでOpenlayers2とOpenlayers3のコミット頻度は、Openlayers3の方が圧倒的に多い。ですよねー
Openlayers2.13.1をリリースしたのは2013/07/09で、2.13.1に含まれない今までの変更点(コミット)が550ぐらいあるみたいだ
これらのコミットはほとんどがバグフィックスに見える。当然、GoogleMap以外のいろんな修正コミットがある
公式サイトから2.13.1のZipをダウンロードするより、Githubからビルドした方が良いですな
追記(2016/04/20)
Openlayers2.14のリリースは無いかもしれない。
「次のリリース版をアップロードして」というタイトルのissueがGitHubに上がった。
この中で「リリース版を作るのもタダじゃないよ。お金がかかるんだよ」みたいなことが書いてある。
また、「オープンソースだし、マスタブランチから最新は作れる」とも
やっぱり、Pythonからリリース版を作るのが無難みたいですね
追記終わり(2016/04/20)