Re-mixing the Flex Sample Viewer

Posted by Dave Bouwman | Posted in ArcGIS Server, ESRI, Flex, Usability | Posted on 18-11-2009

16

The ESRI Flex Sample Viewer is a great starting point for creating map centric RIA’s. The widgetized nature of the starter kit facilitates significant re-use of components, and there are a couple dozen plug-and-play components available from the Flex Code Gallery. Woot!

The downside of this ease of re-use is that we are seeing a new wave of cookie cutter sites out there. It’s great that these sites can the whipped up so quickly, but it’s pretty clear that (for the most part) little or no thought is given to how the user should interact with the site. We see hordes of menus and tons of widgets, all gloriously trying to pseudo replicate ArcMap. Let’s be clear – if your users need ArcMap, give them ArcMap. If they actually know the data model to the point that an ad-hoc query tool will be useful, chances are they will need more functionality than you can build into the Flex app anyhow. Right tools, right place and all that…

Where was I… oh yeah… remixing the sample viewer. When I’m designing an application, I want to build it as focused as possible. Every mouse click and menu drop down I can remove, the better it is for the user. So – here are a few of the things that I wanted from a UI/behavior perspective…

  • I want top level menu items that do something on-click. I don’t want a pull down with a single item on it – I want a print icon that opens the print dialog when it’s clicked.
  • The shortcut menu is a great idea, but I want to have things that “only” appear on the short cut menu. Having something in two places in a UI is counter intuitive in most cases, and wastes UI space.
  • I want to have a limited set of base maps available, and I want them to be displayed as top level icons on the menu. Clicking them will turn on the layer. Active layer should have a “glow” indicating that it’s… well… active.
  • I want widgets that can’t be closed. One thing I’ve seen when letting clients run a Flex app is when they close widgets they are confused about how to re-open it. Thus I want a sub-type of widget that can only be minimized and not closed.
  • I want a full width banner across the top of the page – providing more room for top level items.
  • I want a search box in the top banner so it’s easy to search.
  • I want a zoom to / book mark tool on the top bar so it’s easy to jump to commonly accessed extents

And I want all the same level of flexibility in terms of configuration, and the ability to leverage existing widgets. Now. ;-)

Design Sketches

In coming up with this list of things I wanted, I did some sketches…  (apparently my scanner is crap!)

remix-sketch1

remix-sketch2

In the past I’ve used visio or balsamiq to create wireframes, but more recently I’ve been getting back into sketching simply because it’s so fast. I’ve been using Jason Robb’s wireframe templates as a starting point (article and direct download of pdf).

More Tile Caches…

Since ESRI is changing their caches over to Web Mercator, I wanted to start working with some web mercator tile caches. ESRI has *some* services available now (google search here), but realistically most of these are pretty weak for base maps. So, I created tile layers for OpenStreetMap and CloudMade. Once I finish a few tweaks to these layers (need to display the copyright statements on the map) I’ll release them – likely to the ESRI Code Gallery, but I also want them on a SCM somewhere. Maybe GitHub? Thoughts?

Let’s take a peek…

Things are not fully dialed in yet, and I really need to focus on detailing this out for my client, but this is the generic starting point. I’ll post some live links when my client’s site is ready for beta testing.

remix-mc

This shows the full width banner, the address search, zoom to drop down (needs skinning), an “Always Open” widget, the two base map icons, and the top level print widget. The tiles are from the CloudMade Midnight Commander cache.

remix-2

This one shows the locate dialog that’s opened by running a search from the banner bar. As you can see there are still a few issues with this widget. Since “locate” is not the key focus of the app, this widget can be closed. I’m also going to work on the actual search logic – right now it’s parsing out the address based on commas, and then sending to the ESRI geocoder. I may look at using another service that has more matching logic on the back end so I don’t have to figure out how to de-construct the address.

remix-3

This shows the print widget, accessed by just clicking the printer icon (no drop down required). Oh, and the Open Street map cache in the background.

What’s nice about this is that the user does not need to go digging around in menus to access the functions they need. This template will be used for very focused applications – do one thing, and do it well is the mantra for the project – and so keeping things up front will really help out.

Behind the Scenes

So – the real question is – can we share this? Good question! I’ll be blogging more about how we (big shout out to Jeff Germain who whipped up the “toolbars” stuff) created various aspects of this, and at the very least, you can re-implement most of this stuff pretty quickly. We had to hack at the core of the Sample Viewer (specifically ControllerManager.as) and added a bunch of additional controls for our “toolbars”. At this point things are “working” for the scenarios we need right now, but I suspect we’ll have some refactoring in our future. I’ve got at least 3 apps that will build on this, and by the time all 3 are released, we should have tracked down all the weirdness, and have something that supports all the out-of-the-box Sample Viewer stuff, as well as our extensions. Stay tuned!

Comments (16)

[...] This post was mentioned on Twitter by Dave Bouwman, Adam Fox. Adam Fox said: Fantastic post re the ArcGIS Server examples – RT @dbouwman: Blogged: Re-mixing the Flex Sample Viewer http://tinyurl.com/ydh4n2g [...]

I really like what you’ve done to reduce the problem of mystery meat navigation on the toolbar.

Have you done usability testing on the floating boxes? My employer’s MapGuide 6.5 site has floating search and reporting toolbars and they were one of the features I heard the most negative feedback on. No matter where the user dragged them to, they always seemed to be in the way.

Regardless, great work; good to see that at least one developer isn’t just sticking with the stock template :)

Great post Dave,

The power of the sample app is that it gives us a lot of different tools to choose from when building a new Rich Internet Application. The power of the thoughtful designer is to choose which (few) tools are essential for the user and to design their use to be intuitively obvious. Mark Twain once said “If I had more time, I would have written you a shorter letter.” The same ‘less is more difficult’ principle applies to web interface design. Those designers who can do it well are incredibly valuable.

Excellent Post!

We’ve done some similar but working a little bit more on the design interface… The goal was also that the application will be nice to work on touch interfaces.

Check out the screenshot: http://sandrobatista.wordpress.com/files/2009/11/exploradorweb_01.png

Dave,

Very nice job to re-skin the viewer! Indeed very few of viewer users have done that. I’m working on the viewer 2.0 that will fundamentally address the issues you’ve identified and tackled. Keep doing it, please!

Stu, the Mark Twain quote will be on my wall!

Thanks!

Sandro – that looks great – I assume you just re-worked Banner.mxml and loaded all the tools in right there, or does the UI still build itself based on the config.xml?

Dave

We have not done any usability testing on the floating windows. They minimize pretty well, and can be pushed off the screen entirely, but it is something we’re noodling on.
Some clients like having the wall to wall map, and others feel they’d like to sacrifice a panel on the right that would hold info/tools related to the current activity.
I think it depends on the workflow – if the app is mainly about exploration, then bigger map is likely better. If the map is providing context to drill into other data, then a side panel is worth while.

Cheers & Thanks!

Dave

Thanks Moxie – We’re interested in seeing what V2 brings, and would be more than happy to help test it out.

Cheers,

Dave

Social comments and analytics for this post…

This post was mentioned on Twitter by dbouwman: Blogged: Re-mixing the Flex Sample Viewer http://tinyurl.com/ydh4n2g…

You should use the Google HTTP geocoder. It breaks the address up server side and returns a really well segmented standardized address, confidince and bounding box.
http://code.google.com/apis/maps/documentation/geocoding/index.html

Great Work Dave!
Are you having a better experience with Flex/AS than Silverlight(remembering a previous post)? Are you running this inside an ASP.NET MVC site?
From the pics the re-skin looks really good, cant wait to see it. Sandro – That looks really nice!
H

I like the fact you differentiated what you’re doing from just “skinning” the interface (swapping in different color schemes and graphics), but I’m not sure just “re-mixing” goes far enough. Something more like “re-engineering the user-interface” comes to mind. You’re describing lower-level modifications of more than just the appearance.

This is a tall order with the Viewer as it is. It does an admirable job separating concerns — at least as far as the Flex SDK and ESRI Flex API it inherits allow (kudos!). But changing “how” the UI operates, not just “what” it looks like is decidedly non-trivial.

There’s a signpost up ahead. Next stop — Flex SDK v4. Once the Viewer, and the ESRI Flex API for that matter, are built upon Spark + FXG paradigm, everything changes. You’ve got the ability to do things like make a Panel component collapsible simply by giving it a skin that provides that functionality — NOT altering the Panel component itself as would be necessary with earlier versions.

Here’s hoping this is what Moxie et al have in mind (fingers crossed). Thanks, Dave, for bringing this issue to the fore.

:E

Dave:
Good to see your post. In my experience, customers are really happy with the UI. The tools and menu in the drop down lists are helps better map space. i agree search tool and fwd/backward extent button extent needs to kept outside. Have a you looked at SL Showcase application?.

I’m curious you are .NET geek suddently turned to Flex?. Has your client keen on Flex?

Thanks Lakshmanan – We are doing more work in Flex simply because there are way less cross-browser issues. Our clients really like it, and the Flex community is very mature, with lots of open source goodies for us to integrate with.

Cheers

Dave

Henry,

To be clear – we did not have any problems with map-centric Silverlight apps – our problem was that the SL3 bi-directional data-binding, MVVM and complex UI story was not very well established. We do like the Flex API from ESRI, but the big advantage right now is the existing components for the Starter Kit – thus the effort to re-mix the UI, while still keeping the internals so we can leverage those components (and re-use our custom components).

We are running this out of an MVC app, and we’re making calls back to Controller for Json data as needed (i.e. where we can be more efficient than the ESRI REST API. More on this soon… ;-)

Cheers

Dave

Matt – I looked at this, but the terms of service look pretty clear on the fact that you can’t use the Google Geocoder if you are not using a Google Map control. I briefly thought about that as an option for this project, but decided against it.

Looks like I’m going to use GeoCoder.us – more on that when I get a chance to wire it in.

Cheers,

Dave