As mentioned in a previous post I have been converting Union County's Community Mapper application from ArcGIS Server to the Google Maps API.
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.
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.
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 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.