A few words about the main technologies and APIs used in GEMMA. Using these has helped make the project achievable within the timeframes we have had.
JQuery and JQuery UI
JQuery Datatables builds on JQuery, incorporating the JQuery UI look and providing, with a minimum of fuss, powerful pageable, sortable, searchable and flexible tables of data.
Mapnik, the map renderer used for the “default” OpenStreetMap. It is a C++ library but comes with mostly complete Python bindings, which I use. Mapnik received a major version upgrade very recently, jumping from version 0.7 to 2. The new version allows “expressions” – certain values (e.g. text captions) that can be specified during the creation of each feature, rather than hard-coding them in to the code or stylesheet. These are used to create the “captioned markers” that are a feature of GEMMA.
I’m mentioning Python here because it forces me to write neat code! The tile renderer is a number of Python scripts calling Mapnik. Mapnik itself uses the (Py)Cairo graphics renderer to create the images and PDF maps, but I am also extending its use for creating full-blown PDF “printed sheets”, by including adornments on the area outside of the map. I’m using RSVG to include the GEMMA logo (imported in as an SVG) in all GEMMA’s PDF maps.
The two processes – producing images for the website (and iPhone), and producing PDFs, are quite different. In the former, Mapnik is called repeatedly for each layer, and the order and opacities of the layers are controlled with OpenLayers. In the latter. Mapnik itself needs to handle the ordering and opacities, as well as producing a high quality (scalable) PDF.
OpenLayers is also being used in GEMMA, although limited to the “preview” map that appears when you are adding captioned markers to the map. It also can pull in the Google Maps tiles with custom colours used in the main interface.
Google Fusion Tables
Google’s powerful and extensible cloud-based tables are used to store data collected for use in GEMMA.
Google and Twitter Authentication Libraries
We use both Google and Twitter authentication in GEMMA, rather than creating our own standalone user data storage and authentication structure. The world has enough logins.
iPhone App development (Objective-C coding)
In order to create a native iPhone app, you need to learn Objective-C. Thankfully, Steve is an experienced Objective-C person.