As mentioned in a previous post I have been converting Union County's Community Mapper application from ArcGIS Server to the Google Maps API.
Why?
Do I have anything against an ArcGIS Server solution? Not at all. ArcGIS Server still takes up a lot of room in my tool chest. I just wanted to freshen up the look and feel of a stale application and take a deep dive into the ever-changing API v3.
Benefits
Let Google handle the base map and related traffic. Forget scheduling a map caching job to run for hours (and hours, and hours) every week.
Users are comfortable with Google Maps. Web mapping trends show Google Maps continues to catch (surely have surpassed by now) MapQuest.
The Google Maps API is powerful and has an active community developing applications with it. Got a question? Send it to the group and you'll get replies within hours, maybe minutes.
Disadvantages
The biggest downer
that I see is that you lose complete control over your base map. Sure Google
lets your report a problem but there is no guarantee when, or even if, they'll
get around to fixing it. Luckily the Street View crew made it around to a good
third or so of Union County so our base map isn't in bad shape.
With Google there's
always a chance of advertisements popping in at some point in the future.
Personally, I have no problem with spatially relevant advertising. That's the
price we pay for someone hosting and updating your web map services. Although,
end users might not like the idea of an ad for Jim's Tire and Lube appearing
near their parcel ownership information.
How does it work?
Users select one or
many parcels by either clicking the map or using a single search text box. This
eliminates the need for having a text box for every type of search a user might
use (owner name, parcel number, subdivision, address, etc). With some simple
logic on the back end we can query only the tables whose data matches what the
user entered. For example: if a user types "8620 Elmsworth" we can be
almost certain they are searching for an address. In this case only one table
is queried. Alternatively if a user types "Poplin" they could be
searching for Poplin Elementary School, the Poplin Farms subdivision, or Poplin
Rd. In this scenario more tables are queried for potential results but I
haven't heard any complaining from Postgres yet.
Once parcels are selected a user can uncover lots of spatial data by clicking various tabs within an info window. Questions like "What school district am I in?", "What flood zones are on my property?" and "Where are my closest parks, libraries and bus stops located?" are just a few mouse clicks away.
On the front end mapping is handled by the Google Maps API (obviously). I'm using a few JavaScript libraries as well. jQuery makes coding by browser unnecessary and makes HTTP requests a breeze. jQuery Tools helps out with some simple tabs and modal overlays and is a much lighter weight UI tool than jQuery UI. For all that autocomplete goodness, the folks over at Devbridge have put together a powerful, yet very simple jQuery autocomplete plugin. jQuery Layout keeps things orderly and helps with some nice collapsible panels. Underscore helps traverse GeoJSON from our web services and create polygons (parcels, subdivisions). Okay, maybe I went a little overkill on the js libraries.
On the back end I'm using Union County's GeoData API to do all of my spatial analysis. These are a series of RESTful web services that allow you to execute spatial queries on a PostgreSQL/PostGIS database through simple HTTP requests. I won't go into detail here but feel free to check out the documentation for a better explanation.
A few other new features to note:
parcel export in kml, csv and xml formats
add to your current parcel selection by holding ctrl and clicking the map (unless you're on a mac, still figuring that out)
Where's it at?
The old Community
Mapper is actually still live but users can choose to try out the new
application while I work out a few kinks with the newer version.
Community Mapper 1.0
http://gisapps.co.union.nc.us/cm
Community Mapper 2.0
http://gisapps.co.union.nc.us/community-mapper
If you have any
questions or comments about the application or you get some errors feel free to
let me know. Styling and documentation are lacking as these are the last things
I'll be working on.