Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…
Cannot retrieve contributors at this time
512 lines (425 sloc) 30.2 KB
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8" />
<title>jQuery Geo</title>
<meta name="description" content="jQuery Geo - A spatial mapping plugin for jQuery" />
<meta name="author" content="Ryan Westphal" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="" />
<style type="text/css">
html { font:13px/1.231 sans-serif; }
body, h1 { margin: 0; padding: 0; }
body, select, input, textarea
color: #444;
white-space: pre-wrap;
white-space: pre-line;
background: #444;
bottom: 0;
left: 0;
position: fixed;
right: 0;
top: 0;
position: relative;
margin: 32px auto;
width: 80%;
float: right;
margin: 32px 0 0 10%;
.header img
height: 64px;
width: 64px;
vertical-align: bottom;
.header h1
display: inline-block;
.header h1 .framework
color: #fff;
font-size: 32px;
.header h1 .subtitle
color: #faa;
display: block;
font-size: 14px;
font-style: italic;
margin-left: 48px;
clear: both;
margin-bottom: 8px;
font-size: 8pt;
font-style: italic;
margin: 2px;
background: #fff;
border-radius: 8px;
box-shadow: 2px 2px #555;
margin-top: 128px;
padding: 32px;
list-style-type: none;
.thanks li
display: inline-block;
margin: 1em;
background: #39414A;
border-radius: 8px;
padding: .5em;
<div class="geomap">
<div class="header">
<img src="apple-touch-icon.png" alt="" />
<h1><span class="framework">jQuery Geo</span><span class="subtitle">write less, map more</span></h1>
<div class="container">
<div class="main" role="main">
<div class="nav project-links">
<a href="" title="Documentation and demos">Docs &amp; Demos</a>
<a href="" title="Source code on GitHub">GitHub</a>
<h2>jQuery Geo - an interactive mapping plugin</h2>
<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>
<p>You can check back here or follow <a href="">@jQueryGeo</a> on Twitter for release announcements. Also, head over to the lead developer's Twitter account, <a href="">@ryanttb</a>, for development info, links, or to ask questions.</p>
<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>
<pre>&lt;div id=&quot;map&quot; style=&quot;height: 320px;&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;;&gt;&lt;/script&gt;
&lt;script src=&quot;;&gt;&lt;/script&gt;
&lt;script&gt;$(function() { $( &quot;#map&quot; ).geomap( ); });&lt;/script&gt;</pre>
<p> is on the CloudFlare Content Delivery Network (CDN) so our minified, gzipped library will get to your client as fast as possible!</p>
<h2>Beta 1 released!</h2>
<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>
<h3>New interaction engine</h3>
<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>
<h3>Wicked fast mobile</h3>
<p>Using CSS3 features on modern mobile devices brings tremendous speed improvements to iOS and Android.</p>
<h3>New default map</h3>
<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="" target="_blank">mapquest open</a>. It's your same open data but the servers are faster and the cartography is nicer.</p>
<h3>New build environment</h3>
<p>jQuery Geo now builds with <a href="" target="_blank">grunt</a> from Ben Alman making it 100% lint free, smaller, and supporting the next generation of the jQuery Plugins website.</p>
<h3>Drag modes</h3>
<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>
<h3>Load events</h3>
<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>
<h3>Forcing refresh</h3>
<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>
<h3>Zoom level constraints</h3>
<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>
<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="" target="_blank"></a>.</p>
<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>
<p>Here's the full changelog:</p>
<pre>* geographics - use canvas compositing for Polygons with holes
* geographics - [bug] on polygons with holes, stroke draws a line from exterior ring to interior one
* docs - geomap - trigger a shape event when a user finishes measuring
* geomap - trigger a shape event when a user finishes measuring
* geomap - [bug] elements inside the map div lose their position setting
* geomap - trigger bboxchange when we update the map size after the window resizes
* geomap - [bug] multiple map widgets share the same compiled measureLabels template names and overwrite each other
* examples - inset map/multiple maps example
* geomap - [bug] in zoom mode, dragging from bottom-right to top-left draws box but doesn't zoom
* geomap - [bug] any mouse down triggers refresh, even without pan
* cdn - fix caching
** Cache-Control header max-age set to 5 years
** remove Expires header
* geomap - upgrade to jsrender 1.0pre
* deploy - build releases using grunt
* deploy - make a package for new jQuery plugin directory
* deploy - lint JavaScript files
* docs - geomap - dragBbox mode
* docs - geo - polygonize function for bbox
* geo - polygonize function for bbox
* geomap - dragBbox mode
* docs - geomap - shift option (default, zoom, dragBbox, off)
* geomap - shift option (default, zoom, dragBbox, off)
* docs - geomap - loadstart, loadend events
* docs - geomap - allow append to take an array of shapes
* docs - geomap - allow remove to take an array of shapes
* docs - geomap - improve services option documentation
* geomap - clamp measure labels to [0, 0]
* geo - clamp centroid to bbox
* geomap - measure label for polygon should be in centroid
* geomap - merge interactive pan and zoom into one, faster system (pan/zoom rewrite)
* geomap - [bug] iOS - panning is visually jumpy but settles on the correct bbox in the end
* geomap - pinch-zoom doesn't follow user's fingers close enough when scaling
* geomap - [bug] pinch zoom on iPad 2 (iOS 5) doesn't refresh tiles when zooming out
* geomap - request new image in shingled service during interactive pan
* geomap - [bug] zoom in more than once with zoom method moves tiles to the wrong spot
* geomap - [bug] only services that have finished refreshing move when the user pans
* geomap - [bug] map panning is jumpy, appears to be related to shapes and/or drawing context
* geomap - [bug] pan sometimes lags on first drag
* geomap - tiled data-scaleOrigin should be stored as an array
* geomap - android - [bug] cannot always pan map after appending shapes
* geomap - android - browser stops pan/zoom after 7 logos on logo demo
* geomap - [bug] mouse wheel on bad or missing tile doesn't zoom out on first rotate
* geomap - increase mobile performance by 9000
* docs - geomap - add argument to refresh to force reload of images for dynamic data
* docs - geomap - allow service-level refresh
* docs - geomap - zoomMax option (tiled &amp; shingled)
* docs - geo - include method for bbox
* geomap - bboxMax should reset center &amp; pixelSize
* geomap - [bug] initializing center, zoom, &amp; bbox doesn't set all properties
* geo - [bug] polygonize doesn't return valid polygon when using geodetic coordinates
* geomap - [bug] dragBbox doesn't include the bbox property in the shape
* geomap - dragBbox should send a Point (with bbox) for single clicks
* docs - geomap - dragCircle mode
* geo - include method for bbox
* geomap - dragCircle mode
* geomap - [regression] refresh &amp; toggle methods no longer keep original service objects in sync
* geomap - [bug] when a singled image hasn't loaded after pan and you double click on empty space, the zoomed bbox seems wrong
* geomap - allow service-level refresh
* geographics - remove the blit canvas from the DOM, i.e., don't attach
* geomap - don't initialze service-level geographics until they're used
* geomap - add argument to refresh to force reload of images (in case of dynamic data)
* geomap - loadstart, loadend events
* geomap - allow append to take an array of shapes
* geomap - allow remove to take an array of shapes
* geomap - zoomMax option
* geomap - [bug] cannot interact with other elements on the page on iOS after panning the map (#71)
* geomap - iOS - [bug] after one finger is removed, stop processing as if multitouch is still on
* geomap - dumb high-precision mice down on tiled maps
** otherwise, the high precision rounds down to zero change in zoom
* geomap - use linear distance for pinch zoom calculation
* docs - geomap - zoomMin option
* geomap - zoomMin option
* docs - geomap - use MapQuest Open by default; can't deny that it looks much nicer
* geomap - use MapQuest Open by default; can't deny that it looks much nicer
* docs - geomap - rename dragBbox to dragBox
* geomap - rename dragBbox to dragBox
* geomap - [bug] error using tiled deferred services</pre>
<h2>Alpha 4 released!</h2>
<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>
<h3>At the service level</h3>
<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>
<h3>More modes!</h3>
<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>
<h3>What's that? CSS labels!</h3>
<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>
<h3>More service src options</h3>
<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>
<p>You can still use a function and the function can now return a <a href="">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>
<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>
<h3>Don't worry about $.geo.proj so much</h3>
<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>
<p>There is one deprecation (a service object property will be renamed in beta) and one minor breaking change.</p>
<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>
<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>
<p>To exemplify both of these changes, instead of: <pre><code>{
type: &quot;tiled&quot;,
getUrl: function( view ) { return &quot;&quot;; },
visibility: &quot;hidden&quot;
}</code></pre> you should write: <pre><code>{
type: &quot;tiled&quot;,
src: function( view ) { return &quot;&quot;; },
style: { visibility: &quot;hidden&quot; }
<h3>Everything else</h3>
<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>
<pre>* geomap - [bug] changing the tilingScheme doesn't update pixelSize, maxPixelSize, center or centerMax
* geomap - [bug] shingled services throw exception during resize
* docs - geomap - axisLayout option
* geomap - axisLayout option
* docs - upgrade to jQuery Mobile rc3
* docs - allow page refreshing
* docs - geomap - more modes: measureDistance, measureArea, static
* docs - geomap - append label argument
* docs - geomap - toPixel/toMap should take all coordinate dimensions like the proj functions
* geomap - toPixel/toMap should take all coordinate dimensions like the proj functions
* geomap - move the drawing container instead of individual points during pan
* geomap - [bug] drawStyle resets after window resize
* geomap - append label argument
* docs - geomap - measureLabels option
* geomap - measureLabels option
* geomap - measureDistance mode
* geomap - measureArea mode
* docs - geomap - service-level shapeStyle
* docs - geomap - getUrl string option
* geomap - [bug] create doesn't clear drawing shapes
* docs - geomap - service-level shapes
* docs - geo - detect geodetic coordinates and call $.geo.proj automatically, don't require devs to set $.geo.proj to null
* docs - geomap - add projection section explaining how bbox &amp; center affect map unit type
* docs - geomap - rename getUrl to src
* docs - geomap - scroll option
* docs - geomap - pannable option
* geomap - src string option
* examples - string service src
* geomap - [bug] map tracks mouse when not panning if click on other elements
* geomap - pannable option
* geomap - scroll option
* geomap - [bug] shapesContainer is being cleared twice during mouse wheel zoom
* geomap - support pinch zoom on iOS
* docs - geo - add recenter function for bbox
* geomap - static mode
* docs - geomap - allow Deferred or Promise as return value from src function
* geomap - [bug] widget factory merges first service with default sometimes causing exceptions with shingled services
* geomap - allow Deferred or Promise as return value from src function
* geomap - [bug] resize event triggered too many times during resize
* geomap - service-level shapes
* geomap - service-level find
* geographics - add a resize method, call from geomap.resize
* geo - add recenter function for bbox
* geomap - [bug] errors creating second un-tiled map after destroying a first on same element
* geomap - refresh shouldn't request new images if the map element is hidden
* geomap - [bug] delayed multitouch isn't nearly as smooth as true multitouch
* geomap - [bug] tiled pinch zoom isn't smooth
* geo - detect geodetic coordinates and call $.geo.proj automatically, don't require devs to set $.geo.proj to null
* geomap - [bug] mouse wheel doesn't work with jQuery 1.7
** upgrade to latest jquery.mousewheel plugin
* geomap - service object visibility and opacity options should be moved to a style property
* geomap - use _currentServices in all functions unless we actually need to update the public options services object
* geomap - don't change user's service objects in opacity/toggle
* geomap - show attr text
* docs - geomap - selector argument to find method
* geomap - selector argument to find method
* geomap - pan mode should use a hand cursor by default
* geomap - [bug] only services that have finished refreshing move when the user pans
** for a4: hide unfinished services
* geomap - [bug] a user can mess with the center option, e.g., convert numbers to strings, and it can wreck havoc with map state
* geomap - [bug] zoom option doesn't return proper values for shingled services
* geomap - [bug] non-tiled maps can zoom out past zoom 0
* geomap - don't request tiles that are -y index
* geomap - [bug] initializing tiled map by non-geodetic bbox always causes zoom level 0
* docs - geomap - empty string needed for label element
* geomap - [bug] double tap to end shapes adds two points before ending the shape, in different places
* geomap - [bug] lifting fingers after pinch zoom in drawLineString or drawPolygon modes sometimes adds fake visual coordinate on touch point last lifted
* docs - upgrade to jQuery 1.7.2
* geomap - [bug] scroll=off doesn't zoom map but also doesn't allow document scroll
* geomap - [bug] changing mode does not reset measure drawing
* geomap - [bug] jQuery UI Widget Factory no longer passes pageX &amp; pageY event properties during _trigger when using jQuery 1.7
** upgrade to Widget Factory 1.8.17
* examples - all demo (shingled)
* docs - geomap - custom modes
* examples - all demo (tiled)</pre>
<h2>Alpha 3 released!</h2>
<h3>jQuery Geo 1.0 Alpha 3 is mostly about sketching!</h3>
<li>new modes: drawPoint, drawLineString, and drawPolygon allow users to draw on your map</li>
<li>new event: shape triggers anytime a user draws a feature</li>
<li>new style option: drawStyle lets you change how the shapes look while being drawn</li>
<h3>It's also about geometry functions!</h3>
<li>$.geo's center, height/width, expandBy, scaleBy &amp; reaspect functions operate on bounding boxes</li>
<li>$.geo's bbox, distance, contains &amp; centroid functions operate on geometries</li>
<p>Many examples have more class and now link to jsFiddles to further explain what's going on!</p>
<h3>And a tiny bit about size</h3>
<p>jQuery Geo is now hosted on a CDN with gzip enabled bringing the entire library to your neighborhood at under 18k.</p>
<p>There are some minor breaking changes to make the API more consistent.</p>
<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>
<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>
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;:
<pre><code>$( &quot;#map&quot; ).geomap( { services: [ { id: &quot;roads&quot;, visibility: &quot;hidden&quot;, ... } ] } );</code></pre>
<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>
<a data-role="button" href="" title="jQuery Geo test build">Test docs &amp; demos</a>
<ul class="thanks">
<!-- AppGeo -->
<a href=""><img width="180" height="48" title="Applied Geographics" alt="" src="data:image/png;base64,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" /></a>
<!-- jQuery -->
<a href=""><img id="jQueryLogo" title="jQuery" alt="" src="" /></a>
<!-- html5 -->
<img title="HTML5" alt="" src="" />
<!-- (mt) -->
<a href=""><img title="Media Temple" alt="" src="" /></a>
<!-- CloudFlare -->
<a href=""><img title="CloudFlare" alt="" src="" /></a>
<script type="text/javascript" src=""></script>
<script type="text/javascript" src=""></script>
<script type="text/javascript" src=""></script>
<script type="text/javascript">
$(function () {
var map;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (p) {
initMap([p.coords.longitude, p.coords.latitude]);
}, function (error) {
} else {
function initMap(center) {
map = $(".geomap").geomap({
center: center || [-71.0597732, 42.3584308],
zoom: 7
$( ".osm" ).geomap("opacity", .5);
<script type="text/javascript">
var _gaq = [['_setAccount', 'UA-26084853-1'], ['_trackPageview']];
(function (d, t) {
var g = d.createElement(t), s = d.getElementsByTagName(t)[0]; g.async = 1;
g.src = ('https:' == location.protocol ? '//ssl' : '//www') + '';
s.parentNode.insertBefore(g, s);
} (document, 'script'));
Jump to Line
Something went wrong with that request. Please try again.