2014年5月28日水曜日

1 - ol3-beta.5 9 - Workshop 2.4. Vector Layers

2.4. ベクタレイヤ
ベクタレイヤは ol.layer.Vector で表され、ベクタデータのクライアント側の表示を処理しています。現在、OpenLayers 3 はキャンバスレンダラのベクタ描画だけをサポートしています。

2.4.1. クライアント側のフィーチャ描画
基本の世界地図を取得するには、WMS の例に戻ります。ベクタレイヤのこの上にいくつかのフィーチャデータを追加します。
<!doctype html>
<html lang="en">
 <head>
  <link rel="stylesheet" href="ol3/ol.css" type="text/css">
  <style>
    #map {
     height: 256px;
     width: 512px;
    }
  </style>
  <title>OpenLayers 3 example</title>
  <script src="ol3/ol.js" type="text/javascript"></script>
 </head>
 <body>
  <h1>My Map</h1>
  <div id="map"></div>
  <script type="text/javascript">
   var map = new ol.Map({
    target: 'map',
    renderer: 'canvas',
    layers: [
     new ol.layer.Tile({
      title: "Global Imagery",
      source: new ol.source.TileWMS({
       url: 'http://maps.opengeo.org/geowebcache/service/wms',
       params: {LAYERS: 'bluemarble', VERSION: '1.1.1'}
      })
     })
    ],
    view: new ol.View2D({
     projection: 'EPSG:4326',
     center: [0, 0],
     zoom: 0,
     maxResolution: 0.703125
    })
   });
  </script>
 </body>
</html>


タスク
1. テキストエディタで map.html を開き、最初の WMS 例の内容をコピーします。変更を保存して、ブラウザで正しく見えることを確認します。:http://localhost:8080/ol_workshop/map.html(訳注:Webサーバが動作している任意のディレクトリなら、対応するアドレス。以降、これに準じます。)
2. マップの初期化コードでタイルレイヤの後にもうひとつのレイヤを追加(続けて貼り付け)します。これは GeoJSON に格納されている一連のフィーチャを要求したマップに新しいベクタレイヤを追加します。
new ol.layer.Vector({
 title: 'Earthquakes',
 source: new ol.source.GeoJSON({
  url: 'data/layers/7day-M2.5.json'
 }),
 style: new ol.style.Style({
  image: new ol.style.Circle({
   radius: 3,
   fill: new ol.style.Fill({color: 'white'})
  })
 })
})



地震の場所を表す白丸と世界地図。

注意:GeoJSON データは EPSG:4326 の投影法で、マップのビューも、EPSG:4326 なので、再投影は必要ありません。ソースの投影法とビューの投影法が異なる場合、「projection」プロパティはフィーチャキャッシュの投影を示しているソースに設定しなければなりません。これは、通常、ここでは、ビューの投影法を設定することを意味します。

2.4.1.1. 詳しく見る
それでは何が起こっているか理解するために、そのベクタレイヤの作成を検討してみます。
new ol.layer.Vector({
 title: 'Earthquakes',
 source: new ol.source.GeoJSON({
  url: 'data/layers/7day-M2.5.json'
 }),
 style: new ol.style.Style({
  image: new ol.style.Circle({
   radius: 3,
   fill: new ol.style.Fill({color: 'white'})
  })
 })
})


レイヤは、「title」の「Earthquakes」といくつかのカスタムオプションを与えられています。オプションオブジェクトでは、「url」 を指示する ol.source.GeoJSON タイプの「source」を用意しています。

注意:属性に基づいたフィーチャのスタイルを設定したい場合は、 ol.layer.Vector の「style」設定オプションである ol.style.Style の替りににスタイル関数を使用します。

ボーナスタスク
1. マップ上の白丸は、 ol.layer.Vector レイヤの上に ol.Feature オブジェクトを表します。これらの各フィーチャは、それぞれ、「title」と「summary(要約)」のプロパティの属性データを持っています。マップ上で forEachFeatureAtPixel を呼び出す、マップ上の singleclick リスナを登録し、マップビューポートの下に地震情報を表示します。
2. ベクタレイヤのデータは、USGS(http://earthquake.usgs.gov/earthquakes/catalogs/)が発行した地震のフィードから来ています。OpenLayers 3 でサポートされているフォーマットの空間情報がある追加データを見つけることができるかどうか参照してください。もし、「data」ディレクトリ内の空間データを表現する別のドキュメントを保存するなら、マップ上のベクタレイヤで表示することができます。

0 件のコメント: