fyi,  developer,  javascript

ArcGIS Javascript API 3.14 and 4.0

ArcGIS Javascript API 3.14 and 4.0

Just in time for the Esri International UC in San Diego, two big updates have been announced for the ArcGIS Javascript API - the release of 3.14 and 4.0 (beta 1).

ArcGIS Javascript API 3.14

ArcGIS Javascript API 3.14 is officially released and all things considered is a pretty big enhancement to 3.13. One that users/developers have been asking for is finally here, the LayerList dijit class widget. The is debate if such functionality should even be used in web applications still remains, but the popularity of the request over the years has finally pushed Esri to release an officially supported widget (officially a beta widget still). The widget provides users with the ability to toggle layer visibility, however it doesn’t include any legend components at this time. Other new classes include:

  • ElevationProfile (beta): Allows a user to create an elevation profile based on a line
  • ImageServiceMeasure: Allows a user to perform measurements (length, area, volume, height, absolute location) on an image service with mensuration support
  • ObliqueViewer: To display images in their native coordinate system.
  • WFSLayer: Not a widget, but worth mentioning this new class since it supports OGC Web Feature Services. You guessed it, beta only.

There are also 13 new samples and 28 major bugs that have been fixed - including many that were causing some issues in IE10 or IE11 (FYI: Many government agencies will be on IE for a while still, so this is good news). Other notables are the significant enhancements that enable developers to integrate with the Operations Dashboard and DataReviewer. For more information on what’s new and fixed at version 3.14, check out the What’s New page.

ArcGIS Javascript API 4.0 (beta 1)

As the name suggests, this is just the first of many beta releases (beta site). Esri is planning a few betas before the final release which is expected next year (UC anyone?). The biggest update to 4.0 from the user perspective is the new 3D “Scenes” view with support for 3D symbology. On the back-end, almost everything is changing - but in a way to simplify the developer experience. Migration is also very straight forward: Don’t (just rewrite).

Consider rewriting applications instead of simply trying to update them. ~ Esri help on migration

If you’ve been holding out on switching to AMD, time to get in your Delorean and join us in 2015 (80’s movie reference just in case).  I understand some people will be reluctant as we all have legacy apps built using non-AMD styles, but since 4.0 apps pretty much require a re-write anyway, it seems like a logical step for Esri to drop it at this point. Other notable changes from Esri include (listed in their beta guide):

  • Handling properties: Getting and setting properties is much more elegant and aligns with current dev approaches. Listening for property changes is also much easier by introducing a .watch(property,callback) method.
  • Map and layer separation: Views have been introduced to separate some of the map and view/drawing logic. The “Map” will contain some base details (core properties, basemap reference), while “Views” will handle the 2D/3D and drawing logic. That’s right, ArcView 3.1 has finally been integrated into ArcGIS Pro and the web APIs!
  • Module and package updates: Changes to the location of [some] classes and packages have been implemented, but it appears most of them are sticking around in some form. This renaming should be welcomed as the new structure uses cleaner names with consistent CaSe conventions.
  • Deprecation: The Geocoder widget has been dropped at 4.0 as the Search Widget will take the reins. Will help alleviate the confusion as well.

Remember, this is just the first beta - but I’d still recommend checking out the samples and the Discover 4.x documentation to start getting your ducks in a row as this is a significant overhaul for the ArcGIS Javascript API.

If you found my writing entertaining or useful and want to say thanks, you can always buy me a coffee.