我正在使用具有不同图层和元素的特定地图。地图是使用arcGis
创建的,它会创建一个<svg></svg>
标签,其中包含所有元素(建筑物,道路等)。
我的问题是,我可以使用javascript / dojo在框架内迭代地图的不同对象吗?
主要思想是在地图客户端内更改建筑物或方形的颜色。有什么想法吗?
HTML:
使用Javascript:
basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://...", {});
map.addLayer(basemap);
非常感谢。
答案 0 :(得分:0)
假设你的SVG已经在DOM中可用,你问题的答案就是...
var elements = document.querySelectorAll("svg *");
for (var i = 0; i < elements.length; ++i) {
if(condition) elements[i].setAttribute("fill", "red");
}
然而,当你在迭代所有内容时,这是非常浪费的。如果元素“名称”是id
s那么你可以做...
["B45","K56","L67"].forEach(function(name){
var element = document.getElementById(name);
if (element) element.setAttribute("fill", "red");
});
答案 1 :(得分: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
}
}
});