日本語

操作手順: ArcGIS API for JavaScript でフィーチャを検索し、すべてのフィーチャに及ぶ範囲までズームする

概要

場合によっては、複数の範囲を結合して、1 つの大きな範囲を形成するために Extent.union() メソッドの使用が必要になることがあります。下記の手順は、JavaScript を使用してフィーチャを検索し、すべてのフィーチャに及ぶ範囲までズームする方法を示しています。

手順

ポイント フィーチャの場合、X 座標と Y 座標の最小値と最大値が存在しないことがあります。ポイント フィーチャに対して全体表示を設定するには、次のスクリプトを使用します。

var i, gra; 

if(results.features[0].geometry.type == "point"){ 
map.graphics.clear(); 

// for xmax and xmin etc. 
var xmin = results.features[0].geometry.x; 
var xmax = results.features[0].geometry.x; 
var ymax = results.features[0].geometry.y; 
var ymin = results.features[0].geometry.y; 

newExtent = new Extent(xmin, ymin, xmax, ymax, results.features[0].geometry.spatialReference); 

for (i = 1; i < results.features.length; i++) { 
gra = results.features[i]; 
var xmini = results.features[i].geometry.x; 
var xmaxi = results.features[i].geometry.x; 
var ymaxi = results.features[i].geometry.y; 
var ymini = results.features[i].geometry.y; 


thisExtent = new Extent(xmini, ymini, xmaxi, ymaxi, results.features[0].geometry.spatialReference); 
// making a union of extent or previous feature and current feature. 
newExtent = newExtent.union(thisExtent); 

gra.setSymbol(sms); 
gra.setInfoTemplate(popupTemplate); 
map.graphics.add(gra); 
} 

map.setExtent(newExtent); 
}

ポリゴン フィーチャの場合、フィーチャには固有のジオメトリがあるため、このスクリプトを短縮できます。 ポリゴン フィーチャに対して全体表示を設定するには、次のスクリプトを使用します。

if (results.features[0].geometry.type == "line" || results.features[0].geometry.type == "polygon"){ 
//clearing any graphics if present. 
map.graphics.clear(); 
newExtent = new Extent(results.features[0].geometry.getExtent()) 
for (i = 0; i < results.features.length; i++) { 
var graphic = results.features[i]; 
var thisExtent = graphic.geometry.getExtent(); 

// making a union of extent or previous feature and current feature. 
newExtent = newExtent.union(thisExtent); 
graphic.setSymbol(sfs); 
graphic.setInfoTemplate(popupTemplate); 
map.graphics.add(graphic); 
} 
map.setExtent(newExtent); 
}
注意:
両方のスクリプトを組み合わせると、ポイント フィーチャとポリゴン フィーチャの両方を調べて使用することができます。 2 つ目の 'if' 開始点の前にステートメント 'else' を追加します。 たとえば、次のように指定します。

else if (results.features[0].geometry.type == "line" || results.features[0].geometry.type == "polygon")

関連情報