Guofeng Cao CyberInfrastructure and Geospatial Information Laboratory Department of Geography National Center for Supercomputing Applications (NCSA) University of Illinois at Urbana-Champaign Geog 480: Principles of GIS
What is OpenLayers?
An API for building web map applications
What is OpenLayers? An API for building web map applications Pure client-side JavaScript
What is OpenLayers? An API for building web map applications Pure client-side JavaScript “AJAX”
What is OpenLayers? An API for building web map applications Pure client-side JavaScript “AJAX” “Web 2.0”
What is OpenLayers? An API for building web map applications Pure client-side JavaScript “AJAX” “Web 2.0”
What is OpenLayers? An API for building web map applications Pure client-side JavaScript “AJAX” Supports open standards
What is OpenLayers? An API for building web map applications Pure client-side JavaScript “AJAX” Supports open standards Supports closed standards, too
What is OpenLayers? An API for building web map applications Pure client-side JavaScript “AJAX” Supports open standards Supports closed standards, too BSD licensed
Quick Demonstration Tiling Zoom in/out Panning Zoom Box!
History of the Project Started after Where 2.0 in 2005
History of the Project Started after Where 2.0 in 2005 Motivated by MetaCarta's business needs
History of the Project Started after Where 2.0 in 2005 Motivated by MetaCarta's business needs Went through several internal revisions
History of the Project Started after Where 2.0 in 2005 Motivated by MetaCarta's business needs Went through several internal revisions Final rewrite took only a month
History of the Project Started after Where 2.0 in 2005 Motivated by MetaCarta's business needs Went through several internal revisions Final rewrite took only a month Released before Where 2.0 in 2006
History of the Project Started after Where 2.0 in 2005 Motivated by MetaCarta's business needs Went through several internal revisions Final rewrite took only a month Released before Where 2.0 in 2006 Already used by > 10,000 people
OpenLayers Features: Layers OGC WMS OGC WFS GeoRSS CSV ka-Map WorldWind (*) Canvas Google Maps MSN Virtual Earth Yahoo! Maps Multimap
OpenLayers Features: Controls Zoom / Pan Zoom Bar Mouse controls Layer Switcher (aka “legend”) Scale Ratio Scale Bar Permalink
OpenLayers Features: et cetera... Markers Popups Feature objects Event handling... and, of course...
OpenLayers Features: et cetera... Markers Popups Feature objects Event handling “AJAX”
OpenLayers: WMS var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent(); var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent();
OpenLayers: WMS var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent(); var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent();
OpenLayers: WMS var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent(); var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent();
OpenLayers: WMS var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent(); var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent();
OpenLayers: WMS var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent(); var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent();
OpenLayers: WMS var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent(); var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: 'basic'}); map.addLayer(wms); map.zoomToMaxExtent();
OpenLayers: WMS (demo)
Google Maps in OpenLayers var map = new OpenLayers.Map('map'); var layer = new OpenLayers.Layer.Google("Google Streets"); map.addLayer(layer); map.zoomToMaxExtent(); var map = new OpenLayers.Map('map'); var layer = new OpenLayers.Layer.Google("Google Streets"); map.addLayer(layer); map.zoomToMaxExtent();
Google Maps in OpenLayers (demo)
Commercial Layers in OpenLayers Additionally, OpenLayers supports...
Commercial Layers in OpenLayers Y! Maps Additionally, OpenLayers supports...
Commercial Layers in OpenLayers Y! Maps MultiMap Additionally, OpenLayers supports...
Commercial Layers in OpenLayers Live Maps Y! Maps MultiMap (insert your own here) Additionally, OpenLayers supports...
OpenLayers: Transparent WMS var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", " {layers: 'basic'} ); var twms = new OpenLayers.Layer.WMS( "World Map", " {map: '/www/freemap.in/world/map/factbooktrans.map', transparent:'true', layers: 'factbook', 'format':'png'} ); map.addLayers([wms,twms]); map.zoomToMaxExtent(); var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", " {layers: 'basic'} ); var twms = new OpenLayers.Layer.WMS( "World Map", " {map: '/www/freemap.in/world/map/factbooktrans.map', transparent:'true', layers: 'factbook', 'format':'png'} ); map.addLayers([wms,twms]); map.zoomToMaxExtent();
OpenLayers: Transparent WMS (demo)
OpenLayers: Markers var map = new OpenLayers.Map('map'); var markers = new OpenLayers.Layer.Markers("Markers"); map.addLayer(markers); var point = new OpenLayers.LonLat(5, 40) var marker = new OpenLayers.Marker(point); markers.addMarker(marker); map.zoomToMaxExtent(); var map = new OpenLayers.Map('map'); var markers = new OpenLayers.Layer.Markers("Markers"); map.addLayer(markers); var point = new OpenLayers.LonLat(5, 40) var marker = new OpenLayers.Marker(point); markers.addMarker(marker); map.zoomToMaxExtent();
OpenLayers: Markers var map = new OpenLayers.Map('map'); var markers = new OpenLayers.Layer.Markers("Markers"); map.addLayer(markers); var point = new OpenLayers.LonLat(5, 40) var marker = new OpenLayers.Marker(point); markers.addMarker(marker); map.zoomToMaxExtent(); var map = new OpenLayers.Map('map'); var markers = new OpenLayers.Layer.Markers("Markers"); map.addLayer(markers); var point = new OpenLayers.LonLat(5, 40) var marker = new OpenLayers.Marker(point); markers.addMarker(marker); map.zoomToMaxExtent();
OpenLayers: Markers (demo)
OpenLayers: WMS + Google Map var map = new OpenLayers.Map("map"); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: "opengeo:postgis_states_conner7", transparent:'true'},{"reproject":"true",projection: new OpenLayers.Projection("EPSG:900913")}); var layer = new OpenLayers.Layer.Google("Google Streets", {isBaseLayer:'true'}); map.addLayers([wms,layer]); map.zoomToMaxExtent(); map.zoomToMaxExtent(); var map = new OpenLayers.Map("map"); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: "opengeo:postgis_states_conner7", transparent:'true'},{"reproject":"true",projection: new OpenLayers.Projection("EPSG:900913")}); var layer = new OpenLayers.Layer.Google("Google Streets", {isBaseLayer:'true'}); map.addLayers([wms,layer]); map.zoomToMaxExtent(); map.zoomToMaxExtent();
OpenLayers: WMS + Google Map var map = new OpenLayers.Map("map"); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: "opengeo:postgis_states_conner7", transparent:'true'},{"reproject":"true",projection: new OpenLayers.Projection("EPSG:900913")}); var layer = new OpenLayers.Layer.Google("Google Streets", {isBaseLayer:'true'}); map.addLayers([wms,layer]); map.zoomToMaxExtent(); map.zoomToMaxExtent(); var map = new OpenLayers.Map("map"); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", " {layers: "opengeo:postgis_states_conner7", transparent:'true'},{"reproject":"true",projection: new OpenLayers.Projection("EPSG:900913")}); var layer = new OpenLayers.Layer.Google("Google Streets", {isBaseLayer:'true'}); map.addLayers([wms,layer]); map.zoomToMaxExtent(); map.zoomToMaxExtent();
Examples: A WebGIS crash course by Eric Shook:
Further info