français

Procédure : interroger des entités et effectuer un zoom sur l’étendue des entités dans ArcGIS API for JavaScript

Résumé

Dans certains cas, il est nécessaire de faire appel à la méthode Extent.union() pour combiner plusieurs étendues en vue de former une seule grande étendue. Les instructions fournies indiquent comment interroger des entités et appliquer le zoom à l’ensemble des entités au moyen de JavaScript.

Procédure

Dans le cas d’entités ponctuelles, les valeurs minimum et maximum des coordonnées x et y peuvent être absentes. Utilisez le script suivant pour définir l’étendue complète des entités ponctuelles :

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

Dans le cas des entités surfaciques, il est possible de raccourcir le script dans la mesure où ce type d’entité possède sa propre géométrie. Utilisez le script suivant pour définir l’étendue complète des entités surfaciques .

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); 
}
Remarque :
Il est possible de combiner les deux scripts pour rechercher et utiliser à la fois des entités ponctuelles et des entités surfaciques. Ajoutez l’instruction « else » devant le deuxième point « if » de départ. Par exemple : 

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

Informations associées