0

我正在使用具有不同图层和元素的特定地图。地图是使用arcGis创建的,它创建了一个<svg></svg>标签,其中包含所有元素(建筑物、道路等)。

我的问题是,我可以使用 javascript/dojo 遍历框架内地图的不同对象吗?

主要思想是改变地图客户端内的建筑物或正方形的颜色。任何的想法?

HTML:

Javascript:

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

非常感谢。

4

2 回答 2

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 回答
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 回答