Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Google Maps with Clojurescript.
JavaScript Clojure
branch: develop

This branch is 1 commit behind sritchie:develop

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
resources/public
src
.gitignore
README.md
project.clj

README.md

What is Contour?

Contour is Google Maps v3 web app written entirely in ClojureScript! Very early days. We have a demo on Heroku.

Overview

Contour is Google Maps v3 web app written entirely in ClojureScript. In other words, it's awesome.

The project rides on Noir, a framework for writing web applications in Clojure.

It also rides on ClojureScript which is a compiler for Clojure that emits JavaScript code! For bonus points it's also compatible with the with the advanced compilation mode of Google Closure optimizing compiler.

But wait, there's more! As an extra bonus, Contour additionally rides on lein-cljsbuild, a leiningen plugin that makes it easy (and quick) to compile ClojureScript source into JavaScript. It's similar to cljs-watch but uses lein instead of a standalone executable.

Show me CODE

Here's a side-by-side of JavaScript and ClojureScript. The "Hello World" of Google Maps in JavaScript looks like this:

    var map;

    function initialize() {
        var myOptions = {
            zoom: 8,
            center: new google.maps.LatLng(-34.397, 150.644),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
    }

    google.maps.event.addDomListener(window, 'load', initialize);

The "Hello World" of Google Maps in ClojureScript looks like this:

    (def *map* nil)

    (def my-opts
      {"zoom" 8
       "mapTypeId" google.maps.MapTypeId.ROADMAP
       "center" (google.maps.LatLng. -34.397, 150.644)})

    (defn map-load []
      (let [elem (goog.dom/getElement "map_canvas")]
        (set! *map* (google.maps.Map. elem my-opts))))

    (events/listen js/window "load"
                   map-load)

Let's get started

To get started, you'll need to clone Contour and install Leinigen, the build tool for Clojure.

Clone Contour

Fire up your command line and:

$ git clone https://github.com/sritchie/contour.git
$ cd contour

Install Leiningen

Next install Leiningen:

  • Download this script which is named lein
  • Place it on your path so that you can execute it. (I like to use ~/bin)
  • Set it to be executable. (chmod 755 ~/bin/lein)

Usage

$ cd contour

# Download the dependencies:
$ lein deps

# Open a new terminal window and:
$ lein cljsbuild auto 

# Open a new terminal window and: 
$ lein ring server 

That should open a browser window at 127.0.0.1:3000. You're all set!

License

Copyright © 2011 Sam Ritchie

Distributed under the Eclipse Public License, the same as Clojure.

Notes (NOT meant to make sense!)

https://github.com/whizbangsystems/innovation-fund-js/blob/master/src/forma-data/static/config.js

More on Overlays: http://code.google.com/apis/maps/documentation/javascript/overlays.html#CustomOverlays

  • Add MarkerClusterer to externs.

http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js

  • Read about what externs actually are :)
  • Redo robin's utils.
Something went wrong with that request. Please try again.