イベント ハンドラー登録方法の違いによる挙動

イベントのハンドリング方法によって結果関数の引数に入る情報が異なる。

function executeQueryTask() 
{
  //新規 QueryTask オブジェクトを作成し、検索対象レイヤーを指定します
  var queryTask = new QueryTask("http://sample.esrij.com/arcgis/rest/services/te2/MapServer/0")
  //属性検索の条件を設定します
  var query = new Query();
  query.where = "OBJECTID = 1";
  //検索を実行します
  
  //パターン1
  //queryTask.execute(query,showResults);
  //この場合は event.features で取得

  //パターン2
  queryTask.on("complete", showResults);
  queryTask.execute(query);
  //この場合は event.featureSet.features で取得
}


function showResults(event)
{
  //マップのグラフィックス レイヤーに含まれるすべてのグラフィックを削除します
  map.graphics.clear();
  //featureSet 配列を単一の変数に割り当てます
  var resultFeatures = event.featureSet.features;

  //返されたそれぞれのフィーチャをループ処理します
  for (var i=0; i < resultFeatures.length; i++)
  {
    //featureSet から現在のフィーチャを取得します
    //(フィーチャはグラフィックです)


    var symbol = new SimpleMarkerSymbol();
    symbol.setColor(new Color([150, 150, 150, 0.5]));


    var infoTemplate = new InfoTemplate();
    var graphic = resultFeatures[i];
    graphic.setSymbol(symbol);
    //infoTemplate を設定します
    graphic.setInfoTemplate(infoTemplate);
    //マップのグラフィックス レイヤーにグラフィックを追加します
    map.graphics.add(graphic);
  }
}      function executeQueryTask() 
{
  //新規 QueryTask オブジェクトを作成し、検索対象レイヤーを指定します
  var queryTask = new QueryTask("http://sample.esrij.com/arcgis/rest/services/te2/MapServer/0")
  //属性検索の条件を設定します
  var query = new Query();
  query.where = "OBJECTID = 1";
  //検索を実行します
  
  //パターン1
  //queryTask.execute(query,showResults);
  //この場合は event.features で取得

  //パターン2
  queryTask.on("complete", showResults);
  queryTask.execute(query);
  //この場合は event.featureSet.features で取得
}


function showResults(event)
{
  //マップのグラフィックス レイヤーに含まれるすべてのグラフィックを削除します
  map.graphics.clear();
  //featureSet 配列を単一の変数に割り当てます
  var resultFeatures = event.featureSet.features;

  //返されたそれぞれのフィーチャをループ処理します
  for (var i=0; i < resultFeatures.length; i++)
  {
    //featureSet から現在のフィーチャを取得します
    //(フィーチャはグラフィックです)


    var symbol = new SimpleMarkerSymbol();
    symbol.setColor(new Color([150, 150, 150, 0.5]));


    var infoTemplate = new InfoTemplate();
    var graphic = resultFeatures[i];
    graphic.setSymbol(symbol);
    //infoTemplate を設定します
    graphic.setInfoTemplate(infoTemplate);
    //マップのグラフィックス レイヤーにグラフィックを追加します
    map.graphics.add(graphic);
  }
}