<!-- thumbnail: http://www.stackgeography.com/images/stackapps_logo.png -->
<!-- version: 1.0 -->
<!-- tag: website -->

##Screenshot / Code Snippet

![alt text](http://www.stackgeography.com/images/screenshot2.png)

##About

Ever wanted to see just what kind of locations are posting to the various Stack Exchange sites at any given time? Even if you haven't, you'll find it with [StackGeography](http://www.stackgeography.com/).

**NEW!** Now with multiple-site concurrent polling goodness!

This site started with a desire to get a visual sense of the wide-spread use of the various Stack Exchange sites while simultaneously creating a proof-of-concept mapping demo. This met both of those needs, and provided a great chance to poke around various JavaScript libraries.

###License

MIT License

###Download

No download necessary, just visit [stackgeography.com](http://www.stackgeography.com/).

###Platform

Should work on any modern web browsers with JavaScript enabled. While it works fine on desktop browsers, it has a few UI tweaks to go to be more mobile-browser friendly.

##Contact

[Adam Patridge](http://www.patridgedev.com/)

Bugs and requests and such can go on the [StackGeography GitHub repository](https://github.com/patridge/StackGeography).

##Code

[Stackgeography.com](http://www.stackgeography.com) was written entirely in JavaScript, HTML, and CSS. The code can be found, and contributions made, at the [StackGeography GitHub repository](https://github.com/patridge/StackGeography).

###APIs Used

* [Stack Exchange API v2.0][1]
* [Google Maps v3][2] (used for geocoding and mapping)

###Projects Used

* [jQuery v1.7.1 (MIT or GPL)][3] (used for just about everything)
* [jQuery UI v1.8.16 (MIT or GPL)][4] (used for the site selection dialog)
* [jsrender v1.0pre (MIT)][5] (used to render out a number of things from JavaScript objects to HTML)
* [LINQ to JavaScript (JSLINQ) v2.10 (Ms-RL)][6] (used for collection manipulations)
* [URI.js (MIT or GPL)][7] (used to simplify URL handling)
* [jquery-jsonp (MIT)](http://code.google.com/p/jquery-jsonp/) (better JSONP error handling, though $.Deferred support isn't built-in)
* [jquery.hotkeys (MIT or GPL)](https://github.com/jeresig/jquery.hotkeys/blob/master/jquery-1.4.2.js) (hit "?" for keyboard shortcut dialog)
* [geoPlugin](http://www.geoplugin.com/) (geo IP lookup used for map centering)

###UPDATES

####2012-02-24

* Ability to poll meta Stack Exchange sites, defaults to omit to keep site list shorter (toggle via saved option).
* Marker placement can be staggered via saved option.
* Clear map markers via <kbd>#</kbd>.

####2012-02-23

* **Polling multiple sites concurrently!** The UI still needs work, but if you return to site selection by pressing <kbd>S</kbd>, you can keep adding sites to poll.
* Polling management: hit <kbd>P</kbd> to view pending polls and cancel some/all of them.
* Options management: hit <kbd>O</kbd> to view/set options (more options to come).
* Using localStore for StackGeography options (currently only saving last selected site and maximum map markers).

####2012-01-19

* Mark questions with site-specific map markers.
* Options window:
  * Toggle site-based map markers vs. generic stackgeography.com map marker.
  * Change max number of markers shown (default 500).

####2012-01-18

* Switched to ASP.NET MVC to make it easier to output-cache common API hits on the server.

####2012-01-16

* Added location geocoding in batches (up to 100).

####2012-01-13

* Added filters to the Stack Exchange API calls to cut down on JSON coming back from those requests.
* Switched to SQL Server on AppHarbor to avoid locking issues on geocode cache inserts.
* Added keyboard shortcuts (<kbd>?</kbd> brings up hint window).

####2009-01-09

* Google Maps 403 issue patched with server-side caching proxy for geocoding API requests.

  [1]: http://api.stackexchange.com/docs/
  [2]: http://code.google.com/apis/maps/documentation/javascript/basics.html
  [3]: http://jquery.com/
  [4]: http://jqueryui.com/
  [5]: https://github.com/BorisMoore/jsrender
  [6]: http://jslinq.codeplex.com/
  [7]: http://medialize.github.com/URI.js/