2015年7月16日木曜日

Leaflet 1.0ベータ版がリリース

Announcing Leaflet 1.0 beta 1 が公開されていました。
0.7よりのスワイプ動作などのマップの移動がスムーズになっていると思いましたが、imgタグを使用している宿命なのでしょうか、大きく改善されたとは感じませんでした。

サンプル1.0beta2

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-1.0.0-b1/leaflet.css" />
    <script src="http://cdn.leafletjs.com/leaflet-1.0.0-b1/leaflet.js"></script>
</head>
<body>
<div id="map" style="width: 500px;height: 500px"></div>

<script>
    var map = L.map('map', {
        center: [51.505, -0.09],
        zoom: 13
    });
    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',{
        attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>',
        maxZoom: 19
    }).addTo(map);

</script>
</body>
</html>

2015年2月11日水曜日

LeafletとOpenlayersのどちらを選ぶか

地図アプリをつくるにあたって2015年2月時点でのLeaflet0.73, Openlayers3.2.0を比較してみましたので少し結果を書かせていただきます。勘違いしている箇所も多いかもしれません。
現在Leaflet1.0が開発中ということでGithubから少し落としてみましたのでその結果も書いていきたいと思います。

ズーム・パンなどの動きについて

Openlayersが格上という印象を受けました。Leafletがimgタグをタイル上に配置する昔ながらの形式なのに対して、Openlayersはバージョン3から1つのcanvasに貼付ける形式になっているためパンやズームなどが格段にスムーズです。
すでにモバイル端末でのリッチな地図になれているユーザはLeafletの動きはかなり時代遅れととられると思います。
1.0では小数点ズームが実装されるようですが、imgベースなのは変わらず軽く触ってみた感じでは倍率で止まる感じは無くなっていないように感じました。(きちんと動かせてないのかも)

回転について

Openlayersは可能です。モバイル端末でも回転をするジェスチャーで回せます。Leafletはできないようです。1.0でも予定はないようです。Leafletでは今端末が向いている方向に地図の北を回転させることができません。

プラグイン

Leafletが圧倒的に多いと思います。(Openlayersのリストがどこにあるのかわからなかったので)。こんな機能を加えたいという物は他の方がプラグインとして作ってくださっているのでかなり地図機能や動作のカスタマイズが楽でした。

ドキュメント・サンプル

Leafletの方が分かりやすいです。Openlayersもしっかりとしたドキュメントはありますが、しっかり全てのクラスを書かれすぎていてやりたい事にたどりつくのに時間がかかりました。
サンプルはOpenlayersが非常に多いです。しかしLeafletはドキュメントが分かりやすいのであまり影響はないと思います。

開発の容易さ

さくっと使うのであればLeafletですがどちらも同じぐらいです。難しくありません。
Openlayersはサンプルが豊富ですし、Leafletはドキュメントとプラグインが素晴らしいです。
ただ、あまり人がやらないことをやるのであればLeafletの方が既にプラグインがあったりして楽でした。

どちらを選ぶか

一般的に地図にマーカーを置くだけの用途であればOpenlayersを使った方が良いと思います。動きがない本社所在地にマーカーを置くだけならばLeafletでもよいかもしれません。

Leaflet1.0に期待です DOMベースでもOpenlayers3と同じぐらいスムーズになると嬉しいです。