読者です 読者をやめる 読者になる 読者になる

もなかアイスの試食品

「とりあえずやってみたい」そんな気持ちが先走りすぎて挫折が多い私のメモ書きみたいなものです.

OpenLayers2でGoogleMapをちゃんと表示する。(3度目の正直)

OpenLayers Javascript

またまた OpenLayers & GoogleMap ネタ

最近(といってもそろそろ1年経ちそう)触り始めたOpenLayersで、去年ハマった問題を書いた。

問題とは、OpenLayers を使って GoogleMap が表示できないこと。

もう少し厳密に言うと、OpenLayersのクラス「OpenLayers.Layer.Google」を使ってGoogleMapが表示されない問題にハマった。

↓そのときの記事

monakaice88.hatenablog.com

しかも1回で解決しなかったため2つ目の記事を書いた

↓2回目

monakaice88.hatenablog.com

ありがたいことに、これらの記事へのアクセスが多い。

しかしちゃんとした解決策が書かれていない気がするので、もう一度「ちゃんとした」解決策を書こうと思う

↓実際の現象はこんな感じ

GoogleMap のレイヤだけが正しく表示されず、OpenStreetMapVectorレイヤ、UIコントローラは問題なく動作している

また厄介なことに、ブラウザのコンソールを見てもエラーは何も表示されていない。

GoogleMapが表示されない原因は GoogleMapAPI のバージョンアップ(過去バージョンの廃止)によって Openlayersで 正しく動作しなかったため(2回目の記事にも記載している)

2回目の記事では、Openlayersを利用したWEBアプリを作成しているユーザが自力で修正したものを利用していた。

github.com

Openlayers2のリポジトリを監視していたところ、その修正のプルリクエストがマージされていた。

そのため、今回はGithubで管理されているOpenlayers2のソースファイルを利用する。


必要なもの & Openlayers.js のビルド

Openlayers.js」のビルドにPython2.xが必要。Python3.xではビルドできなかった。

Python2のダウンロードはこちら

私が使用したPythonは「2.7.11」

  1. Openlayers2のGithubより、ソースファイルをダウンロードする。(Zipのダウンロード&解凍、またはGitのクローン)

  2. コマンドプロンプトを開いて、「build」フォルダをカレントフォルダにする。

  3. python build.py」コマンドを実行し、Openlayers.jsをビルドする。

↓「build」フォルダで「python build.py」をコマンド実行すると「build」フォルダの中にOpenlayers.jsが作られる。 f:id:monakaice88:20160217221547p:plain

ちなみに「python buildUncompressed.py」を実行すると、デバッグ版(未圧縮)のOpenlayersが生成される。

生成されたOpenlayers.jsを使用すると、GoogleMapが表示されなかった全く同じコードでも問題なく表示されるようになる。

↓自分の環境で試したもの f:id:monakaice88:20160217224200p:plain

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に上がった。

github.com

この中で「リリース版を作るのもタダじゃないよ。お金がかかるんだよ」みたいなことが書いてある。

また、「オープンソースだし、マスタブランチから最新は作れる」とも

やっぱり、Pythonからリリース版を作るのが無難みたいですね

追記終わり(2016/04/20)