如何使用ArcGIS JS 4.11创建与比例相关的函数来增加符号标记的大小?

时间:2019-08-26 16:05:37

标签: javascript conditional-statements gis arcgis-js-api

我有一个名为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变量一样。我觉得我已经接近解决方案,但是需要对我的代码进行一些调整。

1 个答案:

答案 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;
});