OpenLayers3デモ
2014年12月18日
OpenLayers が v3.0.0 にバージョンアップしたため、機能検証も兼ねてデモページを作成しました。
OpenLayers3デモページ

OpenLayers 3 の公式情報については、以下のサイトから参照可能です。
- OpenLayers 3
http://openlayers.org/ - OpenLayers 3 Examples
http://openlayers.org/en/v3.0.0/examples/ - OpenLayers 3 API Documentation
http://openlayers.org/en/v3.0.0/apidoc/
デモページの機能
![]()
今回作成したデモページでは、地理院地図をベースとし、主題情報に公共施設のマーカーを重ね合わせ表示しました。
また、以下の基本的な地図操作機能を実装しています。(今後も随時、追加予定)
- 地図表示
ベースマップ(基図):地理院地図(各種タイルデータ)、Bing Maps
オーバーレイ(主題):板橋区各種施設データ ※板橋区のオープンデータ(地理情報)を使用しています - 【+】拡大表示
- 【-】縮小表示
- 【E】全体表示(指定範囲表示)
- 【L】レイヤ制御(表示 ON/OFF)
- 【i】基図情報表示
- 主題データ属性情報表示
ポップアップ表示(マウスクリック)
名称表示(マウス位置) - 地図上の画面情報表示
スケールバー
座標情報(マウス位置)
Zoomレベル
OpenLayers3の特徴(基本機能)
![]()
現時点では基本機能のみとなりますが、実際にデモページを作成してみて、OpenLayers3には従来のバージョンと比較して以下の特徴が感じられました。
- 利点
地図の操作性が向上(表示速度、表現など)
モバイル環境(スマホなど)に対応しやすい
カスタマイズ性に優れる(各種コントロールの細部表現など) - 欠点
Google Maps表示の制約が厳しい
古いブラウザに非対応(IE8など)
※ ブラウザ対応状況(参考):Canvas (basic support)
また、デモ作成時点では、v2に存在した「OverView」「LayerSwitcher」のコントロールが使用できませんでした。
情報は少しずつ増えてきているので、今後の対応に期待したいです。
OpenLayers3の応用
![]()
今後は OpenLayers3を使用して、特にニーズが高いと思われる以下の機能について、デモページを展開する予定です。
Google Mapsの表示

// Google Mapsオブジェクト
var gmap = new google.maps.Map(document.getElementById('gmap'), {
disableDefaultUI: true
,keyboardShortcuts: false
,draggable: false
,disableDoubleClickZoom: true
,scrollwheel: false
,streetViewControl: false
});
// Google Mapsの初期表示設定
gmap.setCenter(new google.maps.LatLng(defaultCenter[1], defaultCenter[0]));
gmap.setZoom(defaultZoom);
// View設定(Google Mapsと連動)
view.on('change:center', function() {
var center = ol.proj.transform(view.getCenter(), 'EPSG:3857', 'EPSG:4326');
gmap.setCenter(new google.maps.LatLng(center[1], center[0]));
});
view.on('change:resolution', function() {
gmap.setZoom(view.getZoom());
});
OpenLayers 3 Examples(Google Maps integration example)を参考に作成しました。
Google の制約が厳しくなったためか、従来(v2)のようにタイルデータを直接制御することができません。
画像ビューアとしての使い方

// カレンダー(世界地図)タイルデータ
layers[0] = new ol.layer.Tile({source: new ol.source.XYZ({
attributions: []
,url: "tms/{z}/{x}/{-y}.png"
,projection: "EPSG:3857"
})
});
当社の2015年カレンダーのタイルデータを作成し、OpenLayers3で表示しました。
表示範囲・Zoomレベルを制御することで、拡大・縮小・スクロールが可能な画像ビューアとして使用することができます。
Bing Maps の表示

// Bing Maps(Road)
layers[0] = new ol.layer.Tile({source: new ol.source.BingMaps({
key: BINGMAPS_KEY
,imagerySet:['Road']
})
});
Google Maps の使い勝手が良くなかったこともあり、見た目にも似ている Bing Maps の表示処理をデモに組み込んでみました。
こちらの方が組み込みも容易で、動作もスムーズです。

