diff --git a/examples/countries.html b/examples/countries.html
new file mode 100644
index 0000000000..d80dc85042
--- /dev/null
+++ b/examples/countries.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+ Countries example
+
+
+
+
+
+
+
+
+
+
+
+
+
Countries example
+
Example of a loading GeoJSON map.
+
+
geojson
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/countries.js b/examples/countries.js
new file mode 100644
index 0000000000..118aff65fc
--- /dev/null
+++ b/examples/countries.js
@@ -0,0 +1,54 @@
+goog.require('goog.asserts');
+goog.require('goog.functions');
+goog.require('goog.net.XhrIo');
+goog.require('ol.Map');
+goog.require('ol.RendererHint');
+goog.require('ol.View2D');
+goog.require('ol.format.GeoJSON');
+goog.require('ol.layer.Tile');
+goog.require('ol.layer.Vector');
+goog.require('ol.proj');
+goog.require('ol.source.MapQuestOpenAerial');
+goog.require('ol.source.Vector');
+
+var map = new ol.Map({
+ layers: [
+ new ol.layer.Tile({
+ source: new ol.source.MapQuestOpenAerial()
+ })
+ ],
+ renderer: ol.RendererHint.CANVAS,
+ target: 'map',
+ view: new ol.View2D({
+ center: [0, 0],
+ zoom: 2
+ })
+});
+
+goog.net.XhrIo.send('data/countries.geojson', function(event) {
+ var xhrIo = /** @type {goog.net.XhrIo} */ (event.target);
+ if (xhrIo.isSuccess()) {
+ var format = new ol.format.GeoJSON();
+ var object = xhrIo.getResponseJson();
+ var vectorSource = new ol.source.Vector();
+ goog.asserts.assert(goog.isDefAndNotNull(object));
+ var transformFn = ol.proj.getTransform('EPSG:4326', 'EPSG:3857');
+ format.readObject(object, function(feature) {
+ var geometry = feature.getGeometry();
+ geometry.transform(transformFn);
+ feature.setGeometry(geometry);
+ vectorSource.addFeature(feature);
+ });
+ map.getLayers().push(new ol.layer.Vector({
+ source: vectorSource,
+ styleFunction: goog.functions.constant({
+ fill: {
+ color: 'rgba(255, 255, 255, 0.6)'
+ },
+ stroke: {
+ color: '#319FD3'
+ }
+ })
+ }));
+ }
+});