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