2015年11月30日月曜日

2 - ol3.11ex 136b - Advanced Mapbox vector tiles example 2

「mapbox-vector-tiles-advanced.js(2136-ol3ex.js)」は、マップを表示するための JavaScript ファイルです。

「2136-ol3ex.js」
var key = 'pk.eyJ...(省略)';
// For how many zoom levels do we want to use the same 
// vector tiles?  1 means "use tiles from all zoom levels". 
// 2 means "use the same tiles for 2 subsequent zoom 
// levels".
// どのくらいのズームレベル数で同じベクトルのタイルを使用したい
// ですか? 1 は「すべてのズームレベルからタイル使用する」こと
// を意味します。 2 は「2 以降のズームレベルに同じタイルを使用
// する」を意味します。
var reuseZoomLevels = 2;
// Offset of loaded tiles from web mercator zoom level 0.
// 0 means "At map zoom level 0, use tiles from zoom 
// level 0". 1 means "At map zoom level 0, use tiles 
// from zoom level 1".
// ウェブメルカトルズームレベル 0 からロードされたタイルのオフ
// セット。0 は「マップのズームレベル 0 では、ズームレベル 0 か
// らのタイルを使用する」ことを意味します。1 は「マップのズーム
// レベル 0 では、ズームレベル1  からタイルを使用する」ことを意
// 味します。
var zoomOffset = 1;
// Calculation of tile urls
var resolutions = [];
for (var z = zoomOffset / reuseZoomLevels; z <= 22 / reuseZoomLevels; ++z) {
 resolutions.push(156543.03392804097 / Math.pow(2, z * reuseZoomLevels));
 /** Array.push
  * 与えられた要素を追加することによって配列を変異させ、
  * その配列の新しい長さを返します。
  * (MDN [https://developer.mozilla.org/ja/docs/Web/
  * JavaScript/Reference/Global_Objects/Array/push])
  */
 /** Math.pow(base, exponent)
  * base を exponent 乗した値、つまり、base^exponent の値を返
  * します。
  * (MDN[https://developer.mozilla.org/ja/docs/Web/
  * JavaScript/Reference/Global_Objects/Math/pow])
  */
}
function tileUrlFunction(tileCoord) {
 return ('http://{a-d}.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6/' +
  '{z}/{x}/{y}.vector.pbf?access_token=' + key)
   .replace('{z}', String(tileCoord[0] * reuseZoomLevels + zoomOffset))
   /** replace [メソッド]
    * 指定された URL に現在の文書を置き換えます。 assign() メ
    * ソッドとの違いは、replace() を用いた後、現在のページは、
    * セッションの履歴には保持されないことです。つまり、ユーザ
    * は、置き換え前のページに戻るために、戻るボタンを使うこと
    * ができません。
    * (MDN[https://developer.mozilla.org/ja/docs/Web/API/
    * Window/location])
    */
   .replace('{x}', String(tileCoord[1]))
   .replace('{y}', String(-tileCoord[2] - 1))
   .replace('{a-d}', 'abcd'.substr(
    ((tileCoord[1] << tileCoord[0]) + tileCoord[2]) % 4, 1));
}
var map = new ol.Map({
 layers: [
  new ol.layer.VectorTile({
  /** ol.layer.VectorTile
   * Layer for vector tile data that is rendered client-side.
   * クライアント側でレンダリングされるベクタタイルデータのレイ
   * ヤ。
   * (ol3 API[説明は Stable Only のチェックを外すと表示])
   */
   preload: Infinity,
   /** preload (Observable Properties)
    * The level to preload tiles up to.
    * タイルをプリロードするための最大レベル。
    * (ol3 API[説明は Stable Only のチェックを外すと表示])
    */
   source: new ol.source.VectorTile({
   /** ol.source.VectorTile
    * Class for layer sources providing vector data 
    * divided into a tile grid, to be used with 
    * ol.layer.VectorTile. Although this source receives 
    * tiles with vector features from the server, it is 
    * not meant for feature editing. Features are optimized 
    * for rendering, their geometries are clipped at or 
    * near tile boundaries and simplified for a view 
    * resolution. See ol.source.Vector for vector sources 
    * that are suitable for feature editing. 
    * ol.layer.VectorTile を使用するために、タイルのグリッドに
    * 分割されたベクタデータを提供するレイヤソースのクラス。この
    * ソースは、サーバからのベクタフィーチャと共にタイルを受信し
    * ますが、それはフィーチャ編集のためのものではありません。
    * フィーチャは、レンダリングのために最適化され、そのジオメト
    * リはタイルに、または、その境界付近にクリップされ、ビューの
    * 解像度のために簡略化されます。フィーチャの編集に適したベク
    * タソースための ol.source.Vector を参照してください。
    * (ol3 API[説明は Stable Only のチェックを外すと表示])
    */
    attributions: [new ol.Attribution({
    /** ol.Attribution
     * An attribution for a layer source.
     * レイヤソースの属性(ol3 API)
     */
     html: '© <a href="https://www.mapbox.com/map-feedback/">Mapbox</a> ' +
      '© <a href="http://www.openstreetmap.org/copyright">' +
      'OpenStreetMap contributors</a>'
    })],
    format: new ol.format.MVT(),
    /** ol.format.MVT
     * Feature format for reading data in the Mapbox MVT 
     * format.
     * Mapbox MVT フォーマットでデータを描画するためのフィーチャ
     * フォーマット。
    * (ol3 API[説明は Stable Only のチェックを外すと表示])
     */
    tileGrid: new ol.tilegrid.TileGrid({
    /** ol.tilegrid.TileGrid
     * Base class for setting the grid pattern for 
     * sources accessing tiled-image servers.
     * タイル画像サーバにアクセスするソースのグリッドパターンを
     * 設定するための基本クラス。(ol3 API)
     */
     extent: ol.proj.get('EPSG:3857').getExtent(),
     /** extent
      * Extent for the tile grid. No tiles outside this 
      * extent will be requested by ol.source.Tile sources. 
      * When no origin or origins are configured, the 
      * origin will be set to the top-left corner of the 
      * extent.
      * タイルグリッドの範囲。この範囲外ではタイルは 
      * ol.source.Tile ソースによって要求されません。何の原点
      * または原点が構成されていない場合には、原点は範囲の左上
      * 隅に設定されます。
     * (ol3 API[説明は Stable Only のチェックを外すと表示])
      */
     resolutions: resolutions
    }),
    tilePixelRatio: 16,
    /** tilePixelRatio
     * The pixel ratio used by the tile service. For 
     * example, if the tile service advertizes 256px by 
     * 256px tiles but actually sends 512px by 512px 
     * tiles (for retina/hidpi devices) then 
     * tilePixelRatio should be set to 2. Default is 1.
     * タイルサービスによって使用されるピクセル比。たとえば、タ
     * イルサービスが 256px x 256px タイルを通知する場合、実際
     * には 512px x 512px  タイル(retina / hidpiデバイス用)
     * を送信し、それから、タイル Pixel Ratio は 2 に設定しな
     * ければなりません。デフォルトは 1 です。
    * (ol3 API[説明は Stable Only のチェックを外すと表示])
     */
    tileUrlFunction: tileUrlFunction
    /** tileUrlFunction
     * Optional function to get tile URL given a tile 
     * coordinate and the projection.
     * タイル座標と投影法を指定されたタイル URL を取得するための
     * オプション関数。
     * (ol3 API[説明は Stable Only のチェックを外すと表示])
     */
   }),
   style: createMapboxStreetsV6Style()
   /** style
    * Layer style. See ol.style for default style which 
    * will be used if this is not defined.
    * レイヤスタイル。これが定義されていない場合に使用されるデ
    * フォルトのスタイルのための ol.style を参照してください。
    * (ol3 API[説明は Stable Only のチェックを外すと表示])
    */
  })
 ],
 target: 'map',
 view: new ol.View({
  center: [0, 0],
  minZoom: 1,
  zoom: 2
 })
});
// ol.style.Fill, ol.style.Icon, ol.style.Stroke, 
// ol.style.Style and ol.style.Text are required for 
// createMapboxStreetsV6Style()

0 件のコメント: