laptop and a wrench

Bogue

Performance issue with a DistanceCompositeSceneSymbol while drawing thousands of graphics on a GraphicsOverlay.

Dernière publication: November 28, 2018 ArcGIS Runtime SDK
Numéro d’ID de bogue BUG-000117596
EnvoiOctober 22, 2018
Dernière modificationJune 5, 2024
S’applique àArcGIS Runtime SDK
Version trouvée100.3
Système d’exploitationWindows OS
Version du système d’exploitation10.0 64 Bit
StatutKnown Limit

Informations supplémentaires

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)); } ```

Étapes pour reproduire

ID de bogue: BUG-000117596

Logiciel:

  • ArcGIS Runtime SDK

Recevoir une notification lorsque le statut d’un bogue change

Télécharger l’application Esri Support

En savoir plus sur ce sujet

Obtenir de l’aide auprès des experts ArcGIS

Contacter le support technique

Télécharger l’application Esri Support

Accéder aux options de téléchargement