Deutsch

How To: Abfragen von Features und Zoomen auf die Ausdehnung aller Features in ArcGIS API for JavaScript

Zusammenfassung

In bestimmten Fällen ist die Methode Extent.union() zum Verbinden von mehreren Ausdehnungen erforderlich, um eine große Ausdehnung zu bilden. In den Anweisungen wird die Vorgehensweise beim Abfragen von Features und Zoomen auf die Ausdehnung aller Features mit JavaScript beschrieben.

Vorgehensweise

Bei Punkt-Features kann der Wert der minimalen und maximalen X- und Y-Koordinaten fehlen. Verwenden Sie das folgende Skript, um die volle Ausdehnung für Punkt-Features festzulegen:

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); 
}

Für Polygon-Features kann das Skript gekürzt werden, da das Feature seine eigene Geometrie besitzt. Verwenden Sie das folgende Skript, um die volle Ausdehnung für Polygon-Features festzulegen:

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); 
}
Hinweis:
Beide Skripte können kombiniert werden, um auf Punkt- und Polygon-Features zu prüfen und beide zu verwenden. Fügen Sie die Anweisung 'else' vor dem zweiten 'if' ein. Beispiel: 

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

Referenzinformationen