Javascript 在一个displayLevel中显示featureLayer中的数据

Javascript 在一个displayLevel中显示featureLayer中的数据,javascript,map,dojo,arcgis-js-api,Javascript,Map,Dojo,Arcgis Js Api,我有一个问题,显示在两个树显示级别的基本地图上的信息。 我有一个受esri样本启发的程序: 在此之后,我建立了自己的缩放级别或显示级别,因为我只需要三个。 我的问题是,我想在我的featureLayer中只有三个ZoomLevel中的两个,我不知道如何做到这一点。我在互联网上找到的唯一一个例子是Esri样本表: 但他们和ArcGISTiledMapServiceLayer合作,而我不是 有谁能告诉我这个问题的解决方法吗 代码如下: define([ "dojo/_base/declare", "

我有一个问题,显示在两个树显示级别的基本地图上的信息。 我有一个受esri样本启发的程序:

在此之后,我建立了自己的缩放级别或显示级别,因为我只需要三个。 我的问题是,我想在我的featureLayer中只有三个ZoomLevel中的两个,我不知道如何做到这一点。我在互联网上找到的唯一一个例子是Esri样本表:

但他们和ArcGISTiledMapServiceLayer合作,而我不是

有谁能告诉我这个问题的解决方法吗

代码如下:

define([
"dojo/_base/declare",
"dojo/_base/array",
"esri/map", 
"esri/graphic",
"esri/lang",
"esri/geometry/Extent",
"esri/symbols/SimpleLineSymbol",
"esri/symbols/SimpleFillSymbol",
"esri/renderers/SimpleRenderer",
"esri/renderers/ClassBreaksRenderer",
"esri/symbols/Font",
"esri/symbols/TextSymbol",
"esri/layers/FeatureLayer", 
"esri/dijit/Legend", 
"esri/dijit/OverviewMap",
"esri/InfoTemplate",
"esri/request",

"modules/mapTip",

"dijit/TooltipDialog", 
"dijit/popup",

"dojo/json", 
"dojo/store/JsonRest",
"dojo/_base/array", 
"dojo/parser",
"dojo/_base/connect", 
"dojo/_base/Color", 
"dojo/number", 
"dojo/dom",
"dojo/dom-construct",
"dojo/dom-style",     

"dijit/form/Button",
"dijit/layout/BorderContainer", 
"dijit/layout/ContentPane", 
"dijit/layout/AccordionContainer",    

"dojo/domReady!"
], function(
    declare,array, Map, Graphic, esriLang, Extent, SimpleLineSymbol, SimpleFillSymbol, SimpleRenderer, 
    ClassBreaksRenderer, Font, TextSymbol,FeatureLayer, Legend, OverviewMap, InfoTemplate, esriRequest,Tip, 
    TooltipDialog, dijitPopup,JSON, JsonRest, arr, parser, conn, Color, number, dom, domConstruct, domStyle, Button) {
        return declare (null, {
            init: function (){
                var lods = [
                    //{"level" : 1, "resolution" : 78271.5169639999, "scale" : 295828763.795777}, 
                    //{"level" : 2, "resolution" : 39135.7584820001, "scale" : 147914381.897889}, 
                    //{"level" : 3, "resolution" : 19567.8792409999, "scale" : 73957190.948944}, 
                    //{"level" : 4, "resolution" : 9783.93962049996, "scale" : 36978595.474472}, 
                    //{"level" : 5, "resolution" : 4891.96981024998, "scale" : 18489297.737236}, 
                    //{"level" : 6, "resolution" : 2445.98490512499, "scale" : 9244648.868618}, 
                    {"level" : 7, "resolution" : 1222.99245256249, "scale" : 4622324.434309}, 
                    //{"level" : 8, "resolution" : 611.49622628138, "scale" : 2311162.217155}, 
                    //{"level" : 9, "resolution" : 305.748113140558, "scale" : 1155581.108577}, 
                    {"level" : 10, "resolution" : 152.874056570411, "scale" : 577790.554289}, 
                    //{"level" : 11, "resolution" : 76.4370282850732, "scale" : 288895.277144}, 
                    {"level" : 12, "resolution" : 38.2185141425366, "scale" : 144447.638572}, 
                    //{"level" : 13, "resolution" : 19.1092570712683, "scale" : 72223.819286},
                    //{"level": 14, "resolution": 9.55462853563415, "scale": 36111.909643}, 
                    //{"level": 15, "resolution": 4.77731426794937, "scale": 18055.954822}, 
                    //{"level": 16, "resolution": 2.38865713397468, "scale": 9027.977411}, 
                    //{"level": 17, "resolution": 1.19432856685505, "scale": 4513.988705}
                    ];

                var fl = new FeatureLayer("someServer/arcgis/rest/services/someProject/FeatureServer/1", {
                    mode: FeatureLayer.MODE_SNAPSHOT,
                            displayLevels:[0,1],
                    outFields:["*"],
                    //infoTemplate: template,
                    visible: true,
                    value: "OBJECTID",
                }); 

                window.map = new Map("map", {
                    basemap:"topo",
                    center: [48.04, 28.50],
                    zoom: 0,
                    lods: lods,
                });

                var overviewMapDijit = new OverviewMap({
                    map: window.map,
                    visible: true
                });

                overviewMapDijit.startup();

                var updateEnd = fl.on("update-end", function() {
                    updateEnd.remove();
                    updateRenderer();
                    updateLables();
                });

                window.map.addLayers([fl]);

                function updateRenderer(){
                    fl.setRenderer(new SimpleRenderer(null));
                    var kachelnamen = new JsonRest({
                        target: "someTargetURL",
                        idAttribute: "WA",
                        headers: { "X-Requested-With": "" },
                     });
                     kachelnamen.query(null).then(drawFeatureLayer, kachelnamenError);
                     console.debug(kachelnamen);
                     console.info(kachelnamen);
                }

 ////////////////////////////////////////////////        
                 function updateLables(){
                    var font = new Font("11px", Font.STYLE_NORMAL,     Font.VARIANT_NORMAL, Font.WEIGHT_BOLDER);
                    arr.forEach(fl.graphics, function(graphic){
                        var centerPoint;
                        switch (graphic.geometry.type) {
                            case "point":
                            centerPoint = graphic.geometry;
                            break;
                            case "extent":
                            centerPoint = graphic.getCenter();
                            default:
                            centerPoint = graphic._extent.getCenter();
                        }
                        var textSymbol = new TextSymbol(graphic.attributes.NAME,font, new Color([0, 0, 0]));
                        var labelPointGraphic = new Graphic(centerPoint, textSymbol);
                        window.map.graphics.add(labelPointGraphic);
                    });
                }
 ///////////////////////////////////////////////////////////


                function drawFeatureLayer(data) {
                // data comes back as text from apify...parse it
                // loop through gas price data, find min/max and populate an object 
                // to keep track of the price of regular in each state
                    window.statekachelnamen = {};
                    var gasMin = Infinity;
                    var gasMax = -Infinity;
                    arr.forEach(data, function(g) {
                        var price = parseFloat(g.STAT_CALC);
                        statekachelnamen[g.WA] = price;
                        if ( price < gasMin ) {
                            gasMin = price;
                        }
                        if ( price > gasMax ) {
                            gasMax = price;
                        }
                    });

                    // format max gas price with two decimal places
                    gasMax = formatDollars(gasMax);
                    // add an attribute to each attribute so gas price is displayed
                    // on mouse over below the legend
                    arr.forEach(fl.graphics, function(g) {
                          //var displayValue = statekachelnamen[g.attributes.WA_NAME].toFixed(2);
                        var displayValue;
                        if (g.attributes.WA_NAME in statekachelnamen){
                            displayValue = statekachelnamen[g.attributes.WA_NAME].toFixed(2);
                        }
                        else{
                            displayValue = 0;
                        }
                        g.attributes.STAT_CALC = displayValue;
                    });

                    // create a class breaks renderer
                    var breaks = calcBreaks(gasMin, gasMax, 4);
                    //gasMax = formatDollars(gasMax);
                    // console.log("gas price breaks: ", breaks);
                    var sfs = SimpleFillSymbol;
                    var sls = SimpleLineSymbol;
                    var outline = sls("solid", new Color("#444"), 1);
                    var br = new ClassBreaksRenderer(null, findGasPrice);
                    br.setMaxInclusive(true);
                    br.addBreak(breaks[0], breaks[1], new sfs("solid", outline, new Color([255, 255, 178, 0.75])));
                    br.addBreak(breaks[1], breaks[2], new sfs("solid", outline, new Color([254, 204, 92, 0.75])));
                    br.addBreak(breaks[2], breaks[3], new sfs("solid", outline, new Color([253, 141, 60, 0.75])));
                    br.addBreak(breaks[3], gasMax, new sfs("solid", outline, new Color([227, 26, 28, 0.75])));

                    fl.setRenderer(br);
                    fl.redraw();

                    var legend2 = new Legend({
                      map: window.map,
                      layerInfos: [{ "layer": fl, "title": "WA Statistic" }]
                    },"legendDiv2");
                    legend2.startup();

                    // remove the loading div
                    //domConstruct.destroy("loading");

                }
      // function used by the class breaks renderer to get the
      // value used to symbolize each state
                function findGasPrice(graphic) {
                    var state = graphic.attributes.WA_NAME;
                    return statekachelnamen[state];
                    console.info(state);
                }

                function calcBreaks(min, max, numberOfClasses) {
                    var range = (max - min) / numberOfClasses;
                    var breakValues = [];
                    for ( var i = 0; i < numberOfClasses; i++ ) {
                        breakValues[i] = formatDollars(min + ( range * i ));
                    }
                    // console.log("break values: ", breakValues)
                    return breakValues;
                }

                var myButton = new Button({
                    label: "Update Renderer!",
                    onClick: function(){
                        updateRenderer();
                    }
                }, "progButtonNode");

                function formatDollars(num) {
                    return num.toFixed(2);
                    //return number.format(num, { "places": 2 });
                }

                function kachelnamenError(e) {
                    console.log("error getting gas price data: ", e);
                }
            }
        });
 });

      ![here the text is correct][1]
      ![here the text is correct too ][2]
      ![I don't want to display text here][3]
定义([
“dojo/_base/declare”,
“dojo/_基/阵列”,
“esri/map”,
“esri/图形”,
“esri/lang”,
“esri/几何体/范围”,
“esri/symbols/SimpleLineSymbol”,
“esri/symbols/SimpleFillSymbol”,
“esri/渲染器/简单渲染器”,
“esri/Renders/ClassBreaksRenderer”,
“esri/符号/字体”,
“esri/symbols/TextSymbol”,
“esri/图层/功能图层”,
“esri/dijit/Legend”,
“esri/dijit/OverviewMap”,
“esri/InfoTemplate”,
“esri/请求”,
“模块/地图提示”,
“dijit/TooltipDialog”,
“dijit/popup”,
“dojo/json”,
“dojo/store/JsonRest”,
“dojo/_基/阵列”,
“dojo/parser”,
“dojo/_base/connect”,
“dojo/_base/Color”,
“dojo/number”,
“dojo/dom”,
“dojo/dom构造”,
“dojo/dom风格”,
“dijit/form/Button”,
“dijit/layout/BorderContainer”,
“dijit/layout/ContentPane”,
“dijit/layout/AccordionContainer”,
“dojo/domReady!”
],功能(
声明、数组、映射、图形、esriLang、范围、SimpleLineSymbol、SimpleFillSymbol、SimpleRenderer、,
ClassBreaksRenderer、字体、文本符号、功能层、图例、概览图、信息模板、esriRequest、提示、,
TooltipDialog、dijitPopup、JSON、JsonRest、arr、解析器、conn、颜色、数字、dom、domConstruct、domStyle、按钮){
返回declare(null{
init:函数(){
变量lods=[
//{“级别”:1,“决议”:78271.5169639999,“比额表”:295828763.795777},
//{“级别”:2,“决议”:39135.7584820001,“比额表”:147914381.897889},
//{“级别”:3,“决议”:19567.8792409999,“比额表”:73957190.948944},
//{“级别”:4,“决议”:9783.93962049996,“比额表”:36978595.474472},
//{“级别”:5,“决议”:4891.96981024998,“比额表”:18489297.737236},
//{“级别”:6,“决议”:2445.98490512499,“比额表”:9244648.868618},
{“级别”:7,“决议”:1222.99245256249,“比额表”:4622324.434309},
//{“级别”:8,“决议”:611.49622628138,“比额表”:2311162.217155},
//{“级别”:9,“决议”:305.748113140558,“比额表”:1155581.108577},
{“级别”:10,“决议”:152.874056570411,“比额表”:577790.554289},
//{“级别”:11,“决议”:76.4370282850732,“比额表”:288895.277144},
{“级别”:12,“决议”:38.2185141425366,“比额表”:144447.638572},
//{“级别”:13,“决议”:19.1092570712683,“比额表”:72223.819286},
//{“级别”:14,“决议”:9.55462853563415,“比额表”:36111.909643},
//{“级别”:15,“决议”:4.77731426794937,“比额表”:18055.954822},
//{“级别”:16,“决议”:2.3886571397468,“比额表”:9027.977411},
//{“级别”:17,“决议”:1.19432856685505,“比额表”:4513.988705}
];
var fl=新功能层(“someServer/arcgis/rest/services/someProject/FeatureServer/1”{
模式:FeatureLayer.mode\u快照,
显示级别:[0,1],
外场:[“*”],
//infoTemplate:template,
可见:对,
值:“OBJECTID”,
}); 
window.map=新地图(“地图”{
底图:“地形”,
中间:[48.04,28.50],
缩放:0,
lods:lods,
});
var overviewMapDijit=新建OverviewMap({
map:window.map,
可见:正确
});
概述mapdijit.startup();
var updateEnd=fl.on(“更新结束”,函数(){
updateEnd.remove();
updateRenderer();
可更新项();
});
window.map.addLayers([fl]);
函数updateRenderer(){
fl.setRenderer(新的SimpleRenderer(null));
var kachelnamen=new JsonRest({
目标:“someTargetURL”,
idAttribute:“WA”,
标题:{“X-request-With”:“},
});
query(null).then(drawFeatureLayer,KachelnamError);
console.debug(kachelnamen);
控制台信息(kachelnamen);
}
////////////////////////////////////////////////        
函数updateables(){
var font=新字体(“11px”,font.STYLE\u NORMAL,font.VARIANT\u NORMAL,font.WEIGHT\u bold);
arr.forEach(fl.graphics,函数(graphic){
var中心点;
开关(图形、几何、类型){
案例“要点”:
中心点=图形几何;
打破
案例“范围”:
centerPoint=graphic.getCenter();
违约:
中心点=图形。_extent.getCenter();
}
var textSymbol=新的textSymbol(graphic.attributes.NAME、字体、新颜色([0,0,0]);
                window.map.addLayers([fl]);
                var updateEnd = fl.on("update-end", function() {
                    updateEnd.remove();
                    updateRenderer();
                    updateLables();
                //show or hide the SWA text when the map's extent changes 
                    window.map.on("extent-change", function(evt) {
                        var currentScale = map.getScale();
                        console.log('maponScale: ' + currentScale);
                        if (currentScale.toString() == "4622324.434309"){
                            window.map.graphics.hide();
                        }
                        else{
                            window.map.graphics.show();
                        }
                    });
                });