「synthvectors_batch.js(12-ol3cesium17.js)」は、マップを表示するための JavaScript ファイルです。
OL3-Cesium API は、現在、すべて実験的(experimental)なものです。
「12-ol3cesium18.js」
var total = 0; var created = 0; var added = 0; var vectorLayers = [];
var addFeatures = function() {
var then = Date.now(); /** Date.now() * UTC(協定世界時)での 1970 年 1 月 1 日 00 時 00 分 00 秒 * から現在までの経過ミリ秒を数値で返します。 * (MDN[https://developer.mozilla.org/ja/docs/Web/ * JavaScript/Reference/Global_Objects/Date/now]) */
var count = 1000; var features = []; var e = 18000000;
for (var i = 0; i < count; ++i) {
var feature = new ol.Feature({ /** ol.Feature * A vector object for geographic features with a geometry * and other attribute properties, similar to the features * in vector file formats like GeoJSON. * GeoJSONのようなベクトルファイル形式のフィーチャに類似した、 * ジオメトリとその他の属性プロパティを持つ地物フィーチャのため * のベクトルオブジェクト。(ol3 API) */
geometry: new ol.geom.Point([ /** ol.geom.Point * Point geometry.(ol3 API) */
2 * e * Math.random() - e, /** Math.random() * The Math.random() function returns a floating-point, * pseudo-random number in the range [0, 1) that is, * from 0 (inclusive) up to but not including 1 * (exclusive), which you can then scale to your * desired range. The implementation selects the * initial seed to the random number generation * algorithm; it cannot be chosen or reset by the * user. * Math.random() 関数は浮動小数点を返し、0 と 1 の範囲の * 擬似乱数、すなわち 0 以上 1 未満、で、任意の範囲に合わせ * ることができます。インプリメンテーションは、乱数発生アル * ゴリズムのためにイニシャルシードを選択しますが、ユーザが * 選んだりリセットできません。 * (MDN[https://developer.mozilla.org/en-US/docs/Web/ * JavaScript/Reference/Global_Objects/Math/random]) */
2 * e * Math.random() - e, e * Math.random() ]) });
var style = [new ol.style.Style({ /** ol.style.Style * Base class for vector feature rendering styles. * ベクタフィーチャがスタイルを描画するための基本クラス。 * (ol3 API[説明は Stable Only のチェックを外すと表示]) */
image: new ol.style.Circle({ /** ol.style.Circle * Set circle style for vector features. * ベクタフィーチャの円のスタイルを設定。(ol3 API) */
radius: 2, fill: new ol.style.Fill({color: [ /** ol.style.Fill * Set fill style for vector features. * ベクタフィーチャの塗りつぶしスタイルを設定。(ol3 API) */
Math.random() * 255, Math.random() * 255, Math.random() * 255, Math.random() ]}) }) })];
feature.setStyle(style); /** setStyle(style) * Set the style for the feature. This can be a single * style object, an array of styles, or a function that * takes a resolution and returns an array of styles. If * it is null the feature has no style (a null style). * フィーチャのスタイルを設定します。これは、単一のスタイルオ * ブジェクト、スタイルの配列、または解像度をとり、スタイルの * 配列を返す関数とすることができます。null の場合、フィーチャ * は、スタイルなし(null のスタイル)を持ちます。(ol3 API) */
feature.setId(e * Math.random()); /** setId(id) * Set the feature id. The feature id is considered stable * and may be used when requesting features or comparing * identifiers returned from a remote source. The feature * id can be used with the ol.source.Vector#getFeatureById * method. * フィーチャ id を設定します。フィーチャ id は、安定したとみ * なされ、そして、リモートソースからフィーチャを要求している * か、または、返された識別しを比較しているとき使用されます。 * フィーチャ id は、ol.source.Vector の getFeatureById メ * ソッドと共に使用されます。(ol3 API) */
features.push(feature); /** push(elem) * Insert the provided element at the end of the * collection. * コレクションの最後に供給されたエレメントに挿入します。 * Name: elem, Type: T, Description: Element * (ol3 API) */
}
var now = Date.now(); created = now - then; then = now;
var vectorSource = new ol.source.Vector({}); /** ol.source.Vector * Provides a source of features for vector layers. * ベクタレイヤのフィーチャのソースを提供します。(ol3 API) */
var vector = new ol.layer.Vector({ /** ol.layer.Vector * Vector data that is rendered client-side. * クライアント側で描画されたベクタデータ。(ol3 API) */
source: vectorSource, });
vectorSource.addFeatures(features); /** addFeature(feature) * Add a single features to the source.If you want to add a * batch of features at once, call source.addFeatures() * instead. * 単一フィーチャをソースに追加します。もし即座にフィーチャの * バッチを追加したいなら、替りに source.addFeatures() を呼び * 出します。(ol3 API) */
map.addLayer(vector); /** addLayer(layer) * Adds the given layer to the top of this map. If you * want to add a layer elsewhere in the stack, use * getLayers() and the methods available on ol.Collection. * 与えられたレイヤをこのマップの一番上に追加します。あなたは、 * スタックの他の箇所にレイヤを追加したい場合は、getLayers()と * ol.Collection で使用可能なメソッドを使用します。(ol3 API) */
vectorLayers.push(vector); now = Date.now(); added = now - then; total += count;
document.getElementById('total').innerHTML = total; /** element.innerHTML * innerHTML は、与えられた要素に含まれる全てのマークアップ * と内容を設定または取得します。 * (MDN[https://developer.mozilla.org/ja/docs/Web/ * API/element.innerHTML]) */
document.getElementById('created').innerHTML = 'Features created in ' + created + 'ms.'; document.getElementById('added').innerHTML = 'Features added in ' + added + 'ms.'; };
var tile = new ol.layer.Tile({ /** ol.layer.Tile * For layer sources that provide pre-rendered, tiled * images in grids that are organized by zoom levels for * specific resolutions. * プリレンダリング(事前描画)を提供するレイヤソースのための、 * 特定の解像度でのズームレベルによって編成されているグリッドの * タイルイメージ。(ol3 API) */
source: new ol.source.TileWMS({ /** ol.source.TileWMS * Layer source for tile data from WMS servers. * WMS サーバからのタイルデータのレイヤソース。 * (ol3 API) */
url: 'http://demo.boundlessgeo.com/geoserver/wms', params: { 'LAYERS': 'ne:NE1_HR_LC_SR_W_DR' } }) });
var map = new ol.Map({ layers: [tile], target: 'map2d', view: new ol.View({ center: [0, 0], zoom: 2 }) });
var ol3d = new olcs.OLCesium({map: map}); /** new olcs.OLCesium(options) * map: The OpenLayers map we want to show on a Cesium scene. * Cesium シーンで表示したい OpenLayers マップ。 * (OL3-Cesium API) */
var scene = ol3d.getCesiumScene(); /** getCesiumScene() * (OL3-Cesium API に説明がありませんでした。) */
var terrainProvider = new Cesium.CesiumTerrainProvider({ /** new CesiumTerrainProvider(options) * A TerrainProvider that access terrain data in a Cesium * terrain format. The format is described on the Cesium * wiki. * セシウム地形(Cesium terrain)フォーマットの地形(terrain) * データにアクセスする TerrainProvider。フォーマットは、セシウ * ムウィキに記載されています。 * (Cesium refdoc) */
// url : '//cesiumjs.org/stk-terrain/tilesets/world/tiles' // 2015.10.2 変更 url : '//assets.agi.com/stk-terrain/world' /** url * The URL of the Cesium terrain server. * セシウム地形(Cesium terrain)サーバの URL。 * (Cesium refdoc) */
});
scene.terrainProvider = terrainProvider;
ol3d.setEnabled(true); /** setEnabled(enable) * Enables/disables the Cesium. This modifies the visibility * style of the container element. * セシウムを有効または無効にします。これは、コンテナ要素の可視 * 性スタイルを変更します。 * (OL3-Cesium API) */
// Show off 3D feature picking var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas); /** new ScreenSpaceEventHandler(element) * Handles user input events. Custom functions can be added * to be executed on when the user enters input. * ユーザ input イベントを処理します。カスタム関数は、ユーザが * input を入力するときに実行されるように追加できます。 * (Cesium refdoc) */
var lastPicked;
handler.setInputAction(function(movement) { /** setInputAction(action, type, modifier) * Set a function to be executed on an input event. * input イベントで実行される関数を設定します。 * (Cesium refdoc) */
var pickedObjects = scene.drillPick(movement.position); /** drillPick(windowPosition, limit) * Returns a list of objects, each containing a `primitive` * property, for all primitives at a particular window * coordinate position. Other properties may also be set * depending on the type of primitive. The primitives in * the list are ordered by their visual order in the scene * (front to back). * 特定のウィンドウの座標位置で、`primitive(基本要素?)`プロ * パティを含む、すべてのプリミティブのためのオブジェクトのリス * トを返します。他のプロパティは、プリミティブの種類に応じて設 * 定することができます。リスト内のプリミティブは、シーン(前面 * から背面へ)での視覚的順序によって順序付けられます。 * (Cesium refdoc) */
if (Cesium.defined(pickedObjects)) { /** defined(value) -> Boolean * Returns: Returns true if the object is defined, returns * false otherwise. (Cesium refdoc) */
for (i = 0; i < pickedObjects.length; ++i) { var picked = pickedObjects[i].primitive; if (picked.olFeature == lastPicked) continue;
var carto = Cesium.Ellipsoid.WGS84.cartesianToCartographic(picked.position); /** Ellipsoid.WGS84 * An Ellipsoid instance initialized to radii of (1.0, * 1.0, 1.0). * 半径(1.0、1.0、1.0)に初期化された楕円インスタンス。 * (Cesium refdoc) */
/** cartesianToCartographic(cartesian, result) * Converts the provided cartesian to cartographic * representation. The cartesian is undefined at the * center of the ellipsoid. * 提供されたデカルトを地図製作表現にに変換します。デカルト * は、楕円体の中心に定義されていません。 */
console.log('Picked feature', picked.olFeature, ' is at ', carto); /** console.log * デバッガの Web コンソールにメッセージを出力します。 * (MDN[https://developer.mozilla.org/ja/docs/Web/API/ * Console/log]) */
lastPicked = picked.olFeature; } } else { lastPicked = undefined; }
}, Cesium.ScreenSpaceEventType.LEFT_CLICK); /** ScreenSpaceEventType * This enumerated type is for classifying mouse events: * down, up, click, double click, move and move while a * button is held down. * この列挙型は、マウスイベントを分類するためのものです:ダウ * ン、アップ、クリック、ダブルクリック、移動、ボタンを押して * いる間に移動です。 * ScreenSpaceEventType.LEFT_CLICK() * Represents a mouse left click event. * マウスの左クリックイベントを表します。 */
function clearFeatures() { vectorLayers.forEach(function(layer) { /** forEach(f, opt_this) * Iterate over each element, calling the provided callback. * 提供されるコールバックを呼び出して、各要素を反復処理します。 * (ol3 API) */
map.getLayers().remove(layer); /** getLayers() * Get the collection of layers associated with * this map. * このマップと関連するレイヤのコレクションを取得します。 * (ol3 API) */
/** remove(elem) * Remove the first occurrence of an element from the * collection. * コレクションから最初に出現する要素(elemnet)を削除します。 * (ol3 API) */
});
vectorLayers.length = 0; total = document.getElementById('total').innerHTML = 0; document.getElementById('created').innerHTML = ''; document.getElementById('added').innerHTML = ''; }Chromium では表示できないので、Iceweasel(Firefox)のアドレスバーに
http://localhost/~user/ol3cesiumproj/public_html/12-ol3cesium18.html
と入力して表示します。
0 件のコメント:
コメントを投稿