Tree has duplicate records

2743
1
Jump to solution
03-12-2015 01:51 PM
RobertKirkwood
Occasional Contributor III

I created a tree and it is populating duplicate records. Here is a screenshot:

treeData2.JPG

The records correspond to the amount of features identified. here is the code:

if (map.getLayer("waterResources").visibleLayers.length > 0) {
            //Water
            var idWaterTask = new IdentifyTask(urlWaterResources);
            var idWaterParams = new IdentifyParameters();
            idWaterParams.tolerance = 1.2;
            idWaterParams.returnGeometry = false;
            //idWaterParams.spatialReference = map.spatialReference;
            idWaterParams.layerIds = map.getLayer("waterResources").visibleLayers;
            idWaterParams.layerOption = IdentifyParameters.LAYER_OPTION_ALL;
            idWaterParams.mapExtent = map.extent;
            idWaterParams.geometry = inPnt;
            waterResources = idWaterTask.execute(idWaterParams, function (result) {


                for (var i = 0; i < result.length; i++) {
                    if (result.layerName === "SEO Wells (zoom in for points)") {
                        var layerName1 = result.layerName;
                        var layerName2 = result.value;
                        if (document.getElementById(layerName1 + 'CB').checked === true) {
                            myData.push({id: layerName1, name: "SEO Well - " + layerName2, parent: 'All', children: true});
                            //Convert features object into array to pass to for each to process
                            for (var key in result.feature.attributes) {
                                if (result.feature.attributes.hasOwnProperty(key)) {
                                    if (key === "OBJECTID" || key === "Shape_Leng" || key === "OBJECTID_1" || key === "Shape") {
                                    } else {
                                        var k = key;
                                        var v = result.feature.attributes[key];
                                        if (k === "Hyperlink" || k === "URL") {
                                            myData.push({id: k + v, name: k + " - " + "<i><u>Click here for more information</u></i>", url: v, children: false, parent: layerName1});
                                        }
                                        else {
                                            myData.push({id: k + v, name: k + " - " + "<i>" + v + "</i>", children: false, parent: layerName1});
                                        }
                                    }
                                }
                            }
                        }
                    }
Tags (3)
0 Kudos
1 Solution

Accepted Solutions
RobertKirkwood
Occasional Contributor III

solution:

i solved this problem by creating a unique id (line 23):

if (map.getLayer("waterResources").visibleLayers.length > 0) {
            //Water
            var idWaterTask = new IdentifyTask(urlWaterResources);
            var idWaterParams = new IdentifyParameters();
            idWaterParams.tolerance = 1.2;
            idWaterParams.returnGeometry = true;
            //idWaterParams.spatialReference = map.spatialReference;
            idWaterParams.layerIds = map.getLayer("waterResources").visibleLayers;
            idWaterParams.layerOption = IdentifyParameters.LAYER_OPTION_ALL;
            idWaterParams.mapExtent = map.extent;
            idWaterParams.geometry = inPnt;
            waterResources = idWaterTask.execute(idWaterParams, function (result) {


                if (result.length > 0) {
                    var LayerNameMain = "Water layers";
                    myData.push({id: LayerNameMain, name: LayerNameMain, parent: 'All', children: true});


                    for (var i = 0; i < result.length; i++) {
                        if (result.layerName === "SEO Wells (zoom in for points)") {
                            var layerTitle = result.layerName;
                            var layerName1 = result.layerName + result.value; //unique ID so no duplicates
                            var layerName2 = result.value;
                            if (document.getElementById(layerTitle + 'CB').checked === true) {
                                myData.push({id: layerName1, name: "SEO Well - " + layerName2, parent: LayerNameMain, children: true});
                                //Convert features object into array to pass to for each to process
                                for (var key in result.feature.attributes) {
                                    if (result.feature.attributes.hasOwnProperty(key)) {
                                        if (key === "OBJECTID" || key === "Shape_Leng" || key === "OBJECTID_1" || key === "Shape") {
                                        } else {
                                            var k = key;
                                            var v = result.feature.attributes[key];
                                            if (k === "Hyperlink" || k === "URL") {
                                                myData.push({id: k + v, name: k + " - " + "<i><u>Click here for more information</u></i>", url: v, children: false, parent: layerName1});
                                            }
                                            else {
                                                myData.push({id: k + v, name: k + " - " + "<i>" + v + "</i>", children: false, parent: layerName1});
                                            }
                                        }
                                    }
                                }
                            }
                            changeTab();
                        }
                        


                    }
                }


            });
            
        }

View solution in original post

0 Kudos
1 Reply
RobertKirkwood
Occasional Contributor III

solution:

i solved this problem by creating a unique id (line 23):

if (map.getLayer("waterResources").visibleLayers.length > 0) {
            //Water
            var idWaterTask = new IdentifyTask(urlWaterResources);
            var idWaterParams = new IdentifyParameters();
            idWaterParams.tolerance = 1.2;
            idWaterParams.returnGeometry = true;
            //idWaterParams.spatialReference = map.spatialReference;
            idWaterParams.layerIds = map.getLayer("waterResources").visibleLayers;
            idWaterParams.layerOption = IdentifyParameters.LAYER_OPTION_ALL;
            idWaterParams.mapExtent = map.extent;
            idWaterParams.geometry = inPnt;
            waterResources = idWaterTask.execute(idWaterParams, function (result) {


                if (result.length > 0) {
                    var LayerNameMain = "Water layers";
                    myData.push({id: LayerNameMain, name: LayerNameMain, parent: 'All', children: true});


                    for (var i = 0; i < result.length; i++) {
                        if (result.layerName === "SEO Wells (zoom in for points)") {
                            var layerTitle = result.layerName;
                            var layerName1 = result.layerName + result.value; //unique ID so no duplicates
                            var layerName2 = result.value;
                            if (document.getElementById(layerTitle + 'CB').checked === true) {
                                myData.push({id: layerName1, name: "SEO Well - " + layerName2, parent: LayerNameMain, children: true});
                                //Convert features object into array to pass to for each to process
                                for (var key in result.feature.attributes) {
                                    if (result.feature.attributes.hasOwnProperty(key)) {
                                        if (key === "OBJECTID" || key === "Shape_Leng" || key === "OBJECTID_1" || key === "Shape") {
                                        } else {
                                            var k = key;
                                            var v = result.feature.attributes[key];
                                            if (k === "Hyperlink" || k === "URL") {
                                                myData.push({id: k + v, name: k + " - " + "<i><u>Click here for more information</u></i>", url: v, children: false, parent: layerName1});
                                            }
                                            else {
                                                myData.push({id: k + v, name: k + " - " + "<i>" + v + "</i>", children: false, parent: layerName1});
                                            }
                                        }
                                    }
                                }
                            }
                            changeTab();
                        }
                        


                    }
                }


            });
            
        }
0 Kudos