0

さまざまなレイヤーと要素を含む特定のマップを使用しています。マップは を使用arcGisして作成され<svg></svg>、内部のすべての要素 (建物、道路など) を含むラベルが作成されます。

私の質問は、javascript/dojo を使用して、フレーム内のマップのさまざまなオブジェクトを反復処理できますか?

主なアイデアは、クライアント側のマップ内の建物または正方形の色を変更することです。何か案が?

HTML:

Javascript:

basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://...", {});
map.addLayer(basemap);

どうもありがとう。

4

2 に答える 2

0

次のように、すべての要素を反復処理できる空のクエリを作成できました。

      //initialize query task
      queryTask = new esri.tasks.QueryTask("https://...");

      //initialize query
      query = new esri.tasks.Query();
      query.returnGeometry = true;
      query.outFields = ["SPAT_NAME"];
      query.where = "1=1";

      //execute query
      queryTask.execute(query,function(results){
        console.log(results);
        console.log(elements);
        for (var i=0, il=results.features.length; i<il; i++) {
          var featureAttributes = results.features[i].attributes;
          //do stuff
          }
        }
      });
于 2012-11-21T14:46:00.573 に答える
0

SVG が DOM で既に利用可能であると仮定すると、質問に対する答えは...

  var elements = document.querySelectorAll("svg *");
  for (var i = 0; i < elements.length; ++i) {
     if(condition) elements[i].setAttribute("fill", "red");
  }

ただし、すべてを反復処理しているため、これは非常に無駄です。要素の「名前」がids の場合、次のことができます...

  ["B45","K56","L67"].forEach(function(name){
    var element = document.getElementById(name);
    if (element) element.setAttribute("fill", "red");
  });
于 2012-11-20T15:00:24.590 に答える