「2119-ol3ex.js」
var serviceUrl = 'http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/' + 'Petroleum/KSFields/FeatureServer/'; var layer = '0';
var esrijsonFormat = new ol.format.EsriJSON(); /** ol.format.EsriJSON * Feature format for reading and writing data in the * EsriJSON format. * EsriJSON フォーマットデータの読み込みと書き込みのための * フィーチャフォーマット。(ol3 API) */
var styleCache = {
'ABANDONED': [
new ol.style.Style({
/** ol.style.Style
* Base class for vector feature rendering styles.
* ベクタフィーチャがスタイルを描画するための基本クラス。
* (ol3 API)
*/
fill: new ol.style.Fill({
/** ol.style.Fill
* Set fill style for vector features.
* ベクタフィーチャの塗りつぶしスタイルを設定。(ol3 API)
*/
color: 'rgba(225, 225, 225, 255)'
}),
stroke: new ol.style.Stroke({
/** ol.style.Stroke
* Set stroke style for vector features.
* Note that the defaults given are the Canvas defaults,
* which will be used if option is not defined.
* The get functions return whatever was entered
* in the options; they will not return the default.
* ベクタフィーチャのためのストロークスタイルの設定。
* デフォルトは、オプションが定義されていない場合に使用され
* る Canvas のデフォルトを与えられることに注意してください。
* GET関数は、オプションで入力されたものはすべて返します。
* それらはデフォルトを返しません。(ol3 API)
*/
color: 'rgba(0, 0, 0, 255)',
width: 0.4
})
})
],
'GAS': [
new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(255, 0, 0, 255)'
}),
stroke: new ol.style.Stroke({
color: 'rgba(110, 110, 110, 255)',
width: 0.4
})
})
],
'OIL': [
new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(56, 168, 0, 255)'
}),
stroke: new ol.style.Stroke({
color: 'rgba(110, 110, 110, 255)',
width: 0
})
})
],
'OILGAS': [
new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(168, 112, 0, 255)'
}),
stroke: new ol.style.Stroke({
color: 'rgba(110, 110, 110, 255)',
width: 0.4
})
})
]
};
var vectorSource = new ol.source.Vector({
/*: ol.source.Vector
* Provides a source of features for vector layers.
* ベクタレイヤのフィーチャのソースを提供します。(ol3 API)
*/
loader: function(extent, resolution, projection) {
var url = serviceUrl + layer + '/query/?f=json&' +
'returnGeometry=true&spatialRel=esriSpatialRelIntersects&geometry=' +
encodeURIComponent('{"xmin":' + extent[0] + ',"ymin":' +
extent[1] + ',"xmax":' + extent[2] + ',"ymax":' + extent[3] +
',"spatialReference":{"wkid":102100}}') +
'&geometryType=esriGeometryEnvelope&inSR=102100&outFields=*' +
'&outSR=102100';
$.ajax({url: url, dataType: 'jsonp', success: function(response) {
/** jQuery.ajax( url [, settings ] )
* Perform an asynchronous HTTP (Ajax) request.
* 非同期HTTP(Ajax)要求を実行します。
* (jQuery[http://api.jquery.com/jQuery.ajax/])
*/
if (response.error) {
alert(response.error.message + '\n' +
response.error.details.join('\n'));
} else {
// dataProjection will be read from document
var features = esrijsonFormat.readFeatures(response, {
/** readFeatures(source, opt_options)
* Read all features from a EsriJSON source.
* Works with both Feature and FeatureCollection
* sources.
* EsriJSON ソースからすべてのフィーチャを読み取ります。
* フィーチャとフィーチャコレクションソースの両方で動作し
* ます。
* (ol3 API[説明は Stable Only のチェックを外すと表示])
*/
featureProjection: projection
});
if (features.length > 0) {
vectorSource.addFeatures(features);
/** addFeatures(features)
* Add a batch of features to the source.
* フィーチャのバッチをソースに追加します。(ol3 API)
*/
} } }}); },
strategy: ol.loadingstrategy.tile(new ol.tilegrid.XYZ({
/** ol.loadingstrategy.tile(tileGrid)
* Creates a strategy function for loading features
* based on a tile grid.
* タイルグリッドに基づいて、ローディングフィーチャためのス
* トラテジ関数を作成します。
* (ol3 API[説明は Stable Only のチェックを外すと表示])
*/
/** ol.tilegrid.XYZ * Set the grid pattern for sources accessing XYZ * tiled-image servers. * XYZタイル画像サーバにアクセスするソースのグリッドパターン * を設定します。(ol3 API) */
tileSize: 512 })) });
var vector = new ol.layer.Vector({
/** ol.layer.Vector
* Vector data that is rendered client-side.
* クライアント側で描画されたベクタデータ。(ol3 API)
*/
source: vectorSource,
style: function(feature, resolution) {
var classify = feature.get('activeprod');
/** get(key) * Gets a value.(ol3 API) */
return styleCache[classify]; } });
var attribution = new ol.Attribution({
/** ol.Attribution
* An attribution for a layer source.
* レイヤソースの属性(ol3 API)
*/
html: 'Tiles © <a href="http://services.arcgisonline.com/ArcGIS/' + 'rest/services/World_Topo_Map/MapServer">ArcGIS</a>' });
var raster = 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.XYZ({
/** ol.source.XYZ
* Layer source for tile data with URLs in a set XYZ
* format.
* セットXYZ形式のURLを持つタイルデータのレイヤソース。
* (ol3 API)
*/
attributions: [attribution],
url: 'http://server.arcgisonline.com/ArcGIS/rest/services/' +
'World_Topo_Map/MapServer/tile/{z}/{y}/{x}'
})
});
var map = new ol.Map({
layers: [raster, vector],
target: document.getElementById('map'),
view: new ol.View({
center: ol.proj.transform([-97.6114, 38.8403], 'EPSG:4326', 'EPSG:3857'), /** ol.proj.transform(coordinate, source, destination) * Transforms a coordinate from source projection to * destination projection. This returns a new coordinate * (and does not modify the original). * ソース投影から変換先投影に座標変換します。これは、新しい座標 * を返します(オリジナルを変更しません)。(ol3 API) */
zoom: 7 }) });
var displayFeatureInfo = function(pixel) {
var features = [];
map.forEachFeatureAtPixel(pixel, function(feature, layer) {
/** forEachFeatureAtPixel
* Detect features that intersect a pixel on the viewport,
* and execute a callback with each intersecting feature.
* Layers included in the detection can be configured
* through opt_layerFilter. Feature overlays will always
* be included in the detection.
* ビューポート上のピクセルと交差するフィーチャを検出し、
* 各交差するフィーチャとコールバックを実行します。
* 検出に含まれるレイヤが opt_layerFilter を通じて
* 設定することができます。フィーチャーオーバーレイは
* 常に検出に含まれます。(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) */
});
if (features.length > 0) {
var info = [];
var i, ii;
for (i = 0, ii = features.length; i < ii; ++i) {
info.push(features[i].get('field_name'));
/** Array.push
* 与えられた要素を追加することによって配列を変異させ、
* その配列の新しい長さを返します。
* (MDN [https://developer.mozilla.org/ja/docs/Web/
* JavaScript/Reference/Global_Objects/Array/push])
*/
}
document.getElementById('info').innerHTML = info.join(', ') || '(unknown)';
/** element.innerHTML
* innerHTML は、与えられた要素に含まれる全てのマークアップ
* と内容を設定または取得します。
* (MDN[https://developer.mozilla.org/ja/docs/Web/
* API/element.innerHTML])
*/
/** Array.join * 配列の全ての要素を繋いで文字列にします。 * (MDN [https://developer.mozilla.org/ja/docs/Web/ * JavaScript/Reference/Global_Objects/Array/join]) */
map.getTarget().style.cursor = 'pointer'; /** getTarget() * Get the target in which this map is rendered. * Note that this returns what is entered as an option or * in setTarget: if that was an element, it returns an * element; if a string, it returns that. * レンダリングされたこのマップのターゲットを取得します。 * これはオプションとして、または setTarget に入力されている * ものを返すことに注意してください:それが要素ならば、要素 * を返します。文字列ならば、それを返します。(ol3 API) */
} else {
document.getElementById('info').innerHTML = ' ';
map.getTarget().style.cursor = '';
}
};
map.on('pointermove', function(evt) {
/** on
* Listen for a certain type of event.
* あるタイプのイベントをリッスンします。(ol3 API)
*/
/** pointermove * Triggered when a pointer is moved. Note that on * touch devices this is triggered when the map is * panned, so is not the same as mousemove. * ポインタが移動されたときにトリガされます。タッチデバイス * で、マップがパンされるときにこれはトリガーされ、 mousemove * と同じではないことに注意してください。 * (ol3 API) */
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent); /** getEventPixel() * Returns the map pixel position for a browser event. * ブラウザイベントに対して、マップのピクセル位置を返します。 * (ol3 API) */
displayFeatureInfo(pixel); });
map.on('click', function(evt) {
displayFeatureInfo(evt.pixel);
});



0 件のコメント:
コメントを投稿