Le blog francophone consacré
aux technologies Esri

L'API JavaScript ArcGIS passe en version 4.13


Début octobre,  couplé à la mise à jour d'ArcGIS Online, l'API JavaScript ArcGIS a été mise à jour en version 4.13. Comme à chaque mise à jour, l'API introduit de nouvelles fonctionnalités tout en améliorant les performances de certaines fonctionnalités existantes (plusieurs évolutions importantes sur ces aspects performance dans cette version). Je vous propose un résumé des évolutions notables de cette version 4.13. 

  
Améliorations des performances

Avec chaque version, les performances sont toujours améliorées. La classe VectorTileLayer a été optimisée pour un affichage plus progressif des entités vectorielles et un mécanisme de mise en cache des tuiles amélioré qui réduit le nombre de requêtes sur le réseau. 

Dans les scènes web 3D, le rendu des VectorTileLayer a été amélioré pour permettre une navigation plus fluide dans les scènes avec des fonds de carte vectoriels et une nouvelle stratégie de chargement permet d'être deux fois plus rapide des tuiles. 

Pour les couches d'entités (FeatureLayers), on notera une meilleure stabilité dans la gestion des priorités d'affichage des couches en z et une meilleure performance de rendu des entités polylignes et polygonales de grande taille. 


Enfin, on notera l'arrivée d'options de généralisation sur les entités linéaires des GraphicsLayer.

 
Amélioration des rendus 3D

Un nouveau modèle d'éclairage et d'ombrage améliore le sens de la profondeur, du contraste et de la définition du contenu 3D comme les bâtiments, les arbres et les symboles. La propriété qualityProfile permet d'obtenir ce rendu de haute qualité. De même, lorsque vous regardez de près des modèles 3D supportant des rendus physiques (PBR), vous remarquerez que certaines effets de rendu sur les surfaces, telles que la notion de réflection, sont honorés. Dans ArcGIS, l'import de fichiers glTF permet notamment cette prise en charge.
 

Les données vecteurs et raster drapées, y compris les fonds de carte, l'altitude et les images, sont maintenant chargées et affichent un niveau d'échelle plus homogène. Les couches affichant un contenu avec différents niveaux de détail peuvent être difficiles à afficher avec des vues inclinées de la scène. Désormais, plutôt que de charger et d'afficher plusieurs niveaux d'échelle, l'API charge et affiche le même niveau de détail dans de grandes parties de la vue.

Enfin, des améliorations ont été apportées à la transparence dans les couches de scènes 3D pour un rendu plus réel des objets opaques derrière ceux qui sont transparents. De même, les polygones adjacents partageant des faces identiques ne scintillent plus.
  
  
Comparer des couches par balayage
  
Si vous avez besoin de comparer des couches d'entités, des couches de carte ou des couches d'imagerie, vous disposez désormais du widget Swipe. Il fournit un outil simple permettant d'afficher une partie d'une ou plusieurs couches au-dessus d'une carte 2D. Les couches peuvent être balayées verticalement ou horizontalement. Voir l'exemple ci-dessous en live.


Vous pourrez même enchaîner plusieurs balayage pour pouvoir révéler différentes couches en scrollant simplement la carte avec la roulette de votre souris. Voir l'exemple ci-dessous en live.


  
Symboles composés pilotés par les attributs
  
Le Dictionary Renderer construit chaque symbole à la volée en fonction d'une ou de plusieurs valeurs d'attribut et gère également un nombre presque infini de combinaisons uniques. Vous pouvez maintenant symboliser des couches à l'aide d'un dictionnaire de symboles configuré avec plusieurs attributs. Par exemple, vous pouvez symboliser les stations-service pour que chaque symbole reflète le type de carburant, le type de réseau, le type de connecteur, etc. Cette approche est utilisée lorsque les spécifications de symbole entraînent de nombreuses permutations de symbole inappropriées pour UniqueValueRenderer. Voir l'exemple ci-dessous en live.

   
    
Un widget de mesure conçu pour la 2D et la 3D

Le widget Measurement est conçu pour simplifier l'expérience utilisateur et maximiser la flexibilité. Un seul widget de mesure peut désormais être utilisé en 2D et en 3D pour mesurer la distance et la surface. Ce nouveau widget encapsule les fonctionnalités des quatre widgets de mesure actuels. Il permet aux développeurs de configurer l'interface utilisateur de manière à répondre au mieux à leurs besoins spécifiques.



Widget BasemapLayerList

Le widget BasemapLayerList est désormais disponible. Similaire au widget LayerList il est dédié à la gestion des fonds de carte. Le widget affiche une liste de fonds de carte dont la visibilité peut être activée ou désactivée. Les couches de base et les couches de référence sont divisées en sections distinctes et peuvent éventuellement être réorganisées et renommées.
  
  
Widget ScaleRangeSlider

Le widget ScaleRangeSlider permet à l'utilisateur de définir une échelle maximale et minimale en fonction de plages d'échelle nommées. Lorsqu'une couche est associée au widget, minScale et maxScale sont définis sur la plage d'échelle de la couche.



Fenêtre contextuelle sur les couches de nuages de points

Une nouvelle classe PointCloudLayer prend désormais en charge les fenêtres contextuelles, vous permettant d’utiliser la grande quantité d’informations provenant de Lidar et d’analyses basées sur la photographie. Sélectionnez des points individuels dans une couche de scène de nuages ​​de points pour inspecter des propriétés telles que le code de classification, l'altitude et l'intensité. Utilisez les fonctionnalités existantes telles que les expressions PopupTemplate ou Arcade pour créer des mises en page contextuelles personnalisées.



Mise à jour de la classe ImageryLayer

La classe ImageryLayer vous permet désormais d'afficher les couches d'images obliques dans leur système de coordonnées image en spécifiant la propriété imageCoordinateSystem de la carte 2D. Cela vous permettra de visualiser vos images obliques sans aucune distorsion dans sa forme originale. Voir cet exemple de la documentation.

  
    
Modification du widget Bookmarks

Le widget Bookmarks prend désormais en charge l’ajout, la modification, la suppression et la réorganisation des signets dans le widget en définissant la propriété editionEnabled sur true. Vous pouvez également ajouter manuellement de nouveaux signets à l'aide de la méthode createBookmark ().


Des comportements de SmartMapping plus évolués

Des valeurs par défaut de SmartMapping peuvent désormais être générées pour n'importe quelle couleur de fond de carte ou d'arrière-plan, que ce soit avec un style de tuiles vectorielles standard ou personnalisé (ou même sans fond de carte du tout). Une propriété zoomOptions aux sliders de distribution des valeurs de l'interface de SmartMapping, ce qui vous permet de zoomer sur des plages plus restreintes.
   
  
Modernisation de l'API

Deux chantiers de fond ont été démarré depuis plusieurs versions pour améliorer la qualité de l'API et réduire la dépendance au framework Dojo.  Ainsi, 96% du code de base est écrite désormais écrit en TypeScript. 

D'autre part, il est prévu en version 4.14 que l'API retourne des "Promises" natives JavaScript pour supprimer définitivement les "Promises" Dojo en 4.15. 

Enfin, des travaux préparatoires sont en cours pour éliminer la dépendance au mécanisme de chargement des modules et au "Declare" de Dojo.


Pour en savoir plus...

Si vous recherchez la liste complète des améliorations mises à jours et corrections de bugs, pensez également à consulter les notes de publications et les 15 nouveaux exemples de code.
  
  
N'oublions la version 3.x...

Une version 3.30 est également disponible pour les développeurs utilisant encore la version 3.x de l'API JavaScript ArcGIS. Les infos sur cette mise à jour se trouvent ici.

Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article: