我有一个名为scale_condition的变量
var scale_condition= 0;
这里我有标记符号的变量。大小引用第一个变量scale_condition
var Facilities_Symbol = {
type: "simple", // autocasts as new SimpleRenderer()
symbol: {
type: "simple-marker", // autocasts as new SimpleMarkerSymbol()
size: scale_condition,
color: "black",
style: "circle"
},
};
在这里,我有一个条件声明,承认规模的变化。但是,我也希望每当满足scale参数时就为其分配一个新的scale_condition值。
view.watch('scale', function(newScale) {
console.log("Scale: ", newScale);
if (newScale > 500000) {
scale_condition=5;
} else {
scale_condition=70;
}
});
我的问题是,尽管代码确认比例的更改,但它没有为Facilities_Symbol变量分配新的scale_condition值。就像函数中的scale_condition未链接到scale_condition变量一样。我觉得我已经接近解决方案,但是需要对我的代码进行一些调整。
答案 0 :(得分:0)
我遇到了类似的问题,我的解决方案是定义两个不同的渲染器,并在scale watch函数中替换graphicLayer的符号渲染器。
我的解决方案基于graphicLayer,不确定如何将图形添加到地图。
var S_Symbol = {
type: "simple-marker", // autocasts as new SimpleMarkerSymbol()
size: 5,
color: "black",
style: "circle"
};
var L_Symbol = Object.assign({}, S_Symbol);
L_Symbol.size = 70;
var S_Renderer = {
type: "simple", // autocasts as new SimpleRenderer()
symbol: S_Symbol
};
var L_Renderer = {
type: "simple", // autocasts as new SimpleRenderer()
symbol: L_Symbol
};
view.watch('scale', function(newScale) {
console.log("Scale: ", newScale);
//Change the layer renderer
graphicsLayer.renderer = newScale > 500000 ?
S_Renderer: L_Renderer;
});