diff options
Diffstat (limited to 'misc/openlayers/examples/fusiontables.js')
-rw-r--r-- | misc/openlayers/examples/fusiontables.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/misc/openlayers/examples/fusiontables.js b/misc/openlayers/examples/fusiontables.js new file mode 100644 index 0000000..57ae6e5 --- /dev/null +++ b/misc/openlayers/examples/fusiontables.js @@ -0,0 +1,51 @@ +// change this to your api key +var apikey = "AIzaSyD_1zzMAoZjuP-m4LyhieuYmqiVJTEajyI"; + +var map = new OpenLayers.Map({ + div: "map", + layers: [ + new OpenLayers.Layer.OSM(), + new OpenLayers.Layer.Vector("Vectors", { + projection: new OpenLayers.Projection("EPSG:4326"), + strategies: [new OpenLayers.Strategy.Fixed()], + protocol: new OpenLayers.Protocol.Script({ + url: "https://www.googleapis.com/fusiontables/v1/query", + params: { + sql: "select * from 1g5DrXcdotCiO_yffkdW0zhuJk0a1i80SPvERHI8", + key: apikey + }, + format: new OpenLayers.Format.GeoJSON({ + ignoreExtraDims: true, + read: function(json) { + var row, feature, atts = {}, features = []; + var cols = json.columns; // column names + for (var i = 0; i < json.rows.length; i++) { + row = json.rows[i]; + feature = new OpenLayers.Feature.Vector(); + atts = {}; + for (var j = 0; j < row.length; j++) { + // 'location's are json objects, other types are strings + if (typeof row[j] === "object") { + feature.geometry = this.parseGeometry(row[j].geometry); + } else { + atts[cols[j]] = row[j]; + } + } + feature.attributes = atts; + // if no geometry, not much point in continuing with this row + if (feature.geometry) { + features.push(feature); + } + } + return features; + } + }) + }), + eventListeners: { + "featuresadded": function () { + this.map.zoomToExtent(this.getDataExtent()); + } + } + }) + ] +}); |