13

I have recently volunteered to make a web map for a local non-profit. The map will be pretty basic. It needs to display Lane county, Oregon split into multiple districts, with a "central office" location for each district. I plan on building this in my spare time over the summer, and I want to be able to hand this off to them with very little risk of it needing any sort of future maintenance.

I have built a number of web maps using the ArcGIS Javascript API with ArcGIS Server, but I am planning on learning a different API since this organization doesn't have any ESRI software (or any GIS for that matter). I have been considering OpenLayers/OpenGeo. One thing to keep in mind is that this organization doesn't/won't have a server set up to host the layers of this map so I'm not sure how I would store and access the data. JSON maybe?

I'm currently unfamiliar with most non-ArcGIS solutions, so any advice would be appreciated.

10 Answers 10

12

For open source mapping solution, you can consider following:

  1. Mapping Server Platform - GeoServer Java based and open source. Works well in many production environments: Check : http://geoserver.org/display/GEOS/Welcome User manuals: http://docs.geoserver.org/stable/en/user/

    Other option would be MapServer : http://mapserver.org/

    Check the comparison: http://www.slideshare.net/novum.limitis/mapserver-vs-geoserver

  2. Client side - web page scripting. Openlayers most preferable one to start as lot of examples and easy to implement as well. Check : http://openlayers.org/ Examples : http://openlayers.org/dev/examples/

  3. Spatial Data : You could go with Google/Yahoo/Bing maps based on their terms and conditions and license. Or OpenStreet Maps which you can publish in GeoServer and use it. OpenStreet Map : http://www.openstreetmap.org/ OpenStreet Map shape files can downloaded through : http://wiki.openstreetmap.org/wiki/Shapefiles

If you are going to use Google/Yahoo/Bing maps you could go with their API or OpenLayers to use it and GeoServer and Spatial Data not required. Even though question asked for good web map API, Mapping platform and Spatial data reference are given above additionally to think about fully open source mapping platform.

1
  • Kinda what I said, but better put! Commented Apr 25, 2011 at 9:14
6

You could just hard-code your features into Javascript like in this OpenLayers example: http://openlayers.org/dev/examples/vector-features.html. No need to bother about further data storage. Of course this is only an option if you have few features to display. But it's a "one-file" solution which any future maintainer should be able to figure out.

If you can export your polygons to shapefile, QGIS can help to "extract the nodes" which you can then use to create Polygons in OpenLayers like this:

// create a polygon feature from a linear ring of points
var pointList = [new OpenLayers.Geometry.Point(x1,y1),new OpenLayers.Geometry.Point(x2,y2),<<<more points>>>];
var linearRing = new OpenLayers.Geometry.LinearRing(pointList);
var polygonFeature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linearRing]));

If you want to overlay those polygons on top of Google Maps or similar, you might want to reproject the polygons to Web Mercator projection first.

5
  • Thanks! This looks like it could be what I need, as long as I don't have too many features. I'll try it out. I just need to figure out how to export my current District polygon feature class into these hard-coded values.
    – Tanner
    Commented Apr 25, 2011 at 21:11
  • 1
    @Tanner: You can use GDAL/OGR to convert to GeoJSON. At least, give them a Cloudmade, Google Maps, Yahoo! Maps or Bing Maps base layer in OpenLayers. I hate to sound like I'm pushing commercial offerings but it sounds like you're using Open tech for Open tech's sake. Give the org a decent looking map.
    – Sean
    Commented Apr 26, 2011 at 15:13
  • @Tanner: Which format do you have your district data in?
    – underdark
    Commented Apr 26, 2011 at 17:27
  • ArcGIS polygon feature class.
    – Tanner
    Commented Apr 26, 2011 at 18:13
  • 1
    @Sean: Thanks for the advice. I'll check out GDAL/OGR. As this is a volunteer project, this is (hopefully) a one-time deal. I don't want to have to come back to it. The main concern is to make a simple web map that can be hosted on their website that won't require any server software (such as MapServer) and is least likely to break any time soon. If a commercial base layer/API can provide this, I will consider it. At the very least I will likely use a commercial base layer.
    – Tanner
    Commented Apr 26, 2011 at 18:23
4

I use OpenLayers as part of my UG dissertation, and I can't fault it. Well I can, and I was up until late last night trying to get it to behave, but that was mostly ignorance on my part when trying to put together a mobile-friendly site rather that OL per se.

It's easy to add layers that come from another server using WMS; I have MapServer running that doles out WMS tiles, and from OL I just use:

var layer = new OpenLayers.Layer.WMS(
    "Resistivity",
    "http://mywebsite.com/maps?map=amap.map",
    {'layers': 'resistivity', 'format':'image/png', 'transparent':'true'},
    {singleTile: true}
);

map.addLayer(layer);

Indeed, it can cope with WFS and even WFS-T servers, and with OSM, Google, or Bing map and photo layers, you can have a good-looking web mapping app with a tiny footprint.

4

Use OpenLayers and YES if you can't install GeoServer to host your map layers you can store the data in GeoJSON or local KML files if you'd like.

3

CloudMade, Google Maps, Yahoo! Maps or Bing Maps. Eventually, someone will come along to help them with their website and won't have a clue about OpenLayers or GeoJSON. It will be much more future-proof to use a well-known commercial offering. It will be easier for them to find someone who knows what to do with Google Maps and it will have a familiar interface. And, it's still free for public facing sites.

Make sure you get them their own API key.

5
  • 3
    This question tagged "open-source", not down-voting because you have all the right to suggest a commercial version. Just saying, with google maps you'll need to upgrade your code after 3 years of being depricated forcing you to keep developing the same APP over and over again for every new version of google maps api. Once you develop with openlayers you you can self-host the library for as long as you like. You don't have to worry about anyone flipping a switch which will turn off your service.
    – CaptDragon
    Commented Apr 25, 2011 at 16:24
  • 2
    I have nothing against open-source. Quite the opposite. I may have interpreted 'open' liberally (and I don't take tags as restrictive). For the problem domain he's addressing, though, the suggestions for OpenLayers, MapServer, GeoServer, OpenStreetMap, etc. are way more complicated technically than 99.9% of non-profit staff can handle on their own. If he wants to help the org, he should give them something they can fix or easily find someone to fix when he's gone. The number of people with Google Maps in their skill-set is significantly higher and wouldn't require any org server access.
    – Sean
    Commented Apr 25, 2011 at 17:44
  • 1
    Yeah i have NO idea why people are up-voting the answers that are suggesting GeoServer & MapServer when the asker specifically says he can't host any map services. :P
    – CaptDragon
    Commented Apr 25, 2011 at 17:57
  • @capdragon: It clearly stated in the answers too that GeoServer/MapServer and spatial data are optional. Can go ahead with Openlayers without them.. No harm to give extra relvant information in the answer to user to aware them...
    – Senthil
    Commented Apr 25, 2011 at 22:08
  • 1
    @Senthil: read it again, and i quote: "this organization doesn't/won't have a server set up to host the layers of this map". Optional is not even a word in the question.
    – CaptDragon
    Commented Apr 26, 2011 at 12:55
3

There are several great options for not for profit organisations. Bing and google maps can both be used for non profit organisations.

A nice summary is here: Google Maps - http://www.georelated.com/2012/02/cloud-web-map-api-services-reviewed.html Bing Maps - http://www.georelated.com/2012/02/cloud-web-map-api-services-reviewed_19.html

3

Super late to the party, but I figured I would add another option that would make sense nowadays.

If you dont want to host a server but you still want to benefit from styling and very fast tile caching, why not Google Fusion Tables and Openlayers? From Allan Glenn's blog

var proj_4326 = new OpenLayers.Projection('EPSG:4326');
var proj_900913 = new OpenLayers.Projection('EPSG:900913');
map = new OpenLayers.Map({
   div: "map",
   projection: proj_900913,
   'displayProjection': proj_4326,
   allOverlays: true
});

var osm = new OpenLayers.Layer.OSM();

var fusionLayer = new OpenLayers.Layer.OSM("Fusion Table       
Map","http://mt0.googleapis.com/mapslt?hl=en- 
US&lyrs=ft:113681&x=${x}&y=${y}&z=${z}&w=256&h=256&source=maps_api");
map.addLayers([osm,fusionLayer]);

var long=12;
var lat=56.5;

var lonlat = new OpenLayers.LonLat(long,lat).transform(map.displayProjection,
map.projection);

map.setCenter(lonlat, 6);

You can use gdal to load the fusion tables. That way, you dont pay the price of parsing the geojson geometries on the client side. This cost may range from trivial (for small amount of features) to significant (for large amount of features). It will also make your geometries much

1
  • Looks like Google Fusion Tables was closed in 2019
    – mikato
    Commented Jan 26 at 17:15
1

Along the lines of @Sean's answer, here is a question I posed last October and the solution. I too wanted something that could be passed on. As far as displaying your district boundaries, could Fusion Tables do that maybe?

1

It's probably worth checking out CartoDB:

http://cartodb.com/

it'a slick, free web mapping service that allows you to easily load and edit geographic data. I'm not sure if they have an option to make a map 'private'.

0

2020 answer: I'd suggest looking into leaflet which is a nice lightweight js mapping API that makes it easy to render geojson as map graphics layers.

https://leafletjs.com/examples/geojson/

https://codepen.io/alexkaessner/pen/RxrNva

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.