Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 512 lines (425 sloc) 30.945 kb
b33ee7e @ryanttb jQuery Geo 1.0b1!
ryanttb authored
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="utf-8" />
5 <title>jQuery Geo</title>
6 <meta name="description" content="jQuery Geo - A spatial mapping plugin for jQuery" />
7 <meta name="author" content="Ryan Westphal" />
8 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9 <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/themes/blitzer/jquery-ui.css" />
10 <style type="text/css">
11 html { font:13px/1.231 sans-serif; }
12
13 body, h1 { margin: 0; padding: 0; }
14
15 body, select, input, textarea
16 {
17 color: #444;
18 }
19
20 pre
21 {
22 white-space: pre-wrap;
23 white-space: pre-line;
24 }
25
26 .geomap
27 {
28 background: #444;
29 bottom: 0;
30 left: 0;
31 position: fixed;
32 right: 0;
33 top: 0;
34 }
35
36 .container
37 {
38 position: relative;
39 margin: 32px auto;
40 width: 80%;
41 }
42
43 .project-links
44 {
45 float: right;
46 }
47
48 .header
49 {
50 margin: 32px 0 0 10%;
51 }
52
53 .header img
54 {
55 height: 64px;
56 width: 64px;
57 vertical-align: bottom;
58 }
59
60 .header h1
61 {
62 display: inline-block;
63 }
64
65 .header h1 .framework
66 {
67 color: #fff;
68 font-size: 32px;
69 }
70
71 .header h1 .subtitle
72 {
73 color: #faa;
74 display: block;
75 font-size: 14px;
76 font-style: italic;
77 margin-left: 48px;
78 }
79
80 h2
81 {
82 clear: both;
83 margin-bottom: 8px;
84 }
85
86 time
87 {
88 font-size: 8pt;
89 font-style: italic;
90 margin: 2px;
91 }
92
93 .main
94 {
95 background: #fff;
96 border-radius: 8px;
97 box-shadow: 2px 2px #555;
98 margin-top: 128px;
99 padding: 32px;
100 }
101
102 .thanks
103 {
104 list-style-type: none;
105 }
106
107 .thanks li
108 {
109 display: inline-block;
110 margin: 1em;
111 }
112
113 #jQueryLogo
114 {
115 background: #39414A;
116 border-radius: 8px;
117 padding: .5em;
118 }
119
120 </style>
121 </head>
122 <body>
123 <div class="geomap">
124 <div class="header">
125 <img src="apple-touch-icon.png" alt="" />
126 <h1><span class="framework">jQuery Geo</span><span class="subtitle">write less, map more</span></h1>
127 </div>
128 </div>
129 <div class="container">
130 <div class="main" role="main">
131 <div class="nav project-links">
132 <a href="http://jquerygeo.com/1.0b1/" title="Documentation and demos">Docs &amp; Demos</a>
133 <a href="https://github.com/AppGeo/geo/" title="Source code on GitHub">GitHub</a>
134 </div>
135
136 <h2>jQuery Geo - an interactive mapping plugin</h2>
137
138 <p>jQuery Geo, an open-source geospatial mapping project from Applied Geographics, provides a streamlined JavaScript API for a large percentage of your online mapping needs. Whether you just want to display a map on a wep page as quickly as possible or you are a more advanced GIS user, jQuery Geo can help!</p>
139
140 <p>You can check back here or follow <a href="https://twitter.com/jQueryGeo">@jQueryGeo</a> on Twitter for release announcements. Also, head over to the lead developer's Twitter account, <a href="https://twitter.com/ryanttb">@ryanttb</a>, for development info, links, or to ask questions.</p>
141
142 <h2>Download</h2>
143
144 <p>Using jQuery Geo requires adding one element, including one script (apart from jQuery itself) and calling one function. The following copy-and-paste snippet will help you get started.</p>
145 <pre>&lt;div id=&quot;map&quot; style=&quot;height: 320px;&quot;&gt;&lt;/div&gt;
146 &lt;script src=&quot;http://code.jquery.com/jquery-1.7.2.min.js&quot;&gt;&lt;/script&gt;
147 &lt;script src=&quot;http://code.jquerygeo.com/jquery.geo-1.0b1.min.js&quot;&gt;&lt;/script&gt;
148 &lt;script&gt;$(function() { $( &quot;#map&quot; ).geomap( ); });&lt;/script&gt;</pre>
149
150 <p>code.jquerygeo.com is on the CloudFlare Content Delivery Network (CDN) so our minified, gzipped library will get to your client as fast as possible!</p>
151
152 <h2>Beta 1 released!</h2>
153 <time>2012-07-30</time>
154
155 <p>Over 120 commits and five months after the release of alpha 4, jQuery Geo is now feature complete with what we planned for version 1.0!</p>
156
157 <h3>New interaction engine</h3>
158
159 <p>User interaction is a big part of an interactive map widget, obviously!, and in beta 1 we have optimized panning, zooming, and how they work together. Your maps should feel more responsive overall.</p>
160
161 <h3>Wicked fast mobile</h3>
162
163 <p>Using CSS3 features on modern mobile devices brings tremendous speed improvements to iOS and Android.</p>
164
165 <h3>New default map</h3>
166
167 <p>Probably the most noticable change, jQuery Geo is still using OpenStreetMap data by default but in the form of tiles rendered by <a href="http://open.mapquest.com/" target="_blank">mapquest open</a>. It's your same open data but the servers are faster and the cartography is nicer.</p>
168
169 <h3>New build environment</h3>
170
171 <p>jQuery Geo now builds with <a href="https://github.com/cowboy/grunt" target="_blank">grunt</a> from Ben Alman making it 100% lint free, smaller, and supporting the next generation of the jQuery Plugins website.</p>
172
173 <h3>Drag modes</h3>
174
175 <p>There is a whole new mode style called drag. Previously, draw modes such as drawPoint and drawPolygon, allow the user to perform individual clicks or taps to create shapes. New modes have been added that trigger shape events on a single motion: dragBox and dragCircle. They disable map panning and allow quick digitization of rectangles and circles, great for spatial queries and selecting! They both send GeoJSON Polygon objects as the geo argument to your shape event handler.</p>
176
177 <h3>Load events</h3>
178
179 <p>Two new events, loadstart and loadend, allow you to display indicators or give feedback to users while map tiles or other images are downloading.</p>
180
181 <h3>Forcing refresh</h3>
182
183 <p>Sometimes you have time-dependent, continuously updated data and images coming from a map server. New arguments to refresh allow you to get updated images even if the map's viewport (and thus, image URLs) hasn't changed. You can also refresh only specific services that you know will have changed, leaving other more static images in place.</p>
184
185 <h3>Zoom level constraints</h3>
186
187 <p>Whether you have a tiled or non-tiled (all shingled) map, you can now limit how far in and/or out a user can zoom with the new zoomMax and zoomMin options.</p>
188
189 <h3>Breaking</h3>
190
191 <p>There is one, small breaking change in how all template strings are processed. This is due to a change (and finalization in the API) to jsRender, which jQuery Geo uses for a service's src template strings and measureLabels template strings. In short, use {{:variable}} where you used to use {{=variable}}. You can read more about this change on Boris Moore's blog post: <a href="http://www.borismoore.com/2012/03/approaching-beta-whats-changing-in_06.html" target="_blank">http://www.borismoore.com/2012/03/approaching-beta-whats-changing-in_06.html</a>.</p>
192
193 <h3>Enjoy!</h3>
194
195 <p>Thanks for checking out jQuery Geo! We hope you find it useful and will keep you updated as we press on to a 1.0 release!</p>
196
197 <p>Here's the full changelog:</p>
198
199 <pre>* geographics - use canvas compositing for Polygons with holes
200 * geographics - [bug] on polygons with holes, stroke draws a line from exterior ring to interior one
201 * docs - geomap - trigger a shape event when a user finishes measuring
202 * geomap - trigger a shape event when a user finishes measuring
203 * geomap - [bug] elements inside the map div lose their position setting
204 * geomap - trigger bboxchange when we update the map size after the window resizes
205 * geomap - [bug] multiple map widgets share the same compiled measureLabels template names and overwrite each other
206 * examples - inset map/multiple maps example
207 * geomap - [bug] in zoom mode, dragging from bottom-right to top-left draws box but doesn't zoom
208 * geomap - [bug] any mouse down triggers refresh, even without pan
209 * cdn - fix caching
210 ** Cache-Control header max-age set to 5 years
211 ** remove Expires header
212 * geomap - upgrade to jsrender 1.0pre
213 * deploy - build releases using grunt
214 * deploy - make a package for new jQuery plugin directory
215 ** https://github.com/jquery/plugins.jquery.com/blob/master/docs/package.md
216 * deploy - lint JavaScript files
217 * docs - geomap - dragBbox mode
218 * docs - geo - polygonize function for bbox
219 * geo - polygonize function for bbox
220 * geomap - dragBbox mode
221 * docs - geomap - shift option (default, zoom, dragBbox, off)
222 * geomap - shift option (default, zoom, dragBbox, off)
223 * docs - geomap - loadstart, loadend events
224 * docs - geomap - allow append to take an array of shapes
225 * docs - geomap - allow remove to take an array of shapes
226 * docs - geomap - improve services option documentation
227 * geomap - clamp measure labels to [0, 0]
228 * geo - clamp centroid to bbox
229 * geomap - measure label for polygon should be in centroid
230 * geomap - merge interactive pan and zoom into one, faster system (pan/zoom rewrite)
231 * geomap - [bug] iOS - panning is visually jumpy but settles on the correct bbox in the end
232 * geomap - pinch-zoom doesn't follow user's fingers close enough when scaling
233 * geomap - [bug] pinch zoom on iPad 2 (iOS 5) doesn't refresh tiles when zooming out
234 * geomap - request new image in shingled service during interactive pan
235 * geomap - [bug] zoom in more than once with zoom method moves tiles to the wrong spot
236 * geomap - [bug] only services that have finished refreshing move when the user pans
237 * geomap - [bug] map panning is jumpy, appears to be related to shapes and/or drawing context
238 * geomap - [bug] pan sometimes lags on first drag
239 * geomap - tiled data-scaleOrigin should be stored as an array
240 * geomap - android - [bug] cannot always pan map after appending shapes
241 * geomap - android - browser stops pan/zoom after 7 logos on logo demo
242 * geomap - [bug] mouse wheel on bad or missing tile doesn't zoom out on first rotate
243 * geomap - increase mobile performance by 9000
244 * docs - geomap - add argument to refresh to force reload of images for dynamic data
245 * docs - geomap - allow service-level refresh
246 * docs - geomap - zoomMax option (tiled &amp; shingled)
247 * docs - geo - include method for bbox
248 * geomap - bboxMax should reset center &amp; pixelSize
249 * geomap - [bug] initializing center, zoom, &amp; bbox doesn't set all properties
250 * geo - [bug] polygonize doesn't return valid polygon when using geodetic coordinates
251 * geomap - [bug] dragBbox doesn't include the bbox property in the shape
252 * geomap - dragBbox should send a Point (with bbox) for single clicks
253 * docs - geomap - dragCircle mode
254 * geo - include method for bbox
255 * geomap - dragCircle mode
256 * geomap - [regression] refresh &amp; toggle methods no longer keep original service objects in sync
257 * geomap - [bug] when a singled image hasn't loaded after pan and you double click on empty space, the zoomed bbox seems wrong
258 * geomap - allow service-level refresh
259 * geographics - remove the blit canvas from the DOM, i.e., don't attach
260 * geomap - don't initialze service-level geographics until they're used
261 * geomap - add argument to refresh to force reload of images (in case of dynamic data)
262 * geomap - loadstart, loadend events
263 * geomap - allow append to take an array of shapes
264 * geomap - allow remove to take an array of shapes
265 * geomap - zoomMax option
266 * geomap - [bug] cannot interact with other elements on the page on iOS after panning the map (#71)
267 * geomap - iOS - [bug] after one finger is removed, stop processing as if multitouch is still on
268 * geomap - dumb high-precision mice down on tiled maps
269 ** otherwise, the high precision rounds down to zero change in zoom
270 * geomap - use linear distance for pinch zoom calculation
271 * docs - geomap - zoomMin option
272 * geomap - zoomMin option
273 * docs - geomap - use MapQuest Open by default; can't deny that it looks much nicer
274 * geomap - use MapQuest Open by default; can't deny that it looks much nicer
275 * docs - geomap - rename dragBbox to dragBox
276 * geomap - rename dragBbox to dragBox
277 * geomap - [bug] error using tiled deferred services</pre>
278
279 <h2>Alpha 4 released!</h2>
280 <time>2012-02-19</time>
281
282 <p>It's been a long three months but we're very happy to announce the release of jQuery Geo 1.0a4! Here are some highlights and details:</p>
283
284 <h3>At the service level</h3>
285
286 <p>In alpha 3, you could append and interact with shapes on the map. In alpha 4, this is extended to services! Service-level shapes have their own shapeStyle apart from the map's and hide when their service is hidden.</p>
287
288 <h3>More modes!</h3>
289
290 <p>There are new modes to let you measure distance &amp; area, and a static mode for when you want to display a map but not let users interact with it. Apart from the three new built-in modes, you can also create custom modes to help organize your app.</p>
291
292 <h3>What's that? CSS labels!</h3>
293
294 <p>You can now give any shape a label when you append it. You can style the label from your regular style sheet using the .geo-label class which opens labeling up to all the design power of CSS3. There's even more potential if you put a class or id on your map service because you can target labels on different services using CSS rules. Also, labels can be any HTML which opens them up to new features in HTML5!</p>
295
296 <h3>More service src options</h3>
297
298 <p>The old getUrl property has been renamed to src (see Breaking below) and you can now set it to a string template. jQuery Geo will stick your tile row, column, zoom, or image bbox in for you. Services defined as a string are a little easier on the eyes than a function and can be stored as JSON data.</p>
299
300 <p>You can still use a function and the function can now return a <a href="http://api.jquery.com/category/deferred-object/">jQuery Promise</a> to delay loading of the map image or tile. Want to calculate a Mandlebrot image in a JavaScript web worker without blocking user interaction? Return a new jQuery.Deferred() and call resolve when you're done!</p>
301
302 <h3>Mobile</h3>
303
304 <p>This version has better mobile support including pinch zoom on iOS and Android 3+ as well as other bug fixes for mobile devices.</p>
305
306 <h3>Don't worry about $.geo.proj so much</h3>
307
308 <p>You can now send either geodetic (lon, lat) or projected (x, y) coordinates to any library function and it will return accordingly if you stay on the default web mercator projection. You should still set it to null or implement the (to|from)GeodeticPos functions if you need to change projections.</p>
309
310 <h3>Breaking</h3>
311
312 <p>There is one deprecation (a service object property will be renamed in beta) and one minor breaking change.</p>
313
314 <p>To align this API with HTML itself, the getUrl property on service objects will be renamed to src. Using either src or getUrl will work for this alpha release but getUrl will be removed for beta. Please update any map services to use the new src property when you're defining them.</p>
315
316 <p>Also on service objects, the initial opacity and visibility are in a property of the service object itself named style. Your old services will still function but ones you may expect to be hidden initially will be visible until you update the service object.</p>
317
318 <p>To exemplify both of these changes, instead of: <pre><code>{
319 type: &quot;tiled&quot;,
320 getUrl: function( view ) { return &quot;&quot;; },
321 visibility: &quot;hidden&quot;
322 }</code></pre> you should write: <pre><code>{
323 type: &quot;tiled&quot;,
324 src: function( view ) { return &quot;&quot;; },
325 style: { visibility: &quot;hidden&quot; }
326 }</code></pre></p>
327
328 <h3>Everything else</h3>
329
330 <p>With over 60 commits, there are more features and bug fixes to write about. If you dare to click the link below (or read the README file on the project's GitHub page) you can get a better idea of what went into this build. This is the last alpha release (!) and the path to beta will add unit testing, a better build process, and smaller, more refined source code. Thanks for all your support!</p>
331
332 <pre>* geomap - [bug] changing the tilingScheme doesn't update pixelSize, maxPixelSize, center or centerMax
333 * geomap - [bug] shingled services throw exception during resize
334 * docs - geomap - axisLayout option
335 * geomap - axisLayout option
336 * docs - upgrade to jQuery Mobile rc3
337 * docs - allow page refreshing
338 * docs - geomap - more modes: measureDistance, measureArea, static
339 * docs - geomap - append label argument
340 * docs - geomap - toPixel/toMap should take all coordinate dimensions like the proj functions
341 * geomap - toPixel/toMap should take all coordinate dimensions like the proj functions
342 * geomap - move the drawing container instead of individual points during pan
343 * geomap - [bug] drawStyle resets after window resize
344 * geomap - append label argument
345 * docs - geomap - measureLabels option
346 * geomap - measureLabels option
347 * geomap - measureDistance mode
348 * geomap - measureArea mode
349 * docs - geomap - service-level shapeStyle
350 * docs - geomap - getUrl string option
351 * geomap - [bug] create doesn't clear drawing shapes
352 * docs - geomap - service-level shapes
353 * docs - geo - detect geodetic coordinates and call $.geo.proj automatically, don't require devs to set $.geo.proj to null
354 * docs - geomap - add projection section explaining how bbox &amp; center affect map unit type
355 * docs - geomap - rename getUrl to src
356 * docs - geomap - scroll option
357 * docs - geomap - pannable option
358 * geomap - src string option
359 * examples - string service src
360 * geomap - [bug] map tracks mouse when not panning if click on other elements
361 * geomap - pannable option
362 * geomap - scroll option
363 * geomap - [bug] shapesContainer is being cleared twice during mouse wheel zoom
364 * geomap - support pinch zoom on iOS
365 * docs - geo - add recenter function for bbox
366 * geomap - static mode
367 * docs - geomap - allow Deferred or Promise as return value from src function
368 * geomap - [bug] widget factory merges first service with default sometimes causing exceptions with shingled services
369 * geomap - allow Deferred or Promise as return value from src function
370 * geomap - [bug] resize event triggered too many times during resize
371 * geomap - service-level shapes
372 * geomap - service-level find
373 * geographics - add a resize method, call from geomap.resize
374 * geo - add recenter function for bbox
375 * geomap - [bug] errors creating second un-tiled map after destroying a first on same element
376 * geomap - refresh shouldn't request new images if the map element is hidden
377 * geomap - [bug] delayed multitouch isn't nearly as smooth as true multitouch
378 * geomap - [bug] tiled pinch zoom isn't smooth
379 * geo - detect geodetic coordinates and call $.geo.proj automatically, don't require devs to set $.geo.proj to null
380 * geomap - [bug] mouse wheel doesn't work with jQuery 1.7
381 ** upgrade to latest jquery.mousewheel plugin
382 * geomap - service object visibility and opacity options should be moved to a style property
383 * geomap - use _currentServices in all functions unless we actually need to update the public options services object
384 * geomap - don't change user's service objects in opacity/toggle
385 * geomap - show attr text
386 * docs - geomap - selector argument to find method
387 * geomap - selector argument to find method
388 * geomap - pan mode should use a hand cursor by default
389 * geomap - [bug] only services that have finished refreshing move when the user pans
390 ** for a4: hide unfinished services
391 * geomap - [bug] a user can mess with the center option, e.g., convert numbers to strings, and it can wreck havoc with map state
392 * geomap - [bug] zoom option doesn't return proper values for shingled services
393 * geomap - [bug] non-tiled maps can zoom out past zoom 0
394 * geomap - don't request tiles that are -y index
395 * geomap - [bug] initializing tiled map by non-geodetic bbox always causes zoom level 0
396 * docs - geomap - empty string needed for label element
397 * geomap - [bug] double tap to end shapes adds two points before ending the shape, in different places
398 * geomap - [bug] lifting fingers after pinch zoom in drawLineString or drawPolygon modes sometimes adds fake visual coordinate on touch point last lifted
399 * docs - upgrade to jQuery 1.7.2
400 * geomap - [bug] scroll=off doesn't zoom map but also doesn't allow document scroll
401 * geomap - [bug] changing mode does not reset measure drawing
402 * geomap - [bug] jQuery UI Widget Factory no longer passes pageX &amp; pageY event properties during _trigger when using jQuery 1.7
403 ** upgrade to Widget Factory 1.8.17
404 * examples - all demo (shingled)
405 * docs - geomap - custom modes
406 * examples - all demo (tiled)</pre>
407
408 <h2>Alpha 3 released!</h2>
409 <time>2011-11-01</time>
410
411 <h3>jQuery Geo 1.0 Alpha 3 is mostly about sketching!</h3>
412 <ul>
413 <li>new modes: drawPoint, drawLineString, and drawPolygon allow users to draw on your map</li>
414 <li>new event: shape triggers anytime a user draws a feature</li>
415 <li>new style option: drawStyle lets you change how the shapes look while being drawn</li>
416 </ul>
417 <h3>It's also about geometry functions!</h3>
418 <ul>
419 <li>$.geo's center, height/width, expandBy, scaleBy &amp; reaspect functions operate on bounding boxes</li>
420 <li>$.geo's bbox, distance, contains &amp; centroid functions operate on geometries</li>
421 </ul>
422 <p>Many examples have more class and now link to jsFiddles to further explain what's going on!</p>
423 <h3>And a tiny bit about size</h3>
424 <p>jQuery Geo is now hosted on a CDN with gzip enabled bringing the entire library to your neighborhood at under 18k.</p>
425 <h3>Breaking</h3>
426 <p>There are some minor breaking changes to make the API more consistent.</p>
427 <ul>
428 <li>The getPixelSize function is now a read-only option named pixelSize: <pre><code>$( &quot;#map&quot; ).geomap( &quot;option&quot;, &quot;pixelSize&quot; );</code></pre></li>
429 <li>The shapeStyle function is also now an option, e.g.: <pre><code>$( &quot;#map&quot; ).geomap( &quot;option&quot;, &quot;shapeStyle&quot;, { color: &quot;red&quot; } );</code></pre></li>
430 <li>
431 The boolean visible property on service objects is now the visibility property found in CSS and geomap styles and can be &quot;visible&quot; or &quot;hidden&quot;:
432 <pre><code>$( &quot;#map&quot; ).geomap( { services: [ { id: &quot;roads&quot;, visibility: &quot;hidden&quot;, ... } ] } );</code></pre>
433 </li>
434 </ul>
435
436 <h2>Edge</h2>
437 <p>The links above will always point to the latest stable release. However, you can test the most recently committed docs, code &amp; demos by heading over to the test release.</p>
438 <a data-role="button" href="http://jquerygeo.com/test/" title="jQuery Geo test build">Test docs &amp; demos</a>
439
440 <h2>Thanks!</h2>
441
442 <ul class="thanks">
443 <li>
444 <!-- AppGeo -->
445 <a href="http://www.appgeo.com"><img width="180" height="48" title="Applied Geographics" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAAwCAIAAAA3jserAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAD/NJREFUeF7tnAlwVeUVx8Vax7HWqqXKqG2t2tbasdZaW7XtOOp0H1u1KjqtC4KAKIvKvoUlJAQIJIQQQkJMWBOyQEIgIQtJCCSQBBII2clC9n3fN/vDi9fL/e67776XhxJ5mTtMePmW853v/53zP+d89133mf3HrgETGrjOrhm7Bkxp4IqAo7ipZd2xE/2Dg994vbf39h0tK9+Ymj4jMmby/kPysyg20f/0mbTK6lGtAduDY2h4+JU9odctXrUl7fSoVo2O8BVt7Tuysp//dNdNy1xYqc7zPcd1rwWGbTuVVdvROeq0YXtwcFzudnFHX8/47mjo6hp1GtERePizz5q6u52PpjzisdUsLJSIudFh9S83bl125GhRY/MoUojtwTHtQPSYJU6o5tsOziHn8keRLsyKmlFV8/eAQH1TofNX1PJ26AGzs1w9DWwMDoznLSvWyAp6ZtuOrv7+q2e1I5HE8+Sp21e5Wo0MOt7u6BpzvmQkMnzFfW0JjoGhoSVxSUr14XH35xVcoSUNDQ/1DPS097W39rbwNHU31nbWSA+/Sx/yV9oMDA2MRIa+wcGt6Zm3rFg7EmTQ91879/YMjEiSkazCir62BEdZS+sv3L1VGnxpV4gVYpnqwk4XNhUkXUgIzgvyy/L1SHd3SXVyPLacxyFp0Zz4j6RnadJC6UOXlFW08cn03n1uZ0xJ9KmajAttZYPDloVR4XmFoHyEyABbsedLbaiKr2AoW4IDpqapwdPVNVavpHewt6SlGDT4n/VblDB/yqGJ7x2cMPJnUeJ8z4yNkUURwKWstbR7oNuUhNm19T9c66GPjJuXr3l887YXdu6VQtn/Bof/2X/3Tzd4wbrkjpPDD40us4FCbAaOmo7ORzf5aCrxndAD3f0WmNPh4WHcwfnmorD84FXHVnwSN8tWmBBR9UH0lNlxsxyOLt6a6YVpKWkpaexuAJESVgjLX94dcv3n/Fp8IJj3rds0Ozoeolrd3tHe1yf1wg219PSUNrccKS57PyLqIbct31259kxtndUn5OvqaDNwEMqbiu7GrXbn/BlcYW1nbUThfpzFtKjJOhZi/pHZCxLmjNyEqEaYemjS4sQFGJXTtacQ+ERF1Q1Lvzz9Knz8Y3ugEaN4oaXtQH6RweVfVc1sAw6o6APrN+vY3vf2H9Rfdmd/x8mqExvT3ZS7xZkGJXCL6OJDGTXpVe2Vrb2t4jgcdCBV2V5xpi7rRGXK4eKovbl7Pmckbs7HHRckzMU8WAojhurs638tcJ/mor61xOnFXcHf+BSwDcBBaigir1DfK//E1TO3vlHc1+HPhlt6mpPLj65IXipt4cexM1YkO+zIDsisPU3cgX8hKrHiPEmxTFtvW31XfUV7eXb9mbjS2ICzfqtTVi1MmDsz5gMdVzUj5oO+wb5zdfV3rXbTXNdvNm+DfVsh1ejqYgNw4F/NpoY4aovjElWqIWpIKDsCq5D2iT0Lyw8pai7s6r+yedWG7oachpwjZXGbMzw+iZspGhUCHETdnpltCvE7s84p13KlBf66IGUDcBwuKjGSSyaD1NpziegRHSSUxRMysDFz4z/xP+MHJvQtBH3zGxqhfvyLwbdCX/2DQ9REGAFuKFc6mLS6o+rQ+YObMtxnx32EPCAVyDL+myERmuAgMIF+ygLg0egFU/HL8km6kFjQlNfS02KFeHKX3oGBkuaWU9U1iFre2tZtYWqE7rCczOpaujNOxxc02QqRRgoOwjNyOyolEtPf7+opanZDSlr3QE9uY86aVGdMN+CAH1R3VPcPXdxsjxMZb+zdr3w+joqr6+w6fqFiSvghahM/XreJqg3/Pua5jT9l1dQRTSjXDD1UjcB/0VFpS6t7avoffbYTXjLCvWs2EkFAGsJy8jF70gj4ILwYvGf7WX+CW1jUE15+muBAmMGhLz0dFki2PQDro9jpixPnQ3fgSQVN+Q1dDYxsZGNAfHxx6fTIw49v9oPA3b1mI6I+uGHzb738mPFkRZV+rlnqPvNgzO+3fPrg+s33fN6dcR7z9AXl+H0r6lwjBQcF67HOG1RKRL6g7FxRs09s8fRI955++H1gEV8W19xzWRWKjVR1YYVTw6NMJaAgBCQuiRtl1R/I16A+0yKioAia24zBo2R6QYs9YFoAkGYvv1Nn5Bn7BnvxTTpsd1HCPJxUeME+cnfSGdD8yalvIDuiY4BRwgcHok2Vds12J+PyvN+uuOJSIzCV24wUHK8Ehoka9Eq7GAf+SpH2uGGp4883znsrfOKsmDkYbc0cpQgOI0lJjpqcXNIEh9lBOF4iPjDIpuIvZlH4lBoSsgZDIYJzx2SXoHOpKhtAeZJjYFZOGmBFRHxwDr/vtN5Id9q4paQZz8WNCBxFTc0i2B9Y71nY2IT61h8/KSUJ7nBa+mzA9PGhk3/tNfsPPpupemvi1zpw3LpynU96pjSgdeBAQi6gyP5FGgqfhffR1LgSHKRDJh981wg43gh775lPZ9zlsuRJb1+ZsuAUz9bWG99a5MFHtPVeom5kC8mzWdSddBxXk1Tu2JQ5sR4ceOW50fGi+nCQUD/mI3a9z9XjvvULgMVzAdPHOi+lMXQk5FyeDcHBmBw7iaJaDQ7xdgGcDs9tFhwVbeXk4Lec8pTItebzZvikp7fNut3JYcySi2lWJZ/lnJgN9FQycBqhSpICARke3KDNkJtRDYCHGfEv1oNDMw2Aqciuu5QMbeppmhnt/GLQ1HvXLRqzxFEWDgZgETioU3ikprPxe87mcMQ1HTOnQQccZFkgsIywL7fAIf6o5lF70tufO3+yYNA3sYgoLQGLqCk/uThirrjSmD05u9zSXFcmL5t4YNajXrNvWrZCuX9KcGDzxK3FncGlUGNBYxMs4S/+e1Rt/hawRzp+msUsqBisCO/DgQk+lwd5F6eADFxBcGDQ0LI46598dmCyiA9LW0rc09a7pvqOc1EXJihVQGNF4US3AtQmhEVyvOSYpKWnF14mzvvvncGUNjQtB9pJq6ySDSm/7M3O/YFAou9c7ZZSXilLRbOntgZoHsoJYQeULFhTy8TqBLQrE2PHCEUZGRwM8uy2naopbl6+fHzIgr25gadrTpERJomXWl4m3ayTH7Be2NiMH2QoVXdwDyCUIrF22ovmp0YRjdvYrcDXfubmJU5JhYWZTlalkojMaThX39nxrJ96/fQaH7hPzFWI4Bjn4s7aVKKr7hNJMuACEEkTHC5HU1QjsPGvB6nz4gAxIPOssqUmCpkLi2IwPcotaxFeMjgwvWK99/4N8ydFXnJPRPuk/9ekuD7nv/SetYtuW+Vwo8NKBiRjxKWh5LJyEeJUhiWjokQ5VlMUY9eZy/J4mviw0q04JR0Xa5WkIi60NpHlDMrd09F3KU2EiRMlg3mwNpVAIjg4MZreUTxw+JqsmlpNcLBD4soDz+aIUn0SFadsCTcy5c69Tl4Mx8z+6IMjNCefWr9qCtiJWXoLt30n4t2JkRNeD538asjk57dPf8hj7g1LL+LG82SGKBV2WlzIx4dizcpvDTg49GSixPmmRISG5genVZ+US95MT2NNH/92aIQK48bB8aGWZwFGxsFBudUsOIi5qMhr4uNhd++cugazytUHh29GpnTZVvm8HDRvmm6ZcGrUpJkxH16sJkbNe8p31o9cF35nxfLrv6B0u8/miFLBXcRVcO/ErPzWgEPTGNzquHLl0S35jRqRiOZeEmKQ4lXKZxwc5DbE1VoEDhqbBQf5gHfDIjXBwaZSrzdbldUHh3f6aXHw/flp1J/jS2M5ZhBbMq3SszM7IDgvkKwrZefchpz6rjqvtAyx+9cMDlw+xF4U6429AZr1dLafYzpOq7xJ9tM6cIg8Bvt8pqbOuOWgciYuAYqtOkxUYXSyluBD337og4M3X5RXxSR5SIGbPdBSA44o5UzVKnwyMsXuvCwiLnZG5GGzE1lsOSAy4pKYW+deNbT8hR3q+gtdYB4VrW2yiAYtR31nl+iqycZSVDMIDtwZuWqVvni1ZEdmtqgv0jbiHkh9sR+k2Iknzzc1y9fApBGYgpqZpoWTCSk4uGOVOrPpmHjM7J5JDVC4eBueS3eqBBdx5ZrkVBEcRl45swwcVPzEsJuJCc3JiemsyhS5W5lwTF6MCI6xTuuTSi8ohwVnC2ISxKVSIsELaIKDC/EqfR0pKRN5vujmpHl5tdNUkUUW4z7XTYQJUDxMBc+c6Pj/BYc/4uGjeYpkcICeBzeoIz4C78q2diP4IAMmBoxkdSHmyu5Yes1EGUTE7CyWgYM0vnhDnyCQjL3+TDUdHb/TyuURghc0XJJSM31OsAfGU8srYQncDRgftE/z3p5ktzTBgcAfRh6mLyMwDukyzddPGNnUEmD7qkyDqSjGyOfKJBgpE7ELBZTowmL2XsI0+QxyzXxC8u0/u0OV79/O1zonHFQEJg7guNJY8zCTVzSLDBpYAA5k/eeOIHExpm55KacfHB5elXRc7ItllhOOpmornD+yfmzPbY6uIr0ny/SUt7+UlTKVPqcXfRmBcTRPM+Y98XITpRQeLUcVFltUwtBBiRIc7KLoWehLDRarQCqZxtJdBT6RcgfK/ATFWM3qIHVy7BZGiNu7ok9kIQbvtFoADm5LaJ7at0IijBRyKlrb8eui1h7d5CtVGq0rvN3p7IabkPbS6trK4thEs0lP3s4y+46CpZaDSZnaSC+5jXPSlzk91K4ZOeoPyBcCqJIIpqyIUXDg0d8USBxCwA2VWWd9YwWMRLkBnFQZsQIcGAPOtDypFeDAkLxqrNAg8Q+YrM59dP1d4RBzEqjvqICIWoxcpZMGn7TvIBxTqWd8OrVWgwijVmr8Hp1RcKRXVo91Ul/qQSCKQM3dhm46fX6yizRv7hBrAD6LwMEOPbzRm7qUkghrgsPUWycIj5dZGJtoXH6WQHGO0sxzfruMvwOHU8N38J0DfGOHJtlkzLXJqfgRHVHlvYd6q66DoDq4IPfHdFALLvH+5LWNI8MCzuFyUfot4rP98nqEvuVACy/tDtEcB+8rgoMN4KCIWuMTQj7Yvmo6TXDwPuZfA/aojiaclIACfmrQwKom4mImDHFaRLRY01KeYNwor5ITkRG1EujpKAdjQG1o+ZFkeIbmHhNeQfj4ThgUpRkY4pphb097B6i6AzjUteJIsvFXh2Q5jVoOI+R2hG108hxVbR0QC/Ye2ljVbjLS08lzcGLgTAcLimiTV99olmEYXwu7criomCK7FMfyEF5FFZ4nVtQP701NgagwTcZEVMahdi9fzDYilXKlpB8bu0y+6Wl2tNEBDrPL0CGkmoU3gwNe483s4LjGAaC3fDs47OAwqQE7OOzgsIPDjgHLNWC3HJbr7JrpYQfHNbPVli/UDg7LdXbN9LiKwOGbkaX8hmh+52KE5ouspnaHi1uqEfjv6Pp2x6sKeFcROK4qvdiFQQN2cNhhYFID/wfNU8THoBH93AAAAABJRU5ErkJggg==" /></a>
446 </li>
447
448 <li>
449 <!-- jQuery -->
450 <a href="http://jquery.com"><img id="jQueryLogo" title="jQuery" alt="" src="http://static.jquery.com/files/rocker/images/logo_jquery_215x53.gif" /></a>
451 </li>
452
453 <li>
454 <!-- html5 -->
455 <img title="HTML5" alt="" src="http://www.w3.org/html/logo/downloads/HTML5_Badge_64.png" />
456 </li>
457
458 <li>
459 <!-- (mt) -->
460 <a href="http://mediatemple.net"><img title="Media Temple" alt="" src="http://mediatemple.net/_images/partnerlogos/mt-120x60-dk.png" /></a>
461 </li>
462
463 <li>
464 <!-- CloudFlare -->
465 <a href="http://www.cloudflare.com"><img title="CloudFlare" alt="" src="https://www.cloudflare.com/media/images/web-badges/cf-web-badges-a-gray-on.png" /></a>
466 </li>
467 </ul>
468
469
470 </div>
471 </div>
472 <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
473 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.min.js"></script>
474 <script type="text/javascript" src="http://code.jquerygeo.com/jquery.geo-1.0b1.min.js"></script>
475 <script type="text/javascript">
476 $(function () {
477 var map;
478
479 $(".nav").buttonset();
480 $("a").filter("[data-role='button']").button();
481
482 if (navigator.geolocation) {
483 navigator.geolocation.getCurrentPosition(function (p) {
484 initMap([p.coords.longitude, p.coords.latitude]);
485 }, function (error) {
486 initMap();
487 });
488 } else {
489 initMap();
490 }
491
492 function initMap(center) {
493 map = $(".geomap").geomap({
494 center: center || [-71.0597732, 42.3584308],
495 zoom: 7
496 });
497
498 $( ".osm" ).geomap("opacity", .5);
499 }
500 });
501 </script>
502 <script type="text/javascript">
503 var _gaq = [['_setAccount', 'UA-26084853-1'], ['_trackPageview']];
504 (function (d, t) {
505 var g = d.createElement(t), s = d.getElementsByTagName(t)[0]; g.async = 1;
506 g.src = ('https:' == location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
507 s.parentNode.insertBefore(g, s);
508 } (document, 'script'));
509 </script>
510 </body>
511 </html>
Something went wrong with that request. Please try again.