13

クエリから返されるポイントに応じてマップをズームイン/ズームアウトする機能を追加しようとしています。たとえば、テキサス州にズームインしたとします。クエリを実行し、サービスがテキサスにあるポイントとカリフォルニアにあるポイントを返す場合、マップをズームアウトしてから、カリフォルニアとテキサスの両方を表示します。ArcGIS JS APIを調べて実装方法を確認してきましたが、これを実現するために使用するプロパティやメソッドを理解するのに問題があります。

4

3 に答える 3

22

のコールバックにFeatureSet提供された には、QueryTaskの配列であるonCompleteプロパティがあります。 featuresGraphics

JavaScript API は、esri.graphicsExtent(graphics)その配列を受け入れてGraphicsその範囲を計算できる関数を提供します。範囲が計算map.setExtent(extent)されると、マップをその範囲にズームするために使用できます。

のドキュメントesri.graphicsExtent(...)は、「エクステントの高さと幅が 0 の場合、null が返される」と指定されていることに注意してください。このケースは、返さGraphicsれた配列に 1 つのポイントしかない場合に発生するため、確認する必要があります。

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)
  }
}
于 2012-08-04T01:45:48.230 に答える