Leafletのカスタム化とLeafletに足突っ込もうとしたけどやめたたったひとつの理由

はじめに

前半を書いていた時点でこんなことになろうとは…。

Leaflet

ライトなJavaScript地図アプリケーション用ライブラリです。モバイルで使うんだったらライトであればあるほど良い。手持ちのIS-03は常にもっさりなのです。
さらにカスタムビルドをすることで、よりいっそうスリム化するという。どうですかおくさん!

ということで、ちょっと手を染めてみようということになりました。

Leafletのダウンロード

http://leaflet.cloudmade.com から落として、ZIPなので解凍します。

カスタムビルドしないんだったら leaflet.js, leaflet.css, leaflet.ie.css, images/ を持って行けばOK。

カスタムビルド

node.js を http://nodejs.org/ から導入します。
"npm"というコマンドが付いてくるので、これを使って、いろいろインストールします。

npm install -g jake
npm install jshint
npm install uglify-js

(ソース)/build/build.html を JavaScript有効で開きます。
導入したい機能のチェックボックスをオンにしていきます。
末尾にテキストボックスが出て

jake build[...]

といったコマンドが入っていると思いますので、これをコピーして、コマンドラインにペーストしてやります。ブラウザ側では引数を作成するまでで、実際のビルドは、コマンドラインにまかせているわけです。
なお、カレントディレクトリはソースディレクトリのルートです。

(ソース)/dist/leaflet-custom.js に生成されるので、あとは好きにします。

ちなみに、ベクタデータは今回全く使わないのでばしばし消してやると、オリジナル104Kに対して、カスタムは54Kになりました。

だがしかし

ためしにAndroidアプリとして、WebViewをくっつけただけのActivityを作って、loadurlをする、というやり方で、アプリっぽいのを作ってみました。

しかしここからが問題。

スクリプトはロードされました。タイルもロードしているっぽいのですが、謎のグレーの「何か」で隠されます。タイルがときどき端っこに見えるようなかんじ。で、拡大・縮小を行うと、その「何か」が消え、その後は正常に動作します。

この問題、デスクトップでやってても全く発生しませんでした。このため、デスクトップで概ねバグをつぶして充実感いっぱいなだけにダメージが通常より大きめ。

この時点でOpenLayersに流れることになりました。残念。この問題が無ければそのまま突き進んでいたのですが、この問題はもうどうしようもないです。

古いAndroidがアレなのか…?

それはそれとして、他にもうちょっと試してみました。

某サイトにLeafletのサンプルコードが書かれてて、ウェブページに貼り付けられています。そこにアクセスしてみたところ、IS-03はアウト、Galaxy Tab 10もアウト、Iconiaのなんだったかはセーフ、というかんじでした。

ということは、実行速度が極端に遅いために、開発者の思った通りの順序で実行されないのが原因でないかと。バージョンの違いが影響している可能性もありますし、CPUパワーが影響している可能性もあります。