Ответ 1
FeatureSet
, предоставленный QueryTask
onComplete
обратному вызову, имеет свойство features
, которое представляет собой массив Graphics
.
Javascript api предоставляет функцию esri.graphicsExtent(graphics)
, которая может принять этот массив Graphics
и рассчитать их степень. После того, как степень была рассчитана, map.setExtent(extent)
можно использовать для увеличения масштаба карты.
Следует отметить, что документация для esri.graphicsExtent(...)
указывает, что" If высота и ширина экстента равны 0, возвращается null. ' Этот случай будет иметь место, если в возвращаемом массиве Graphics
имеется только одна точка, поэтому вы хотите проверить его.
Здесь приведен пример обратного вызова QueryTask
onComplete
, который можно использовать для масштабирования карты до экстентов точек, возвращаемых запросом:
function onQueryComplete(returnedPointFeatureSet){
var featureSet = returnedPointFeatureSet || {};
var features = featureSet.features || [];
var extent = esri.graphicsExtent(features);
if(!extent && features.length == 1) {
// esri.getExtent returns null for a single point, so we'll build the extent by hand by subtracting/adding 1 to create x and y min/max values
var point = features[0];
extent = new esri.geometry.Extent(point.x - 1, point.y - 1, point.x + 1, point.y + 1, point.spatialReference);
}
if(extent) {
// assumes the esri map object is stored in the globally-scoped variable 'map'
map.setExtent(extent)
}
}