YouTube | Facebook | X(Twitter) | RSS

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

2016/9/1 (木)

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

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);
  }
}
  • この記事を書いた人

羽田 康祐

伊達と酔狂のGISエンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, ArcGIS
-,