I'm working on a project for which most data can come straight from OSM. But some data is not relevant to OSM and will need to be stored separately then layered over the top. Probably the tiles will be generated in TileMill, and served with Leaflet. Either I'll do the layering within TileMill, or on the fly in Leaflet.

The question is - where to store the extra geodata, and how to manage it? The data will mostly be POIs, some of which will have lengthy explanatory text and even photos associated with it. As a ballpark, let's say there will be 1000 POIs in total. (It's not necessary that the photos be stored in the same system.)

This data will need to be maintained by a loose team of volunteers, so I'm looking for some kind of (free) platform that supports online editing. It would be great if it were possible to automatically layer a whole set of related geo objects, rather than having to specify them all individually.

I'd also like to avoid having to run a server of my own just for this purpose.

One possible solution I thought of was using Google Maps's "my places" (or whatever they call it now) to create the objects, then download them say to Dropbox as .kml's. That seems a bit clunky. What would be some better ways?

2 Answers 2


I can think of 4 main solutions:

  1. Store the data in a static, flat file. Probably GeoJSON or GML. Your maintainers could edit the file and upload updated copies. Given the simple "POI" type structure, you could probably put together a web based editor. Leaflet would be retrieving the entire dataset at once and rendering it.

  2. Put together a GeoJSON output of your own as part of a typical non-spatial RDBMS backed web application. GeoJSON is fairly simple so it's not hard to do this yourself. Again Leaflet would have to retrieve the entire dataset at once.

  3. Set up a spatial RDBMS and allow your maintainers to connect to it directly. PostGIS is probably your best bet here, MySQL Spatial would also probably work for this limited use case. I don't think you can use this from either Leaflet or OpenLayers so your maintainers would have to use some other software like QGIS. Then you could use a WMS or WFS server (TileMill, GeoServer, MapServer) to serve up rendered tiles or sections of the raw data in a form Leaflet could use.

  4. WFS-T is another option. You'd need a Transactional WFS server on top of your spatial database: GeoServer or TinyOWS would work. With this, Leaflet or OpleLayers would be able to do the editing of the data so you could handle editing via the web.


How often does your data change? If not often then I have previously held it as a .JS file, using the Esri JSON specification, then referenced the JS Module in my code to parse it into graphical features over the base map.

so the data gets described as a json string "var flJson = " in the .js file. It's then referenced in the ESRI ArcGIS file like:

app.fl = new esri.layers.FeatureLayer(flJson);

The blog on this is here: http://www.bearpanther.com/2012/03/15/create-a-feature-layer-from-json/

I guess you may not be using Esri, but the principle is he same as long as you can parse the JSON you can turn it into graphics.


  • 1
    Why would you suggest ESRI JSON? Besides the ESRI Web API's no one supports it. leaflet supports GeoJSON natively, and that is the way to go. Jun 21, 2013 at 5:35
  • Storing a bunch of JSON files doesn't really help with the "team of volunteers managing it" part of the problem, though... Jun 21, 2013 at 7:20
  • Suggested Esri JSON because as a Solution Architect versed in it I know it works. I was also careful to say that it was a concept and 'not recommending the product'. Web forms can be used to edit the JSON though. You'd said 1000 Points of Interest there is a good fit with storing your data in JSON/XML. If you're doing such advanced editing then go look at GeoServer or something.
    – Scott
    Jun 24, 2013 at 5:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.