中文

操作方法:查询要素并缩放至 ArcGIS API for JavaScript 中所有要素的范围

摘要

在某些情况下,需要 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); 
// 创建范围或先前要素与当前要素的并集。 
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"){ 
// 清除所有图形(如果存在)。 
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(); 

// 创建范围或先前要素与当前要素的并集。 
newExtent = newExtent.union(thisExtent); 
graphic.setSymbol(sfs); 
graphic.setInfoTemplate(popupTemplate); 
map.graphics.add(graphic); 
} 
map.setExtent(newExtent); 
}
:
两个脚本均可以组合起来,以检查并使用点和面要素。 在第二个起始“if”点之前添加“else”语句。 例如: 

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

相关信息