Performance issue with a DistanceCompositeSceneSymbol while drawing thousands of graphics on a GraphicsOverlay.
上次发布: November 28, 2018ArcGIS Runtime SDK
漏洞 ID 编号
BUG-000117596
已提交
October 22, 2018
上次修改时间
June 5, 2024
适用范围
ArcGIS Runtime SDK
找到的版本
100.3
操作系统
Windows OS
操作系统版本
10.0 64 Bit
状态
Known Limit
经开发团队审核,已确定此问题与不受 Esri 控制的软件的已知限制有关。 问题的“其他信息”部分可能包含进一步说明。
附加信息
Using a different 3D marker symbol for each individual graphic incurs an overhead because it limits the reuse of low level graphic resources. Instead we recommend using the `Pitch Expression` property on the Renderer.SceneProperties.
Example:
```
private async void Initialize()
{
mySceneView.Scene = new Scene();
mySceneView.Scene.Basemap = Basemap.CreateImagery();
List ptList = new List();
SimpleRenderer urender = new SimpleRenderer();
var markerSymbol = new SimpleMarkerSceneSymbol()
{
Style = SimpleMarkerSceneSymbolStyle.Sphere,
Color = System.Drawing.Color.FromArgb(200, 255, 255, 0),
Height = 11,
Width = 11,
Depth = 11,
AnchorPosition = SceneSymbolAnchorPosition.Center
};
urender.SceneProperties.PitchExpression = "[pitch]";
string path = System.Environment.CurrentDirectory + "\\tower.dae";
var modelSymbol = await ModelSceneSymbol.CreateAsync(new Uri(path), 1);
modelSymbol.AnchorPosition = SceneSymbolAnchorPosition.Bottom;
var compositeSymbol = new DistanceCompositeSceneSymbol();
var nearSymbolInfo = new DistanceSymbolRange(modelSymbol, 0, 1000);
compositeSymbol.Ranges.Add(nearSymbolInfo);
var farSymbolInfo = new DistanceSymbolRange(markerSymbol, 1000, 10000);
compositeSymbol.Ranges.Add(farSymbolInfo);
urender.Symbol = compositeSymbol;
for (int i = 0; i < 1000; i++)
{
MapPoint mapPoint = new MapPoint(115 + i * 0.0005, 36 + i * 0.0005); ptList.Add(mapPoint);
Graphic graphic = new Graphic(mapPoint);
graphic.Attributes.Add("NO.", i);
graphic.Attributes["pitch"] = (mapPoint.X - 115) * 100000;
goTower.Graphics.Add(graphic);
}
goTower.Renderer = urender;
mySceneView.GraphicsOverlays.Add(goTower);
await mySceneView.SetViewpointCameraAsync(new Camera(ptList[0], 1000, 0, 0, 0));
}
```