function clipLegend() { // STEP 1: BUILD QUERYTASK var queryURL = 'http://<myserver>/arcgis/rest/services/<myservice>/<layerID>'; var queryTask = new esri.tasks.QueryTask(queryURL); var query = new esri.tasks.Query(); query.where = "1=1"; query.outFields = ["TYPE"]; query.geometry = map.geographicExtent; query.returnGeometry = false; query.spatialRelationship = esri.tasks.Query.SPATIAL_REL_INTERSECTS; var valList = []; // run query task queryTask.execute(query, function(results){ // iterate features in result (visible features) and create a list of unique values for (r in results.features){ // get feature attributes var attr = results.features.attributes; // value var val = attr['TYPE']; // add to value list if (valList.indexOf(val) == -1) { valList.push(val); } } // done creating value list // clear Legend table $('.esriLegendLayer').html('') // STEP 2: get legend via REST API $.get('http:/<myserver>/arcgis/rest/services<myservice>/legend?f=json', function(json){ // STEP 3: compare value list to layer legend and select // label/symbol list var clipList = []; for (labels in json['layers']) { if (json['layers'][labels]['layerId'] == <layerID>){ // legend for layer var leg = json['layers'][labels]['legend']; // iterate labels for (label in leg){ if ('values' in leg[label]) { // get values for that make up current label symbology var labelVals = leg[label]['values']; /// check in which label/symbol category the feature value falls for (v in valList){ // use only label/symbol categories with a value list if (labelVals.indexOf(valList) != -1) { // add unique label value to clip list if (!(leg[label]['label'] in clipList)) { clipList[leg[label]['label']] = leg[label]['url']; } } } } } } } // STEP 4: rebuild legend table for (c in clipList){ var url = clipList; var img = queryURL + '/images/' + url; $('.esriLegendLayer').append('<tr><td><img src="'+ img +'"></td><td align="left">' + c + '</td></tr>'); } }, "json"); }); }
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.