function selectByLoadedLayer() { if (kmlLayer) { var geom; var layers = kmlLayer.getLayers(); dojo.forEach(layers, function (lyr) { if (lyr.graphics && lyr.graphics.length > 0) { if (lyr.declaredClass == "esri.layers.FeatureLayer") { if (lyr.geometryType == "esriGeometryPoint") { geom = new esri.geometry.Multipoint(map.spatialReference); dojo.forEach(lyr.graphics, function (graphic) { geom.addPoint(graphic.geometry); }); } else if (lyr.geometryType == "esriGeometryPolygon") { geom = new esri.geometry.Polygon(map.spatialReference); dojo.forEach(lyr.graphics, function (graphic) { geom.addRing(graphic.geometry); }); } else if (lyr.geometryType == "esriGeometryPolyline") { geom = new esri.geometry.PolyLine(map.spatialReference); dojo.forEach(lyr.graphics, function (graphic) { geom.addPath(graphic.geometry); }); } } else { alert("KML layer contains a non-FeatureLayer layer object"); } } }); } else { alert("Please load an uploaded file or a network link first."); } //initialize & execute query var query = new esri.tasks.Query(); query.geometry = geom; query.returnGeometry = true; targetLayer.selectFeatures(query); }
Solved! Go to Solution.
Ultimately, I want to use the actual geometry in a KML Layer ...
if (lyr.geometryType == "esriGeometryPolygon") { kmlGeoms = dojo.map(lyr.graphics, function(g) {return g.geometry;}); }
function selectByLoadedLayer() { if (kmlLayer) { var geom = new Array(); var layers = kmlLayer.getLayers(); dojo.forEach(layers, function (lyr) { if (lyr.graphics && lyr.graphics.length > 0) { if (lyr.declaredClass == "esri.layers.FeatureLayer") { dojo.forEach(lyr.graphics, function (graphic) { geom.push(graphic.geometry); }); } } }); //Union Geometries in KML geomService.union(geom, unionComplete, unionError); } else { alert("Please load an uploaded file or a network link first."); } } function unionComplete(geometry) { //Initialize Query and use new union geometry var query = new esri.tasks.Query(); query.geometry = geom; query.returnGeometry = true; targetLayer.selectFeatures(query); } function unionError(error) { alert(error.message); }
Why not try this:if (lyr.geometryType == "esriGeometryPolygon") { kmlGeoms = dojo.map(lyr.graphics, function(g) {return g.geometry;}); }
function unionComplete(geometry) { //Initialize Query and use new union geometry var query = new esri.tasks.Query(); query.geometry = geom; query.returnGeometry = true; targetLayer.selectFeatures(query);
var geomJson = geom.toJson(); var jsonText = JSON.stringify(geomJson); var jsonLength = jsonText.length;