Compare commits
9 Commits
v2.13.1
...
release-2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f90170d98 | ||
|
|
e89633fd52 | ||
|
|
c867627c78 | ||
|
|
061eeacf92 | ||
|
|
78c2e7767b | ||
|
|
911393123e | ||
|
|
fcd2a62fa3 | ||
|
|
9a3db8c5b7 | ||
|
|
e846551c2c |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,7 +0,0 @@
|
||||
/build/OpenLayers.js
|
||||
/tools/closure-compiler.jar
|
||||
/tools/*.pyc
|
||||
/apidoc_config/Data/
|
||||
/doc/apidocs/
|
||||
/examples/example-list.js
|
||||
/examples/example-list.xml
|
||||
@@ -48,6 +48,7 @@ SubTitle: JavaScript Mapping Library
|
||||
Group: OpenLayers {
|
||||
|
||||
File: OpenLayers (no auto-title, OpenLayers.js)
|
||||
File: Ajax (no auto-title, OpenLayers/Ajax.js)
|
||||
|
||||
Group: BaseTypes {
|
||||
|
||||
@@ -80,7 +81,9 @@ Group: OpenLayers {
|
||||
File: LayerSwitcher (no auto-title, OpenLayers/Control/LayerSwitcher.js)
|
||||
File: Measure (no auto-title, OpenLayers/Control/Measure.js)
|
||||
File: ModifyFeature (no auto-title, OpenLayers/Control/ModifyFeature.js)
|
||||
File: MouseDefaults (no auto-title, OpenLayers/Control/MouseDefaults.js)
|
||||
File: MousePosition (no auto-title, OpenLayers/Control/MousePosition.js)
|
||||
File: MouseToolbar (no auto-title, OpenLayers/Control/MouseToolbar.js)
|
||||
File: Navigation (no auto-title, OpenLayers/Control/Navigation.js)
|
||||
File: NavigationHistory (no auto-title, OpenLayers/Control/NavigationHistory.js)
|
||||
File: NavToolbar (no auto-title, OpenLayers/Control/NavToolbar.js)
|
||||
@@ -115,6 +118,7 @@ Group: OpenLayers {
|
||||
|
||||
File: Feature (no auto-title, OpenLayers/Feature.js)
|
||||
File: Vector (no auto-title, OpenLayers/Feature/Vector.js)
|
||||
File: WFS (no auto-title, OpenLayers/Feature/WFS.js)
|
||||
} # Group: Feature
|
||||
|
||||
Group: Filter {
|
||||
@@ -148,6 +152,9 @@ Group: OpenLayers {
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/Filter/v1_1_0.js)
|
||||
} # Group: Filter
|
||||
|
||||
File: GeoJSON (no auto-title, OpenLayers/Format/GeoJSON.js)
|
||||
File: GeoRSS (no auto-title, OpenLayers/Format/GeoRSS.js)
|
||||
|
||||
Group: GML {
|
||||
|
||||
File: GML (no auto-title, OpenLayers/Format/GML.js)
|
||||
@@ -156,24 +163,15 @@ Group: OpenLayers {
|
||||
File: v3 (no auto-title, OpenLayers/Format/GML/v3.js)
|
||||
} # Group: GML
|
||||
|
||||
Group: SLD {
|
||||
|
||||
File: SLD (no auto-title, OpenLayers/Format/SLD.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/SLD/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/SLD/v1_0_0.js)
|
||||
} # Group: SLD
|
||||
|
||||
File: GeoJSON (no auto-title, OpenLayers/Format/GeoJSON.js)
|
||||
File: GeoRSS (no auto-title, OpenLayers/Format/GeoRSS.js)
|
||||
File: GPX (no auto-title, OpenLayers/Format/GPX.js)
|
||||
File: JSON (no auto-title, OpenLayers/Format/JSON.js)
|
||||
File: KML (no auto-title, OpenLayers/Format/KML.js)
|
||||
File: OGCExceptionReport (no auto-title, OpenLayers/Format/OGCExceptionReport.js)
|
||||
File: OSM (no auto-title, OpenLayers/Format/OSM.js)
|
||||
File: OWSCommon (no auto-title, OpenLayers/Format/OWSCommon.js)
|
||||
|
||||
Group: OWSCommon {
|
||||
|
||||
File: OWSCommon (no auto-title, OpenLayers/Format/OWSCommon.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/OWSCommon/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/OWSCommon/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/OWSCommon/v1_1_0.js)
|
||||
@@ -182,12 +180,19 @@ Group: OpenLayers {
|
||||
File: OWSContext (no auto-title, OpenLayers/Format/OWSContext.js)
|
||||
File: OWSContext.v0_3_1 (no auto-title, OpenLayers/Format/OWSContext/v0_3_1.js)
|
||||
File: QueryStringFilter (no auto-title, OpenLayers/Format/QueryStringFilter.js)
|
||||
|
||||
Group: SLD {
|
||||
|
||||
File: SLD (no auto-title, OpenLayers/Format/SLD.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/SLD/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/SLD/v1_0_0.js)
|
||||
} # Group: SLD
|
||||
|
||||
File: SOSCapabilities (no auto-title, OpenLayers/Format/SOSCapabilities.js)
|
||||
File: SOSCapabilities.v1_0_0 (no auto-title, OpenLayers/Format/SOSCapabilities/v1_0_0.js)
|
||||
File: SOSGetFeatureOfInterest (no auto-title, OpenLayers/Format/SOSGetFeatureOfInterest.js)
|
||||
File: SOSGetObservation (no auto-title, OpenLayers/Format/SOSGetObservation.js)
|
||||
File: Text (no auto-title, OpenLayers/Format/Text.js)
|
||||
File: VersionedOGC (OpenLayers/Format/XML/VersionedOGC.js)
|
||||
File: WCSGetCoverage version 1.1.0 (no auto-title, OpenLayers/Format/WCSGetCoverage.js)
|
||||
File: WFS (no auto-title, OpenLayers/Format/WFS.js)
|
||||
|
||||
@@ -199,6 +204,8 @@ Group: OpenLayers {
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WFSCapabilities/v1_1_0.js)
|
||||
} # Group: WFSCapabilities
|
||||
|
||||
File: WFSDescribeFeatureType (no auto-title, OpenLayers/Format/WFSDescribeFeatureType.js)
|
||||
|
||||
Group: WFST {
|
||||
|
||||
File: WFST (no auto-title, OpenLayers/Format/WFST.js)
|
||||
@@ -207,6 +214,8 @@ Group: OpenLayers {
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WFST/v1_1_0.js)
|
||||
} # Group: WFST
|
||||
|
||||
File: WKT (no auto-title, OpenLayers/Format/WKT.js)
|
||||
|
||||
Group: WMC {
|
||||
|
||||
File: WMC (no auto-title, OpenLayers/Format/WMC.js)
|
||||
@@ -233,8 +242,6 @@ Group: OpenLayers {
|
||||
File: v1_1 (no auto-title, OpenLayers/Format/WMSDescribeLayer/v1_1.js)
|
||||
} # Group: WMSDescribeLayer
|
||||
|
||||
File: WFSDescribeFeatureType (no auto-title, OpenLayers/Format/WFSDescribeFeatureType.js)
|
||||
File: WKT (no auto-title, OpenLayers/Format/WKT.js)
|
||||
File: WMSGetFeatureInfo (no auto-title, OpenLayers/Format/WMSGetFeatureInfo.js)
|
||||
File: WMTSCapabilities (no auto-title, OpenLayers/Format/WMTSCapabilities.js)
|
||||
File: WMTSCapabilities.v1_0_0 (no auto-title, OpenLayers/Format/WMTSCapabilities/v1_0_0.js)
|
||||
@@ -260,6 +267,7 @@ Group: OpenLayers {
|
||||
File: MultiPolygon (no auto-title, OpenLayers/Geometry/MultiPolygon.js)
|
||||
File: Point (no auto-title, OpenLayers/Geometry/Point.js)
|
||||
File: Polygon (no auto-title, OpenLayers/Geometry/Polygon.js)
|
||||
File: Rectangle (no auto-title, OpenLayers/Geometry/Rectangle.js)
|
||||
} # Group: Geometry
|
||||
|
||||
Group: Handler {
|
||||
@@ -280,6 +288,7 @@ Group: OpenLayers {
|
||||
} # Group: Handler
|
||||
|
||||
File: Icon (no auto-title, OpenLayers/Icon.js)
|
||||
File: Kinetic (no auto-title, OpenLayers/Kinetic.js)
|
||||
|
||||
Group: Lang {
|
||||
|
||||
@@ -319,7 +328,6 @@ Group: OpenLayers {
|
||||
File: nn (no auto-title, OpenLayers/Lang/nn.js)
|
||||
File: oc (no auto-title, OpenLayers/Lang/oc.js)
|
||||
File: pt (no auto-title, OpenLayers/Lang/pt.js)
|
||||
File: pl (no auto-title, OpenLayers/Lang/pl.js)
|
||||
File: pt-BR (no auto-title, OpenLayers/Lang/pt-BR.js)
|
||||
File: ru (no auto-title, OpenLayers/Lang/ru.js)
|
||||
File: sk (no auto-title, OpenLayers/Lang/sk.js)
|
||||
@@ -341,8 +349,10 @@ Group: OpenLayers {
|
||||
File: EventPane (no auto-title, OpenLayers/Layer/EventPane.js)
|
||||
File: FixedZoomLevels (no auto-title, OpenLayers/Layer/FixedZoomLevels.js)
|
||||
File: GeoRSS (no auto-title, OpenLayers/Layer/GeoRSS.js)
|
||||
File: GML (no auto-title, OpenLayers/Layer/GML.js)
|
||||
File: Google (no auto-title, OpenLayers/Layer/Google.js)
|
||||
File: Google.v3 (no auto-title, OpenLayers/Layer/Google/v3.js)
|
||||
File: GoogleNG (no auto-title, OpenLayers/Layer/GoogleNG.js)
|
||||
File: Grid (no auto-title, OpenLayers/Layer/Grid.js)
|
||||
File: HTTPRequest (no auto-title, OpenLayers/Layer/HTTPRequest.js)
|
||||
File: Image (no auto-title, OpenLayers/Layer/Image.js)
|
||||
@@ -350,8 +360,9 @@ Group: OpenLayers {
|
||||
File: KaMapCache (no auto-title, OpenLayers/Layer/KaMapCache.js)
|
||||
File: MapGuide (no auto-title, OpenLayers/Layer/MapGuide.js)
|
||||
File: MapServer (no auto-title, OpenLayers/Layer/MapServer.js)
|
||||
File: MapServer.Untiled (no auto-title, OpenLayers/Layer/MapServer/Untiled.js)
|
||||
File: Markers (no auto-title, OpenLayers/Layer/Markers.js)
|
||||
File: OSM (no auto-title, OpenLayers/Layer/OSM.js)
|
||||
File: MultiMap (no auto-title, OpenLayers/Layer/MultiMap.js)
|
||||
File: PointGrid (no auto-title, OpenLayers/Layer/PointGrid.js)
|
||||
File: PointTrack (no auto-title, OpenLayers/Layer/PointTrack.js)
|
||||
File: SphericalMercator (no auto-title, OpenLayers/Layer/SphericalMercator.js)
|
||||
@@ -360,10 +371,15 @@ Group: OpenLayers {
|
||||
File: TMS (no auto-title, OpenLayers/Layer/TMS.js)
|
||||
File: Vector (no auto-title, OpenLayers/Layer/Vector.js)
|
||||
File: Vector.RootContainer (no auto-title, OpenLayers/Layer/Vector/RootContainer.js)
|
||||
File: VirtualEarth (no auto-title, OpenLayers/Layer/VirtualEarth.js)
|
||||
File: WFS (no auto-title, OpenLayers/Layer/WFS.js)
|
||||
File: WMS (no auto-title, OpenLayers/Layer/WMS.js)
|
||||
File: WMS.Untiled (no auto-title, OpenLayers/Layer/WMS/Untiled.js)
|
||||
File: WMS.Post (no auto-title, OpenLayers/Layer/WMS/Post.js)
|
||||
File: WMTS (no auto-title, OpenLayers/Layer/WMTS.js)
|
||||
File: WorldWind (no auto-title, OpenLayers/Layer/WorldWind.js)
|
||||
File: XYZ (no auto-title, OpenLayers/Layer/XYZ.js)
|
||||
File: Yahoo (no auto-title, OpenLayers/Layer/Yahoo.js)
|
||||
File: Zoomify (no auto-title, OpenLayers/Layer/Zoomify.js)
|
||||
} # Group: Layer
|
||||
|
||||
@@ -379,6 +395,7 @@ Group: OpenLayers {
|
||||
|
||||
File: Popup (no auto-title, OpenLayers/Popup.js)
|
||||
File: Anchored (no auto-title, OpenLayers/Popup/Anchored.js)
|
||||
File: AnchoredBubble (no auto-title, OpenLayers/Popup/AnchoredBubble.js)
|
||||
File: Framed (no auto-title, OpenLayers/Popup/Framed.js)
|
||||
File: FramedCloud (no auto-title, OpenLayers/Popup/FramedCloud.js)
|
||||
} # Group: Popup
|
||||
@@ -390,6 +407,12 @@ Group: OpenLayers {
|
||||
File: Protocol (no auto-title, OpenLayers/Protocol.js)
|
||||
File: HTTP (no auto-title, OpenLayers/Protocol/HTTP.js)
|
||||
|
||||
Group: SQL {
|
||||
|
||||
File: SQL (no auto-title, OpenLayers/Protocol/SQL.js)
|
||||
File: Gears (no auto-title, OpenLayers/Protocol/SQL/Gears.js)
|
||||
} # Group: SQL
|
||||
|
||||
Group: WFS {
|
||||
|
||||
File: WFS (no auto-title, OpenLayers/Protocol/WFS.js)
|
||||
@@ -408,7 +431,9 @@ Group: OpenLayers {
|
||||
File: Renderer (no auto-title, OpenLayers/Renderer.js)
|
||||
File: Canvas (no auto-title, OpenLayers/Renderer/Canvas.js)
|
||||
File: ElementsIndexer (no auto-title, OpenLayers/Renderer/Elements.js)
|
||||
File: NG (no auto-title, OpenLayers/Renderer/NG.js)
|
||||
File: SVG (no auto-title, OpenLayers/Renderer/SVG.js)
|
||||
File: SVG2 (no auto-title, OpenLayers/Renderer/SVG2.js)
|
||||
File: VML (no auto-title, OpenLayers/Renderer/VML.js)
|
||||
} # Group: Renderer
|
||||
|
||||
@@ -418,8 +443,8 @@ Group: OpenLayers {
|
||||
File: XMLHttpRequest (no auto-title, OpenLayers/Request/XMLHttpRequest.js)
|
||||
} # Group: Request
|
||||
|
||||
File: Rule (no auto-title, OpenLayers/Rule.js)
|
||||
File: SingleFile.js (no auto-title, OpenLayers/SingleFile.js)
|
||||
File: Rule (no auto-title, OpenLayers/Rule.js)
|
||||
|
||||
Group: Strategy {
|
||||
|
||||
@@ -450,13 +475,14 @@ Group: OpenLayers {
|
||||
Group: Tile {
|
||||
|
||||
File: Tile (no auto-title, OpenLayers/Tile.js)
|
||||
File: Google (no auto-title, OpenLayers/Tile/Google.js)
|
||||
File: Image (no auto-title, OpenLayers/Tile/Image.js)
|
||||
File: Image.IFrame (no auto-title, OpenLayers/Tile/Image/IFrame.js)
|
||||
File: WFS (no auto-title, OpenLayers/Tile/WFS.js)
|
||||
} # Group: Tile
|
||||
|
||||
File: Tween (no auto-title, OpenLayers/Tween.js)
|
||||
File: Util (no auto-title, OpenLayers/Util.js)
|
||||
File: Deprecated (no auto-title, deprecated.js)
|
||||
} # Group: OpenLayers
|
||||
|
||||
Group: Index {
|
||||
|
||||
@@ -41,6 +41,3 @@ The options available for compression are:
|
||||
* none
|
||||
None will leave the Javascript uncompressed.
|
||||
|
||||
|
||||
For more information on the build script and custom build profiles,
|
||||
see http://docs.openlayers.org/library/deploying.html
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import os
|
||||
sys.path.append("../tools")
|
||||
import mergejs
|
||||
import optparse
|
||||
@@ -14,9 +13,7 @@ def build(config_file = None, output_file = None, options = None):
|
||||
except ImportError:
|
||||
print "No jsmin"
|
||||
try:
|
||||
# tools/closure_library_jscompiler.py from:
|
||||
# http://code.google.com/p/closure-library/source/browse/trunk/closure/bin/build/jscompiler.py
|
||||
import closure_library_jscompiler as closureCompiler
|
||||
import closure
|
||||
have_compressor.append("closure")
|
||||
except Exception, E:
|
||||
print "No closure (%s)" % E
|
||||
@@ -32,13 +29,6 @@ def build(config_file = None, output_file = None, options = None):
|
||||
except ImportError:
|
||||
print "No minimize"
|
||||
|
||||
try:
|
||||
import uglify_js
|
||||
uglify_js.check_available()
|
||||
have_compressor.append("uglify-js")
|
||||
except Exception, E:
|
||||
print "No uglify-js (%s)" % E
|
||||
|
||||
use_compressor = None
|
||||
if options.compressor and options.compressor in have_compressor:
|
||||
use_compressor = options.compressor
|
||||
@@ -58,82 +48,19 @@ def build(config_file = None, output_file = None, options = None):
|
||||
outputFilename = output_file
|
||||
|
||||
print "Merging libraries."
|
||||
try:
|
||||
if use_compressor == "closure" or use_compressor == 'uglify-js':
|
||||
sourceFiles = mergejs.getNames(sourceDirectory, configFilename)
|
||||
else:
|
||||
merged = mergejs.run(sourceDirectory, None, configFilename)
|
||||
except mergejs.MissingImport, E:
|
||||
print "\nAbnormal termination."
|
||||
sys.exit("ERROR: %s" % E)
|
||||
|
||||
if options.amdname:
|
||||
options.amdname = "'" + options.amdname + "',"
|
||||
else:
|
||||
options.amdname = ""
|
||||
|
||||
if options.amd == 'pre':
|
||||
print "\nAdding AMD function."
|
||||
merged = "define(%sfunction(){%sreturn OpenLayers;});" % (options.amdname, merged)
|
||||
|
||||
merged = mergejs.run(sourceDirectory, None, configFilename)
|
||||
print "Compressing using %s" % use_compressor
|
||||
if use_compressor == "jsmin":
|
||||
minimized = jsmin.jsmin(merged)
|
||||
elif use_compressor == "minimize":
|
||||
minimized = minimize.minimize(merged)
|
||||
elif use_compressor == "closure_ws":
|
||||
if len(merged) > 1000000: # The maximum file size for this web service is 1000 KB.
|
||||
print "\nPre-compressing using jsmin"
|
||||
merged = jsmin.jsmin(merged)
|
||||
print "\nIs being compressed using Closure Compiler Service."
|
||||
try:
|
||||
minimized = closure_ws.minimize(merged)
|
||||
except Exception, E:
|
||||
print "\nAbnormal termination."
|
||||
sys.exit("ERROR: Closure Compilation using Web service failed!\n%s" % E)
|
||||
if len(minimized) <= 2:
|
||||
print "\nAbnormal termination due to compilation errors."
|
||||
sys.exit("ERROR: Closure Compilation using Web service failed!")
|
||||
else:
|
||||
print "Closure Compilation using Web service has completed successfully."
|
||||
minimized = closure_ws.minimize(merged)
|
||||
elif use_compressor == "closure":
|
||||
jscompilerJar = "../tools/closure-compiler.jar"
|
||||
if not os.path.isfile(jscompilerJar):
|
||||
print "\nNo closure-compiler.jar; read README.txt!"
|
||||
sys.exit("ERROR: Closure Compiler \"%s\" does not exist! Read README.txt" % jscompilerJar)
|
||||
minimized = closureCompiler.Compile(
|
||||
jscompilerJar,
|
||||
sourceFiles, [
|
||||
"--externs", "closure-compiler/Externs.js",
|
||||
"--jscomp_warning", "checkVars", # To enable "undefinedVars"
|
||||
"--jscomp_error", "checkRegExp", # Also necessary to enable "undefinedVars"
|
||||
"--jscomp_error", "undefinedVars"
|
||||
]
|
||||
)
|
||||
if minimized is None:
|
||||
print "\nAbnormal termination due to compilation errors."
|
||||
sys.exit("ERROR: Closure Compilation failed! See compilation errors.")
|
||||
print "Closure Compilation has completed successfully."
|
||||
elif use_compressor == "uglify-js":
|
||||
minimized = uglify_js.compile(sourceFiles)
|
||||
if minimized is None:
|
||||
print "\nAbnormal termination due to compilation errors."
|
||||
sys.exit("ERROR: Uglify JS compilation failed! See compilation errors.")
|
||||
|
||||
print "Uglify JS compilation has completed successfully."
|
||||
|
||||
minimized = closure.minimize(merged)
|
||||
else: # fallback
|
||||
minimized = merged
|
||||
|
||||
if options.amd == 'post':
|
||||
print "\nAdding AMD function."
|
||||
minimized = "define(%sfunction(){%sreturn OpenLayers;});" % (options.amdname, minimized)
|
||||
|
||||
if options.status:
|
||||
print "\nAdding status file."
|
||||
minimized = "// status: " + file(options.status).read() + minimized
|
||||
|
||||
print "\nAdding license file."
|
||||
print "Adding license file."
|
||||
minimized = file("license.txt").read() + minimized
|
||||
|
||||
print "Writing to %s." % outputFilename
|
||||
@@ -143,10 +70,7 @@ def build(config_file = None, output_file = None, options = None):
|
||||
|
||||
if __name__ == '__main__':
|
||||
opt = optparse.OptionParser(usage="%s [options] [config_file] [output_file]\n Default config_file is 'full.cfg', Default output_file is 'OpenLayers.js'")
|
||||
opt.add_option("-c", "--compressor", dest="compressor", help="compression method: one of 'jsmin' (default), 'minimize', 'closure_ws', 'closure', or 'none'", default="jsmin")
|
||||
opt.add_option("-s", "--status", dest="status", help="name of a file whose contents will be added as a comment at the front of the output file. For example, when building from a git repo, you can save the output of 'git describe --tags' in this file. Default is no file.", default=False)
|
||||
opt.add_option("--amd", dest="amd", help="output should be AMD module; wrap merged files in define function; can be either 'pre' (before compilation) or 'post' (after compilation). Wrapping the OpenLayers var in a function means the filesize can be reduced by the closure compiler using 'pre', but be aware that a few functions depend on the OpenLayers variable being present. Either option can be used with jsmin or minimize compression. Default false, not AMD.", default=False)
|
||||
opt.add_option("--amdname", dest="amdname", help="only useful with amd option. Name of AMD module. Default no name, anonymous module.", default=False)
|
||||
opt.add_option("-c", "--compressor", dest="compressor", help="compression method: one of 'jsmin', 'minimize', 'closure_ws', 'closure', or 'none'", default="jsmin")
|
||||
(options, args) = opt.parse_args()
|
||||
if not len(args):
|
||||
build(options=options)
|
||||
@@ -155,4 +79,4 @@ if __name__ == '__main__':
|
||||
elif len(args) == 2:
|
||||
build(args[0], args[1], options=options)
|
||||
else:
|
||||
print "Wrong number of arguments"
|
||||
print "Wrong number of arguments"
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
// ********************************************
|
||||
// This source file serves *ONLY* to avoid some compilation errors when the
|
||||
// compiler uses the flag:
|
||||
// --jscomp_error undefinedVars
|
||||
//
|
||||
// In this source are declared all variables from other programs that use
|
||||
// OpenLayers. This avoids the error of undefined variable for these names.
|
||||
//
|
||||
// NOTE: The compiler does not include externs files like this in the
|
||||
// compilation result.
|
||||
// ********************************************
|
||||
|
||||
// Used in lib/Firebug/firebug.js when gecko_dom
|
||||
var frames;
|
||||
|
||||
// Check the console when using Firebug Lite
|
||||
var console;
|
||||
|
||||
// Proj4js
|
||||
var Proj4js = {Proj: function(){}};
|
||||
|
||||
// Check JSON in lib/OpenLayers/Format/JSON.js
|
||||
var JSON = {};
|
||||
|
||||
// Google Maps
|
||||
var GMap2;
|
||||
var G_NORMAL_MAP;
|
||||
var GEvent;
|
||||
var GLatLngBounds = function(){};
|
||||
var GSize = function(x, y){};
|
||||
var GPoint = function(x, y){};
|
||||
var GLatLng = function(lat, lon){};
|
||||
|
||||
// Multimap
|
||||
var MultimapViewer = function(div){};
|
||||
var MMLatLon = function(lat, lon){};
|
||||
var MMPoint = function(x, y){};
|
||||
|
||||
//VirtualEarth
|
||||
var VEMap = function(name){};
|
||||
var VEPixel = function(x, y){};
|
||||
var VELatLong = function(lat, lon){};
|
||||
var Msn = {VE:{}};
|
||||
|
||||
// Yahoo
|
||||
var YMap = function(div, type, size){};
|
||||
var YGeoPoint = function(lat, lon){};
|
||||
var YCoordPoint = function(x, y){};
|
||||
var YSize = function(w, h){};
|
||||
|
||||
@@ -11,4 +11,3 @@
|
||||
Firebug
|
||||
OpenLayers.js
|
||||
OpenLayers/Lang
|
||||
deprecated.js
|
||||
|
||||
48
build/library.cfg
Normal file
48
build/library.cfg
Normal file
@@ -0,0 +1,48 @@
|
||||
# This file includes the OpenLayers code to create a build for everything that
|
||||
# does not require vector support.
|
||||
|
||||
[first]
|
||||
|
||||
[last]
|
||||
|
||||
[include]
|
||||
|
||||
[exclude]
|
||||
Firebug
|
||||
OpenLayers.js
|
||||
OpenLayers/Format/GeoRSS.js
|
||||
OpenLayers/Format/GML.js
|
||||
OpenLayers/Format/WKT.js
|
||||
OpenLayers/Format/KML.js
|
||||
OpenLayers/Format/WFS.js
|
||||
OpenLayers/Format.js
|
||||
OpenLayers/Handler/Path.js
|
||||
OpenLayers/Handler/Point.js
|
||||
OpenLayers/Handler/Polygon.js
|
||||
OpenLayers/Handler/Select.js
|
||||
OpenLayers/Geometry/Collection.js
|
||||
OpenLayers/Geometry/Curve.js
|
||||
OpenLayers/Geometry/LinearRing.js
|
||||
OpenLayers/Geometry/LineString.js
|
||||
OpenLayers/Geometry/MultiLineString.js
|
||||
OpenLayers/Geometry/MultiPoint.js
|
||||
OpenLayers/Geometry/MultiPolygon.js
|
||||
OpenLayers/Geometry/Point.js
|
||||
OpenLayers/Geometry/Polygon.js
|
||||
OpenLayers/Geometry/Rectangle.js
|
||||
OpenLayers/Geometry/Surface.js
|
||||
OpenLayers/Geometry.js
|
||||
OpenLayers/Layer/GML.js
|
||||
OpenLayers/Layer/Vector.js
|
||||
OpenLayers/Control/DrawFeature.js
|
||||
OpenLayers/Control/EditingToolbar.js
|
||||
OpenLayers/Control/SelectFeature.js
|
||||
OpenLayers/Feature/Vector.js
|
||||
OpenLayers/Renderer
|
||||
OpenLayers/Renderer/Elements.js
|
||||
OpenLayers/Renderer/SVG.js
|
||||
OpenLayers/Renderer/VML.js
|
||||
OpenLayers/Renderer.js
|
||||
OpenLayers/Lang
|
||||
|
||||
|
||||
@@ -2,17 +2,47 @@
|
||||
|
||||
OpenLayers.js -- OpenLayers Map Viewer Library
|
||||
|
||||
Copyright (c) 2006-2013 by OpenLayers Contributors
|
||||
Published under the 2-clause BSD license.
|
||||
See http://openlayers.org/dev/license.txt for the full text of the license, and http://openlayers.org/dev/authors.txt for full list of contributors.
|
||||
Copyright 2005-2011 OpenLayers Contributors, released under the FreeBSD
|
||||
license. Please see http://svn.openlayers.org/trunk/openlayers/license.txt
|
||||
for the full text of the license.
|
||||
|
||||
Includes compressed code under the following licenses:
|
||||
|
||||
(For uncompressed versions of the code used, please see the
|
||||
OpenLayers Github repository: <https://github.com/openlayers/openlayers>)
|
||||
(For uncompressed versions of the code used please see the
|
||||
OpenLayers SVN repository: <http://openlayers.org/>)
|
||||
|
||||
*/
|
||||
|
||||
/* Contains portions of Prototype.js:
|
||||
*
|
||||
* Prototype JavaScript framework, version 1.4.0
|
||||
* (c) 2005 Sam Stephenson <sam@conio.net>
|
||||
*
|
||||
* Prototype is freely distributable under the terms of an MIT-style license.
|
||||
* For details, see the Prototype web site: http://prototype.conio.net/
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
*
|
||||
* Contains portions of Rico <http://openrico.org/>
|
||||
*
|
||||
* Copyright 2005 Sabre Airline Solutions
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you
|
||||
* may not use this file except in compliance with the License. You
|
||||
* may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*
|
||||
**/
|
||||
|
||||
/**
|
||||
* Contains XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>
|
||||
* Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)
|
||||
@@ -23,6 +53,44 @@
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* Contains portions of Gears <http://code.google.com/apis/gears/>
|
||||
*
|
||||
* Copyright 2007, Google Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of Google Inc. nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Sets up google.gears.*, which is *the only* supported way to access Gears.
|
||||
*
|
||||
* Circumvent this file at your own risk!
|
||||
*
|
||||
* In the future, Gears may automatically define google.gears.* without this
|
||||
* file. Gears may use these objects to transparently fix bugs and compatibility
|
||||
* issues. Applications that use the code below will continue to work seamlessly
|
||||
* when that happens.
|
||||
*/
|
||||
|
||||
/**
|
||||
* OpenLayers.Util.pagePosition is based on Yahoo's getXY method, which is
|
||||
* Copyright (c) 2006, Yahoo! Inc.
|
||||
@@ -54,4 +122,4 @@
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
*/
|
||||
@@ -1,32 +0,0 @@
|
||||
[first]
|
||||
|
||||
[last]
|
||||
|
||||
[include]
|
||||
OpenLayers/Map.js
|
||||
OpenLayers/Kinetic.js
|
||||
OpenLayers/Projection.js
|
||||
OpenLayers/Layer/Vector.js
|
||||
OpenLayers/Layer/OSM.js
|
||||
OpenLayers/Layer/Bing.js
|
||||
OpenLayers/Layer/WMS.js
|
||||
OpenLayers/Layer/Google/v3.js
|
||||
OpenLayers/Popup/FramedCloud.js
|
||||
OpenLayers/Control/Navigation.js
|
||||
OpenLayers/Control/Zoom.js
|
||||
OpenLayers/Control/Attribution.js
|
||||
OpenLayers/Control/SelectFeature.js
|
||||
OpenLayers/Control/Panel.js
|
||||
OpenLayers/Control/LayerSwitcher.js
|
||||
OpenLayers/Renderer/SVG.js
|
||||
OpenLayers/Renderer/VML.js
|
||||
OpenLayers/Format/GeoJSON.js
|
||||
OpenLayers/Protocol/HTTP.js
|
||||
OpenLayers/Strategy/Fixed.js
|
||||
OpenLayers/Strategy/BBOX.js
|
||||
OpenLayers/StyleMap.js
|
||||
OpenLayers/Rule.js
|
||||
OpenLayers/Filter/Comparison.js
|
||||
OpenLayers/Filter/Logical.js
|
||||
|
||||
[exclude]
|
||||
@@ -6,12 +6,13 @@
|
||||
OpenLayers/Map.js
|
||||
OpenLayers/Kinetic.js
|
||||
OpenLayers/Projection.js
|
||||
OpenLayers/Layer/OSM.js
|
||||
OpenLayers/Layer/SphericalMercator.js
|
||||
OpenLayers/Layer/XYZ.js
|
||||
OpenLayers/Layer/Bing.js
|
||||
OpenLayers/Layer/WMS.js
|
||||
OpenLayers/Control/TouchNavigation.js
|
||||
OpenLayers/Control/Geolocate.js
|
||||
OpenLayers/Control/Zoom.js
|
||||
OpenLayers/Control/ZoomPanel.js
|
||||
OpenLayers/Control/Attribution.js
|
||||
OpenLayers/Control/SelectFeature.js
|
||||
OpenLayers/Control/DrawFeature.js
|
||||
@@ -29,7 +30,6 @@ OpenLayers/Protocol/HTTP.js
|
||||
OpenLayers/Protocol/WFS.js
|
||||
OpenLayers/Protocol/WFS/v1_0_0.js
|
||||
OpenLayers/Strategy/Fixed.js
|
||||
OpenLayers/TileManager.js
|
||||
|
||||
[exclude]
|
||||
|
||||
|
||||
@@ -7,5 +7,4 @@
|
||||
[include]
|
||||
|
||||
[exclude]
|
||||
Firebug
|
||||
OpenLayers.js
|
||||
|
||||
49
doc/customization
Normal file
49
doc/customization
Normal file
@@ -0,0 +1,49 @@
|
||||
Customizing OpenLayers
|
||||
======================
|
||||
|
||||
OpenLayers is designed to fit many needs -- fitting in alongside all kinds of
|
||||
various applications which are currently in use.
|
||||
|
||||
Currently, OpenLayers supports a 'theme' option when creating a map. This
|
||||
theme option allows you to specify the location of a CSS theme which should
|
||||
be included.
|
||||
|
||||
A default theme is available as an example in the theme/ directory: the setup
|
||||
is:
|
||||
|
||||
* theme/
|
||||
* theme/default/
|
||||
* theme/default/style.css
|
||||
* theme/default/img/
|
||||
|
||||
Currently, the OpenLayers code does not support class names, and therefore,
|
||||
it is not possible to control many aspects of OpenLayers code with CSS
|
||||
classes. However, with this framework in place, we expect to invest time
|
||||
to make existing features and new features use the CSS theming framework
|
||||
where apropriate.
|
||||
|
||||
|
||||
Class Naming
|
||||
============
|
||||
Elements should have class names which are descriptive of the Javascript
|
||||
class from which they come. For example, the main layer switcher element
|
||||
in the OpenLayers.Control.LayerSwitcher would be classed:
|
||||
|
||||
olControlLayerSwitcher
|
||||
|
||||
This would allow users to add to their style.css class in their theme,
|
||||
changing, for example:
|
||||
|
||||
::
|
||||
|
||||
.olControlLayerSwitcher input {
|
||||
width:10px;
|
||||
}
|
||||
|
||||
Sub elements of a particular control can add to the class name:
|
||||
|
||||
::
|
||||
|
||||
.olControlLayerSwitcherBaseLabel {
|
||||
color: red;
|
||||
}
|
||||
7
doc/readme.txt
Normal file
7
doc/readme.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Automatically generated OpenLayers API documentation is online:
|
||||
|
||||
http://dev.openlayers.org/apidocs
|
||||
|
||||
More information on documentation is available from:
|
||||
|
||||
http://trac.openlayers.org/wiki/Documentation
|
||||
96
doc/walkthru.html
Normal file
96
doc/walkthru.html
Normal file
@@ -0,0 +1,96 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>OpenLayers examples walkthrough</title>
|
||||
<style type="text/css">
|
||||
a { color:blue; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
</style>
|
||||
<base href="http://openlayers.org/dev/examples/">
|
||||
</head>
|
||||
<body style="font-family: sans-serif">
|
||||
<h1><pre style="font-size: larger"><ol></pre></h1>
|
||||
<p>API documentation: <a href="http://dev.openlayers.org/docs/">http://dev.openlayers.org/docs/</a></p>
|
||||
<p>Examples: <a href="http://dev.openlayers.org/examples/">http://openlayers.org/dev/examples/</a></p>
|
||||
<h2>Maps</h2>
|
||||
<ol>
|
||||
<li><a href="../examples/lite.html">Basic example</a></li>
|
||||
<li><a href="../examples/layerswitcher.html">Layer switcher (aka legend)</a></li>
|
||||
<li><a href="../examples/example.html">Base layers versus overlays</a></li>
|
||||
<li><a href="../examples/multiserver.html">Multiple WMS mirrors</a></li>
|
||||
<li><a href="../examples/fullScreen.html">Full screen map</a></li>
|
||||
<li><a href="../examples/wrapDateLine.html">Wrapping the date line</a></li>
|
||||
<li><a href="../examples/projected-map.html">Other cartographic projections</a></li>
|
||||
<li><a href="../examples/layer-opacity.html">Translucent overlays</a></li>
|
||||
</ol>
|
||||
|
||||
<h2>Raster Layers</h2>
|
||||
<ol>
|
||||
<li><a href="../examples/wms-untiled.html">Untiled WMS layer</a></li>
|
||||
<li><a href="../examples/kamap.html">Ka-Map layer</a></li>
|
||||
<li><a href="../examples/mapserver.html">MapServer layer</a></li>
|
||||
<li><a href="../examples/worldwind.html">Worldwind layer</a></li>
|
||||
<li><a href="../examples/tms.html">TMS layer</a></li>
|
||||
<li><a href="../examples/image-layer.html">Image layer</a></li>
|
||||
<li><a href="../examples/google.html">Google layer</a></li>
|
||||
<li><a href="../examples/ve.html">VirtualEarth layer</a></li>
|
||||
<li><a href="../examples/spherical-mercator.html">Spherical Mercator ("EPSG:900913")</a></li>
|
||||
<li><a href="http://tilecache.org/">TileCache</a></li>
|
||||
</ol>
|
||||
|
||||
<h2>Marker Layers</h2>
|
||||
<ol>
|
||||
<li><a href="../examples/markers.html">Markers</a></li>
|
||||
<li><a href="../examples/markerResize.html">Changing marker properties dynamically</a></li>
|
||||
<li><a href="../examples/popups.html">Popups</a></li>
|
||||
<li><a href="../examples/georss.html">GeoRSS</a> (<a href="georss.xml">example data</a>)</a></li>
|
||||
<li><a href="../examples/georss-markers.html">GeoRSS with custom markers</a></li>
|
||||
<li><a href="../examples/wfs.html">Point layer from WFS</a></li>
|
||||
<li><a href="../examples/getfeatureinfo.html">WFS GetFeatureInfo example</a></li>
|
||||
</ol>
|
||||
|
||||
<h2>Events and Controls</h2>
|
||||
<ol>
|
||||
<li><a href="../examples/navtoolbar.html">Navigation tools on the map</a></li>
|
||||
<li><a href="../examples/navtoolbar-outsidemap.html">Navigation toolbar off the map</a></li>
|
||||
<li><a href="../examples/mouse-position.html">Tracking the mouse position</a></li>
|
||||
<li><a href="../examples/overview.html">Overview map</a></li>
|
||||
<li><a href="../examples/attribution.html">Layer attribution</a></li>
|
||||
<li><a href="../examples/controls.html">Full range of controls</a></li>
|
||||
<li><a href="../examples/custom-control.html">Custom controls #1</a></li>
|
||||
<li><a href="../examples/custom-control.html">Custom controls #2</a></li>
|
||||
<li><a href="../examples/custom-style.html">Custom control styles</a></li>
|
||||
<li><a href="../examples/click.html">Trapping click events</a></li>
|
||||
<li><a href="../examples/layerLoadMonitoring.html">Tracking map events</a></li>
|
||||
</ol>
|
||||
|
||||
<h2>Vector Layers</h2>
|
||||
<ol>
|
||||
<li><a href="../examples/vector-features.html">Generating features in JavaScript</a></li>
|
||||
<li><a href="../examples/gml-layer.html">Loading features from GML</a></li>
|
||||
<li><a href="../examples/kml-layer.html">Loading features from KML</a></li>
|
||||
<li><a href="../examples/gml-serialize.html">Serializing features to GML</a></li>
|
||||
<li><a href="../examples/vector-formats.html">Serializing to other formats</a></li>
|
||||
<li><a href="../examples/select-feature.html">Selecting features</a></li>
|
||||
<li><a href="../examples/select-feature-openpopup.html">Attaching popups to features</a></li>
|
||||
</ol>
|
||||
|
||||
<h2>Editing Tools</h2>
|
||||
<ol>
|
||||
<li><a href="../examples/draw-feature.html">Drawing features</a></li>
|
||||
<li><a href="../examples/editingtoolbar.html">Editing toolbar</a> (<a href="editingtoolbar-outside.html">outside the map</a>)</li>
|
||||
<li><a href="../examples/regular-polygons.html">Creating regular polygons</a></li>
|
||||
<li><a href="../examples/modify-feature.html">Modifying features</a></li>
|
||||
<li><a href="../examples/resize-features.html">Resizing features</a></li>
|
||||
<li><a href="../examples/rotate-features.html">Rotating features</a></li>
|
||||
<li><a href="../examples/wfs-t.html">Transactional WFS example</a></li>
|
||||
<li><a href="http://featureserver.org/">FeatureServer</a></li>
|
||||
</ol>
|
||||
|
||||
<h2>Testing</h2>
|
||||
<ol>
|
||||
<li><a href="../tests/run-tests.html">Test.AnotherWay suite</a></li>
|
||||
</ol>
|
||||
|
||||
<h1><pre style="font-size: larger"></ol></pre></h1>
|
||||
</body>
|
||||
</html>
|
||||
@@ -48,6 +48,7 @@ SubTitle: JavaScript Mapping Library
|
||||
Group: OpenLayers {
|
||||
|
||||
File: OpenLayers (no auto-title, OpenLayers.js)
|
||||
File: Ajax (no auto-title, OpenLayers/Ajax.js)
|
||||
|
||||
Group: BaseTypes {
|
||||
|
||||
@@ -80,7 +81,9 @@ Group: OpenLayers {
|
||||
File: LayerSwitcher (no auto-title, OpenLayers/Control/LayerSwitcher.js)
|
||||
File: Measure (no auto-title, OpenLayers/Control/Measure.js)
|
||||
File: ModifyFeature (no auto-title, OpenLayers/Control/ModifyFeature.js)
|
||||
File: MouseDefaults (no auto-title, OpenLayers/Control/MouseDefaults.js)
|
||||
File: MousePosition (no auto-title, OpenLayers/Control/MousePosition.js)
|
||||
File: MouseToolbar (no auto-title, OpenLayers/Control/MouseToolbar.js)
|
||||
File: Navigation (no auto-title, OpenLayers/Control/Navigation.js)
|
||||
File: NavigationHistory (no auto-title, OpenLayers/Control/NavigationHistory.js)
|
||||
File: NavToolbar (no auto-title, OpenLayers/Control/NavToolbar.js)
|
||||
@@ -115,6 +118,7 @@ Group: OpenLayers {
|
||||
|
||||
File: Feature (no auto-title, OpenLayers/Feature.js)
|
||||
File: Vector (no auto-title, OpenLayers/Feature/Vector.js)
|
||||
File: WFS (no auto-title, OpenLayers/Feature/WFS.js)
|
||||
} # Group: Feature
|
||||
|
||||
Group: Filter {
|
||||
@@ -148,6 +152,9 @@ Group: OpenLayers {
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/Filter/v1_1_0.js)
|
||||
} # Group: Filter
|
||||
|
||||
File: GeoJSON (no auto-title, OpenLayers/Format/GeoJSON.js)
|
||||
File: GeoRSS (no auto-title, OpenLayers/Format/GeoRSS.js)
|
||||
|
||||
Group: GML {
|
||||
|
||||
File: GML (no auto-title, OpenLayers/Format/GML.js)
|
||||
@@ -156,24 +163,15 @@ Group: OpenLayers {
|
||||
File: v3 (no auto-title, OpenLayers/Format/GML/v3.js)
|
||||
} # Group: GML
|
||||
|
||||
Group: SLD {
|
||||
|
||||
File: SLD (no auto-title, OpenLayers/Format/SLD.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/SLD/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/SLD/v1_0_0.js)
|
||||
} # Group: SLD
|
||||
|
||||
File: GeoJSON (no auto-title, OpenLayers/Format/GeoJSON.js)
|
||||
File: GeoRSS (no auto-title, OpenLayers/Format/GeoRSS.js)
|
||||
File: GPX (no auto-title, OpenLayers/Format/GPX.js)
|
||||
File: JSON (no auto-title, OpenLayers/Format/JSON.js)
|
||||
File: KML (no auto-title, OpenLayers/Format/KML.js)
|
||||
File: OGCExceptionReport (no auto-title, OpenLayers/Format/OGCExceptionReport.js)
|
||||
File: OSM (no auto-title, OpenLayers/Format/OSM.js)
|
||||
File: OWSCommon (no auto-title, OpenLayers/Format/OWSCommon.js)
|
||||
|
||||
Group: OWSCommon {
|
||||
|
||||
File: OWSCommon (no auto-title, OpenLayers/Format/OWSCommon.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/OWSCommon/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/OWSCommon/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/OWSCommon/v1_1_0.js)
|
||||
@@ -182,12 +180,19 @@ Group: OpenLayers {
|
||||
File: OWSContext (no auto-title, OpenLayers/Format/OWSContext.js)
|
||||
File: OWSContext.v0_3_1 (no auto-title, OpenLayers/Format/OWSContext/v0_3_1.js)
|
||||
File: QueryStringFilter (no auto-title, OpenLayers/Format/QueryStringFilter.js)
|
||||
|
||||
Group: SLD {
|
||||
|
||||
File: SLD (no auto-title, OpenLayers/Format/SLD.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/SLD/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/SLD/v1_0_0.js)
|
||||
} # Group: SLD
|
||||
|
||||
File: SOSCapabilities (no auto-title, OpenLayers/Format/SOSCapabilities.js)
|
||||
File: SOSCapabilities.v1_0_0 (no auto-title, OpenLayers/Format/SOSCapabilities/v1_0_0.js)
|
||||
File: SOSGetFeatureOfInterest (no auto-title, OpenLayers/Format/SOSGetFeatureOfInterest.js)
|
||||
File: SOSGetObservation (no auto-title, OpenLayers/Format/SOSGetObservation.js)
|
||||
File: Text (no auto-title, OpenLayers/Format/Text.js)
|
||||
File: VersionedOGC (OpenLayers/Format/XML/VersionedOGC.js)
|
||||
File: WCSGetCoverage version 1.1.0 (no auto-title, OpenLayers/Format/WCSGetCoverage.js)
|
||||
File: WFS (no auto-title, OpenLayers/Format/WFS.js)
|
||||
|
||||
@@ -199,6 +204,8 @@ Group: OpenLayers {
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WFSCapabilities/v1_1_0.js)
|
||||
} # Group: WFSCapabilities
|
||||
|
||||
File: WFSDescribeFeatureType (no auto-title, OpenLayers/Format/WFSDescribeFeatureType.js)
|
||||
|
||||
Group: WFST {
|
||||
|
||||
File: WFST (no auto-title, OpenLayers/Format/WFST.js)
|
||||
@@ -207,6 +214,8 @@ Group: OpenLayers {
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WFST/v1_1_0.js)
|
||||
} # Group: WFST
|
||||
|
||||
File: WKT (no auto-title, OpenLayers/Format/WKT.js)
|
||||
|
||||
Group: WMC {
|
||||
|
||||
File: WMC (no auto-title, OpenLayers/Format/WMC.js)
|
||||
@@ -233,8 +242,6 @@ Group: OpenLayers {
|
||||
File: v1_1 (no auto-title, OpenLayers/Format/WMSDescribeLayer/v1_1.js)
|
||||
} # Group: WMSDescribeLayer
|
||||
|
||||
File: WFSDescribeFeatureType (no auto-title, OpenLayers/Format/WFSDescribeFeatureType.js)
|
||||
File: WKT (no auto-title, OpenLayers/Format/WKT.js)
|
||||
File: WMSGetFeatureInfo (no auto-title, OpenLayers/Format/WMSGetFeatureInfo.js)
|
||||
File: WMTSCapabilities (no auto-title, OpenLayers/Format/WMTSCapabilities.js)
|
||||
File: WMTSCapabilities.v1_0_0 (no auto-title, OpenLayers/Format/WMTSCapabilities/v1_0_0.js)
|
||||
@@ -260,6 +267,7 @@ Group: OpenLayers {
|
||||
File: MultiPolygon (no auto-title, OpenLayers/Geometry/MultiPolygon.js)
|
||||
File: Point (no auto-title, OpenLayers/Geometry/Point.js)
|
||||
File: Polygon (no auto-title, OpenLayers/Geometry/Polygon.js)
|
||||
File: Rectangle (no auto-title, OpenLayers/Geometry/Rectangle.js)
|
||||
} # Group: Geometry
|
||||
|
||||
Group: Handler {
|
||||
@@ -319,7 +327,6 @@ Group: OpenLayers {
|
||||
File: nl (no auto-title, OpenLayers/Lang/nl.js)
|
||||
File: nn (no auto-title, OpenLayers/Lang/nn.js)
|
||||
File: oc (no auto-title, OpenLayers/Lang/oc.js)
|
||||
File: pl (no auto-title, OpenLayers/Lang/pl.js)
|
||||
File: pt (no auto-title, OpenLayers/Lang/pt.js)
|
||||
File: pt-BR (no auto-title, OpenLayers/Lang/pt-BR.js)
|
||||
File: ru (no auto-title, OpenLayers/Lang/ru.js)
|
||||
@@ -342,8 +349,10 @@ Group: OpenLayers {
|
||||
File: EventPane (no auto-title, OpenLayers/Layer/EventPane.js)
|
||||
File: FixedZoomLevels (no auto-title, OpenLayers/Layer/FixedZoomLevels.js)
|
||||
File: GeoRSS (no auto-title, OpenLayers/Layer/GeoRSS.js)
|
||||
File: GML (no auto-title, OpenLayers/Layer/GML.js)
|
||||
File: Google (no auto-title, OpenLayers/Layer/Google.js)
|
||||
File: Google.v3 (no auto-title, OpenLayers/Layer/Google/v3.js)
|
||||
File: GoogleNG (no auto-title, OpenLayers/Layer/GoogleNG.js)
|
||||
File: Grid (no auto-title, OpenLayers/Layer/Grid.js)
|
||||
File: HTTPRequest (no auto-title, OpenLayers/Layer/HTTPRequest.js)
|
||||
File: Image (no auto-title, OpenLayers/Layer/Image.js)
|
||||
@@ -351,7 +360,9 @@ Group: OpenLayers {
|
||||
File: KaMapCache (no auto-title, OpenLayers/Layer/KaMapCache.js)
|
||||
File: MapGuide (no auto-title, OpenLayers/Layer/MapGuide.js)
|
||||
File: MapServer (no auto-title, OpenLayers/Layer/MapServer.js)
|
||||
File: MapServer.Untiled (no auto-title, OpenLayers/Layer/MapServer/Untiled.js)
|
||||
File: Markers (no auto-title, OpenLayers/Layer/Markers.js)
|
||||
File: MultiMap (no auto-title, OpenLayers/Layer/MultiMap.js)
|
||||
File: PointGrid (no auto-title, OpenLayers/Layer/PointGrid.js)
|
||||
File: PointTrack (no auto-title, OpenLayers/Layer/PointTrack.js)
|
||||
File: SphericalMercator (no auto-title, OpenLayers/Layer/SphericalMercator.js)
|
||||
@@ -360,10 +371,15 @@ Group: OpenLayers {
|
||||
File: TMS (no auto-title, OpenLayers/Layer/TMS.js)
|
||||
File: Vector (no auto-title, OpenLayers/Layer/Vector.js)
|
||||
File: Vector.RootContainer (no auto-title, OpenLayers/Layer/Vector/RootContainer.js)
|
||||
File: VirtualEarth (no auto-title, OpenLayers/Layer/VirtualEarth.js)
|
||||
File: WFS (no auto-title, OpenLayers/Layer/WFS.js)
|
||||
File: WMS (no auto-title, OpenLayers/Layer/WMS.js)
|
||||
File: WMS.Untiled (no auto-title, OpenLayers/Layer/WMS/Untiled.js)
|
||||
File: WMS.Post (no auto-title, OpenLayers/Layer/WMS/Post.js)
|
||||
File: WMTS (no auto-title, OpenLayers/Layer/WMTS.js)
|
||||
File: WorldWind (no auto-title, OpenLayers/Layer/WorldWind.js)
|
||||
File: XYZ (no auto-title, OpenLayers/Layer/XYZ.js)
|
||||
File: Yahoo (no auto-title, OpenLayers/Layer/Yahoo.js)
|
||||
File: Zoomify (no auto-title, OpenLayers/Layer/Zoomify.js)
|
||||
} # Group: Layer
|
||||
|
||||
@@ -379,6 +395,7 @@ Group: OpenLayers {
|
||||
|
||||
File: Popup (no auto-title, OpenLayers/Popup.js)
|
||||
File: Anchored (no auto-title, OpenLayers/Popup/Anchored.js)
|
||||
File: AnchoredBubble (no auto-title, OpenLayers/Popup/AnchoredBubble.js)
|
||||
File: Framed (no auto-title, OpenLayers/Popup/Framed.js)
|
||||
File: FramedCloud (no auto-title, OpenLayers/Popup/FramedCloud.js)
|
||||
} # Group: Popup
|
||||
@@ -390,6 +407,12 @@ Group: OpenLayers {
|
||||
File: Protocol (no auto-title, OpenLayers/Protocol.js)
|
||||
File: HTTP (no auto-title, OpenLayers/Protocol/HTTP.js)
|
||||
|
||||
Group: SQL {
|
||||
|
||||
File: SQL (no auto-title, OpenLayers/Protocol/SQL.js)
|
||||
File: Gears (no auto-title, OpenLayers/Protocol/SQL/Gears.js)
|
||||
} # Group: SQL
|
||||
|
||||
Group: WFS {
|
||||
|
||||
File: WFS (no auto-title, OpenLayers/Protocol/WFS.js)
|
||||
@@ -408,7 +431,9 @@ Group: OpenLayers {
|
||||
File: Renderer (no auto-title, OpenLayers/Renderer.js)
|
||||
File: Canvas (no auto-title, OpenLayers/Renderer/Canvas.js)
|
||||
File: ElementsIndexer (no auto-title, OpenLayers/Renderer/Elements.js)
|
||||
File: NG (no auto-title, OpenLayers/Renderer/NG.js)
|
||||
File: SVG (no auto-title, OpenLayers/Renderer/SVG.js)
|
||||
File: SVG2 (no auto-title, OpenLayers/Renderer/SVG2.js)
|
||||
File: VML (no auto-title, OpenLayers/Renderer/VML.js)
|
||||
} # Group: Renderer
|
||||
|
||||
@@ -418,8 +443,8 @@ Group: OpenLayers {
|
||||
File: XMLHttpRequest (no auto-title, OpenLayers/Request/XMLHttpRequest.js)
|
||||
} # Group: Request
|
||||
|
||||
File: Rule (no auto-title, OpenLayers/Rule.js)
|
||||
File: SingleFile.js (no auto-title, OpenLayers/SingleFile.js)
|
||||
File: Rule (no auto-title, OpenLayers/Rule.js)
|
||||
|
||||
Group: Strategy {
|
||||
|
||||
@@ -450,14 +475,14 @@ Group: OpenLayers {
|
||||
Group: Tile {
|
||||
|
||||
File: Tile (no auto-title, OpenLayers/Tile.js)
|
||||
File: Google (no auto-title, OpenLayers/Tile/Google.js)
|
||||
File: Image (no auto-title, OpenLayers/Tile/Image.js)
|
||||
File: Image.IFrame (no auto-title, OpenLayers/Tile/Image/IFrame.js)
|
||||
File: WFS (no auto-title, OpenLayers/Tile/WFS.js)
|
||||
} # Group: Tile
|
||||
|
||||
File: Tween (no auto-title, OpenLayers/Tween.js)
|
||||
File: Util (no auto-title, OpenLayers/Util.js)
|
||||
File: Spherical (no auto-title, OpenLayers/Spherical.js)
|
||||
File: Deprecated (no auto-title, deprecated.js)
|
||||
} # Group: OpenLayers
|
||||
|
||||
Group: Index {
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<script type="text/javascript">
|
||||
function parseData(req) {
|
||||
g = new OpenLayers.Format.KML({extractStyles: true});
|
||||
html = "";
|
||||
html = ""
|
||||
features = g.read(req.responseText);
|
||||
for(var feat in features) {
|
||||
html += "Feature: Geometry: "+ features[feat].geometry+",";
|
||||
@@ -18,7 +18,7 @@
|
||||
for (var j in features[feat].attributes) {
|
||||
html += "<li>Attribute "+j+":"+features[feat].attributes[j]+"</li>";
|
||||
}
|
||||
html += "</ul>";
|
||||
html += "</ul>"
|
||||
html += "<ul>";
|
||||
for (var j in features[feat].style) {
|
||||
html += "<li>Style "+j+":"+features[feat].style[j]+"</li>";
|
||||
|
||||
@@ -10,14 +10,13 @@
|
||||
<script type="text/javascript">
|
||||
function parseData(req) {
|
||||
format = new OpenLayers.Format.WMSDescribeLayer();
|
||||
html = "<br>";
|
||||
html = "<br>"
|
||||
resp = format.read(req.responseText);
|
||||
var layerDescriptions = resp.layerDescriptions;
|
||||
for(var i = 0; i < layerDescriptions.length; i++) {
|
||||
html += "Layer: typeName: "+layerDescriptions[i].typeName+",";
|
||||
for(var i = 0; i < resp.length; i++) {
|
||||
html += "Layer: typeName: "+ resp[i].typeName+",";
|
||||
html += "<ul>";
|
||||
html += "<li>owsURL: "+layerDescriptions[i].owsURL+"</li>";
|
||||
html += "<li>owsType: "+layerDescriptions[i].owsType+"</li>";
|
||||
html += "<li>owsURL: "+resp[i].owsURL+"</li>";
|
||||
html += "<li>owsType: "+resp[i].owsType+"</li>";
|
||||
html += "</ul>"
|
||||
}
|
||||
document.getElementById('output').innerHTML = html;
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>Accessible Custom Click Control</title>
|
||||
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<style type="text/css">
|
||||
<style type="text/css">
|
||||
a {
|
||||
text-decoration: none;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
a em {
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
a.api {
|
||||
font-size:1em;
|
||||
text-decoration:underline;
|
||||
}
|
||||
a.accesskey {
|
||||
color: white;
|
||||
}
|
||||
a.accesskey:focus {
|
||||
color: #436976;
|
||||
}
|
||||
a.zoom {
|
||||
padding-right: 20px;
|
||||
}
|
||||
</style>
|
||||
<script src="../lib/Firebug/firebug.js"></script>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="accessible-click-control.js"></script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">An accessible click control implementation</h1>
|
||||
|
||||
<div id="tags">
|
||||
click, control, accessibility
|
||||
</div>
|
||||
|
||||
<a class="accesskey"
|
||||
href=""
|
||||
accesskey="1"
|
||||
onclick="document.getElementById('map').focus();return false;">
|
||||
Jump to map
|
||||
</a>
|
||||
|
||||
<div id="map" class="smallmap" tabindex="0"></div>
|
||||
|
||||
<p id="desc">
|
||||
Demonstrate the KeyboardDefaults control as well as a control that
|
||||
allows clicking on the map using the keyboard.
|
||||
First focus the map (using tab key or mouse), then press the 'i'
|
||||
key to activate the query control. You can then move the point
|
||||
using arrow keys. Press 'RETURN' to get the coordinate. Press 'i'
|
||||
again to deactivate the control.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,199 +0,0 @@
|
||||
var map, navigationControl, queryControl;
|
||||
|
||||
function init(){
|
||||
map = new OpenLayers.Map('map', {controls: []});
|
||||
var layer = new OpenLayers.Layer.WMS(
|
||||
"OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0",
|
||||
{layers: 'basic'}
|
||||
);
|
||||
map.addLayers([layer]);
|
||||
|
||||
navigationControl = new OpenLayers.Control.KeyboardDefaults({
|
||||
observeElement: 'map'
|
||||
});
|
||||
map.addControl(navigationControl);
|
||||
|
||||
queryControl = new OpenLayers.Control.KeyboardClick({
|
||||
observeElement: 'map'
|
||||
});
|
||||
map.addControl(queryControl);
|
||||
|
||||
map.zoomToMaxExtent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Class: OpenLayers.Control.KeyboardClick
|
||||
*
|
||||
* A custom control that (a) adds a vector point that can be moved using the
|
||||
* arrow keys of the keyboard, and (b) displays a browser alert window when the
|
||||
* RETURN key is pressed. The control can be activated/deactivated using the
|
||||
* "i" key. When activated the control deactivates any KeyboardDefaults control
|
||||
* in the map so that the map is not moved when the arrow keys are pressed.
|
||||
*
|
||||
* This control relies on the OpenLayers.Handler.KeyboardPoint custom handler.
|
||||
*/
|
||||
OpenLayers.Control.KeyboardClick = OpenLayers.Class(OpenLayers.Control, {
|
||||
initialize: function(options) {
|
||||
OpenLayers.Control.prototype.initialize.apply(this, [options]);
|
||||
var observeElement = this.observeElement || document;
|
||||
this.handler = new OpenLayers.Handler.KeyboardPoint(this, {
|
||||
done: this.onClick,
|
||||
cancel: this.deactivate
|
||||
}, {
|
||||
observeElement: observeElement
|
||||
});
|
||||
OpenLayers.Event.observe(
|
||||
observeElement,
|
||||
"keydown",
|
||||
OpenLayers.Function.bindAsEventListener(
|
||||
function(evt) {
|
||||
if (evt.keyCode == 73) { // "i"
|
||||
if (this.active) {
|
||||
this.deactivate();
|
||||
} else {
|
||||
this.activate();
|
||||
}
|
||||
}
|
||||
},
|
||||
this
|
||||
)
|
||||
);
|
||||
},
|
||||
|
||||
onClick: function(geometry) {
|
||||
alert("You clicked near " + geometry.x + " N, " +
|
||||
geometry.y + " E");
|
||||
},
|
||||
|
||||
activate: function() {
|
||||
if(!OpenLayers.Control.prototype.activate.apply(this, arguments)) {
|
||||
return false;
|
||||
}
|
||||
// deactivate any KeyboardDefaults control
|
||||
var keyboardDefaults = this.map.getControlsByClass(
|
||||
'OpenLayers.Control.KeyboardDefaults')[0];
|
||||
if (keyboardDefaults) {
|
||||
keyboardDefaults.deactivate();
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
deactivate: function() {
|
||||
if(!OpenLayers.Control.prototype.deactivate.apply(this, arguments)) {
|
||||
return false;
|
||||
}
|
||||
// reactivate any KeyboardDefaults control
|
||||
var keyboardDefaults = this.map.getControlsByClass(
|
||||
'OpenLayers.Control.KeyboardDefaults')[0];
|
||||
if (keyboardDefaults) {
|
||||
keyboardDefaults.activate();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Class: OpenLayers.Handler.KeyboardPoint
|
||||
*
|
||||
* A custom handler that displays a vector point that can be moved
|
||||
* using the arrow keys of the keyboard.
|
||||
*/
|
||||
OpenLayers.Handler.KeyboardPoint = OpenLayers.Class(OpenLayers.Handler, {
|
||||
|
||||
KEY_EVENTS: ["keydown"],
|
||||
|
||||
|
||||
initialize: function(control, callbacks, options) {
|
||||
OpenLayers.Handler.prototype.initialize.apply(this, arguments);
|
||||
// cache the bound event listener method so it can be unobserved later
|
||||
this.eventListener = OpenLayers.Function.bindAsEventListener(
|
||||
this.handleKeyEvent, this
|
||||
);
|
||||
},
|
||||
|
||||
activate: function() {
|
||||
if(!OpenLayers.Handler.prototype.activate.apply(this, arguments)) {
|
||||
return false;
|
||||
}
|
||||
this.layer = new OpenLayers.Layer.Vector(this.CLASS_NAME);
|
||||
this.map.addLayer(this.layer);
|
||||
this.observeElement = this.observeElement || document;
|
||||
for (var i=0, len=this.KEY_EVENTS.length; i<len; i++) {
|
||||
OpenLayers.Event.observe(
|
||||
this.observeElement, this.KEY_EVENTS[i], this.eventListener);
|
||||
}
|
||||
if(!this.point) {
|
||||
this.createFeature();
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
deactivate: function() {
|
||||
if (!OpenLayers.Handler.prototype.deactivate.apply(this, arguments)) {
|
||||
return false;
|
||||
}
|
||||
for (var i=0, len=this.KEY_EVENTS.length; i<len; i++) {
|
||||
OpenLayers.Event.stopObserving(
|
||||
this.observeElement, this.KEY_EVENTS[i], this.eventListener);
|
||||
}
|
||||
this.map.removeLayer(this.layer);
|
||||
this.destroyFeature();
|
||||
return true;
|
||||
},
|
||||
|
||||
handleKeyEvent: function (evt) {
|
||||
switch(evt.keyCode) {
|
||||
case OpenLayers.Event.KEY_LEFT:
|
||||
this.modifyFeature(-3, 0);
|
||||
break;
|
||||
case OpenLayers.Event.KEY_RIGHT:
|
||||
this.modifyFeature(3, 0);
|
||||
break;
|
||||
case OpenLayers.Event.KEY_UP:
|
||||
this.modifyFeature(0, 3);
|
||||
break;
|
||||
case OpenLayers.Event.KEY_DOWN:
|
||||
this.modifyFeature(0, -3);
|
||||
break;
|
||||
case OpenLayers.Event.KEY_RETURN:
|
||||
this.callback('done', [this.point.geometry.clone()]);
|
||||
break;
|
||||
case OpenLayers.Event.KEY_ESC:
|
||||
this.callback('cancel');
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
modifyFeature: function(lon, lat) {
|
||||
if(!this.point) {
|
||||
this.createFeature();
|
||||
}
|
||||
var resolution = this.map.getResolution();
|
||||
this.point.geometry.x = this.point.geometry.x + lon * resolution;
|
||||
this.point.geometry.y = this.point.geometry.y + lat * resolution;
|
||||
this.callback("modify", [this.point.geometry, this.point, false]);
|
||||
this.point.geometry.clearBounds();
|
||||
this.drawFeature();
|
||||
},
|
||||
|
||||
createFeature: function() {
|
||||
var center = this.map.getCenter();
|
||||
var geometry = new OpenLayers.Geometry.Point(
|
||||
center.lon, center.lat
|
||||
);
|
||||
this.point = new OpenLayers.Feature.Vector(geometry);
|
||||
this.callback("create", [this.point.geometry, this.point]);
|
||||
this.point.geometry.clearBounds();
|
||||
this.layer.addFeatures([this.point], {silent: true});
|
||||
},
|
||||
|
||||
destroyFeature: function() {
|
||||
this.layer.destroyFeatures([this.point]);
|
||||
this.point = null;
|
||||
},
|
||||
|
||||
drawFeature: function() {
|
||||
this.layer.drawFeature(this.point, this.style);
|
||||
}
|
||||
});
|
||||
@@ -1,130 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>Custom and accessible panel</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<style type="text/css">
|
||||
|
||||
.olControlPanel button {
|
||||
position: relative;
|
||||
display: block;
|
||||
margin: 2px;
|
||||
border: 1px solid;
|
||||
padding: 0 5px;
|
||||
border-radius: 4px;
|
||||
height: 35px;
|
||||
background-color: white;
|
||||
float: left;
|
||||
overflow: visible; /* needed to remove padding from buttons in IE */
|
||||
}
|
||||
.olControlPanel button span {
|
||||
padding-left: 25px;
|
||||
}
|
||||
.olControlPanel button span:first-child {
|
||||
padding-left: 0;
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 2px;
|
||||
}
|
||||
.olControlPanel .olControlDrawFeatureItemActive span:first-child {
|
||||
background-image: url("../theme/default/img/draw_line_on.png");
|
||||
height: 22px;
|
||||
width: 24px;
|
||||
top: 5px;
|
||||
}
|
||||
.olControlPanel .olControlDrawFeatureItemInactive span:first-child {
|
||||
background-image: url("../theme/default/img/draw_line_off.png");
|
||||
height: 22px;
|
||||
width: 24px;
|
||||
top: 5px;
|
||||
}
|
||||
.olControlPanel .olControlZoomBoxItemInactive span:first-child {
|
||||
background-image: url("../img/drag-rectangle-off.png");
|
||||
height: 29px;
|
||||
width: 29px;
|
||||
top: 2px;
|
||||
}
|
||||
.olControlPanel .olControlZoomBoxItemActive span:first-child {
|
||||
background-image: url("../img/drag-rectangle-on.png");
|
||||
height: 29px;
|
||||
width: 29px;
|
||||
top: 2px;
|
||||
}
|
||||
.olControlPanel .olControlZoomToMaxExtentItemInactive span:first-child {
|
||||
background-image: url("../img/zoom-world-mini.png");
|
||||
height: 18px;
|
||||
width: 18px;
|
||||
top: 8px;
|
||||
}
|
||||
.olControlPanel .navHistory span:first-child {
|
||||
background-image: url("../theme/default/img/navigation_history.png");
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
top: 4px;
|
||||
}
|
||||
.olControlPanel .navHistoryPreviousItemActive span:first-child {
|
||||
background-position: 0 0;
|
||||
}
|
||||
.olControlPanel .navHistoryPreviousItemInactive span:first-child {
|
||||
background-position: 0 -24px;
|
||||
}
|
||||
.olControlPanel .navHistoryNextItemActive span:first-child {
|
||||
background-position: -24px 0;
|
||||
}
|
||||
.olControlPanel .navHistoryNextItemInactive span:first-child {
|
||||
background-position: -24px -24px;
|
||||
}
|
||||
|
||||
</style>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="accessible-panel.js"></script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Custom and accessible panel</h1>
|
||||
<div id="tags">
|
||||
panels, CSS, style, accessibility, button
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Create a custom and accessible panel, styled entirely with
|
||||
CSS.
|
||||
</p>
|
||||
<div id="panel"></div>
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
|
||||
<p>An accessible panel:
|
||||
|
||||
<ul>
|
||||
<li>The buttons are actual HTML buttons. You can therefore
|
||||
use the TAB key to give the focus to the panel's buttons, and the "ENTER"
|
||||
key to activate or trigger the corresponding control.</li>
|
||||
<li>The buttons include text and titles (displayed when a button
|
||||
is hovered).</li>
|
||||
<li>If you remove colors from the page (for example using FireFox's <a
|
||||
href="https://addons.mozilla.org/en-US/firefox/addon/no-color/">No
|
||||
Color extension</a>) the buttons are still visible, and
|
||||
accessible using the keyboard.</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<p>By default a panel creates buttons as divs. In this example the
|
||||
<code>createControlMarkup</code> panel function is overridden to create
|
||||
a more accessible markup for the buttons. See the <a
|
||||
href="accessible-panel.js" target="_blank"> accessible-panel.js
|
||||
source</a> to see how this is done.</p>
|
||||
|
||||
<p>Note: in IE 8, when a button is pressed its content shifts by 1 pixel.
|
||||
This is a <a
|
||||
href="http://labs.findsubstance.com/2009/05/21/ie8-form-button-with-background-image-on-click-css-bug/">known
|
||||
IE8 bug</a>, with known workarounds. No workaround is applied in this
|
||||
example though.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,64 +0,0 @@
|
||||
var lon = 5;
|
||||
var lat = 40;
|
||||
var zoom = 5;
|
||||
var map, layer;
|
||||
|
||||
function init() {
|
||||
map = new OpenLayers.Map( 'map', { controls: [] } );
|
||||
layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} );
|
||||
map.addLayer(layer);
|
||||
|
||||
vlayer = new OpenLayers.Layer.Vector( "Editable" );
|
||||
map.addLayer(vlayer);
|
||||
|
||||
zb = new OpenLayers.Control.ZoomBox({
|
||||
title: "Zoom box: zoom clicking and dragging",
|
||||
text: "Zoom"
|
||||
});
|
||||
|
||||
var panel = new OpenLayers.Control.Panel({
|
||||
defaultControl: zb,
|
||||
createControlMarkup: function(control) {
|
||||
var button = document.createElement('button'),
|
||||
iconSpan = document.createElement('span'),
|
||||
textSpan = document.createElement('span');
|
||||
iconSpan.innerHTML = ' ';
|
||||
button.appendChild(iconSpan);
|
||||
if (control.text) {
|
||||
textSpan.innerHTML = control.text;
|
||||
}
|
||||
button.appendChild(textSpan);
|
||||
return button;
|
||||
}
|
||||
});
|
||||
|
||||
panel.addControls([
|
||||
zb,
|
||||
new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Path,
|
||||
{title:'Draw a feature', text: 'Draw'}),
|
||||
new OpenLayers.Control.ZoomToMaxExtent({
|
||||
title:"Zoom to the max extent",
|
||||
text: "World"
|
||||
})
|
||||
]);
|
||||
|
||||
nav = new OpenLayers.Control.NavigationHistory({
|
||||
previousOptions: {
|
||||
title: "Go to previous map position",
|
||||
text: "Prev"
|
||||
},
|
||||
nextOptions: {
|
||||
title: "Go to next map position",
|
||||
text: "Next"
|
||||
},
|
||||
displayClass: "navHistory"
|
||||
});
|
||||
// parent control must be added to the map
|
||||
map.addControl(nav);
|
||||
panel.addControls([nav.next, nav.previous]);
|
||||
|
||||
map.addControl(panel);
|
||||
|
||||
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
|
||||
}
|
||||
@@ -31,26 +31,13 @@
|
||||
font-size:1em;
|
||||
text-decoration:underline;
|
||||
}
|
||||
a.accesskey {
|
||||
color: white;
|
||||
}
|
||||
a.accesskey:focus {
|
||||
color: #436976;
|
||||
}
|
||||
a.zoom {
|
||||
padding-right: 20px;
|
||||
}
|
||||
</style>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
var map = null;
|
||||
function init(){
|
||||
var options = {
|
||||
controls: [
|
||||
new OpenLayers.Control.KeyboardDefaults({
|
||||
observeElement: 'map'
|
||||
})
|
||||
]
|
||||
controls: [new OpenLayers.Control.KeyboardDefaults()]
|
||||
};
|
||||
map = new OpenLayers.Map('map', options);
|
||||
var wms = new OpenLayers.Layer.WMS(
|
||||
@@ -70,37 +57,31 @@
|
||||
keyboard, pan, panning, zoom, zooming, accesskey
|
||||
</div>
|
||||
|
||||
<a class="accesskey"
|
||||
href=""
|
||||
accesskey="1"
|
||||
onclick="document.getElementById('map').focus(); return false;">
|
||||
Go to map
|
||||
</a>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrate the KeyboardDefaults control and how to use links
|
||||
with Access Keys to navigate the map with the keyboard.
|
||||
Demonstrate how to use the KeyboardDefaults option parameter for layer types.
|
||||
</p>
|
||||
|
||||
<a class="zoom"
|
||||
href="javascript: void map.zoomIn();"
|
||||
accesskey="i">
|
||||
zoom <em>i</em>n</a>
|
||||
<a class="zoom"
|
||||
href="javascript: void map.zoomOut();"
|
||||
accesskey="o">
|
||||
zoom <em>o</em>ut</a>
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<a href="javascript: void map.zoomOut();"
|
||||
accesskey="o">
|
||||
zoom <em>o</em>ut
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="javascript: void map.pan(0, -map.getSize().h / 4);"
|
||||
accesskey="n">
|
||||
pan <em>n</em>orth
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="javascript: void map.zoomIn();"
|
||||
accesskey="i">
|
||||
zoom <em>i</em>n
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
@@ -109,7 +90,7 @@
|
||||
pan <em>w</em>est
|
||||
</a>
|
||||
</td>
|
||||
<td id="map" class="smallmap" tabindex="0"></td>
|
||||
<td id="map" class="smallmap"></td>
|
||||
<td>
|
||||
<a href="javascript: void map.pan(map.getSize().w / 4, 0);"
|
||||
accesskey="e">
|
||||
@@ -132,9 +113,9 @@
|
||||
|
||||
<div id="docs">
|
||||
<p>Navigate the map in one of three ways:</p>
|
||||
<ol>
|
||||
<li>Use Access Key "1" (alt + 1) to focus the map element, and
|
||||
use following keys to pan and zoom:
|
||||
<ul>
|
||||
<li>Click on the named links to zoom and pan</li>
|
||||
<li>Use following keys to pan and zoom:
|
||||
<ul>
|
||||
<li>+ (zoom in)</li>
|
||||
<li>- (zoom out)</li>
|
||||
@@ -143,12 +124,8 @@
|
||||
<li>left-arrow (pan east)</li>
|
||||
<li>right-arrow (pan west)</li>
|
||||
</ul>
|
||||
See <a href=http://en.wikipedia.org/wiki/Access_key>wikipedia</a> for
|
||||
more detail about Access Keys.
|
||||
</li>
|
||||
<li>Navigate to pan and zoom links using the "tab" key, and
|
||||
press "enter" to pan and zoom</li>
|
||||
<li>If Access Keys work for links in your browser, use:
|
||||
<li>If access keys work for links in your browser, use:
|
||||
<ul>
|
||||
<li>i (zoom in)</li>
|
||||
<li>o (zoom out)</li>
|
||||
@@ -158,7 +135,7 @@
|
||||
<li>w (pan west)</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ol>
|
||||
</ul>
|
||||
<p>
|
||||
|
||||
This is an example of using alternate methods to control panning and zooming. This approach uses map.pan() and map.zoom(). You'll note that to pan, additional math is necessary along with map.size() in order to set the distance to pan.
|
||||
|
||||
@@ -6,15 +6,16 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers All Overlays with Google and OSM</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="../theme/default/google.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script src="http://maps.google.com/maps/api/js?v=3&sensor=false"></script>
|
||||
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="all-overlays-google.js"></script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">All Overlays with Google and OSM</h1>
|
||||
<div id="tags">
|
||||
overlay, baselayer, google, osm, openstreetmap, light
|
||||
overlay, baselayer, google, osm, openstreetmap
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Using the Google and OSM layers as overlays.
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
<body onload="init()">
|
||||
<h1 id="title">OpenLayers Overlays Only Example</h1>
|
||||
<div id="tags">
|
||||
overlay, baselayer, light
|
||||
overlay, baselayer
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Demonstrates a map with overlays only.
|
||||
|
||||
@@ -131,14 +131,14 @@ Animator.prototype = {
|
||||
str += ">";
|
||||
return str;
|
||||
}
|
||||
};
|
||||
}
|
||||
// merge the properties of two objects
|
||||
Animator.applyDefaults = function(defaults, prefs) {
|
||||
prefs = prefs || {};
|
||||
var prop, result = {};
|
||||
for (prop in defaults) result[prop] = prefs[prop] !== undefined ? prefs[prop] : defaults[prop];
|
||||
return result;
|
||||
};
|
||||
}
|
||||
// make an array from any object
|
||||
Animator.makeArray = function(o) {
|
||||
if (o == null) return [];
|
||||
@@ -146,7 +146,7 @@ Animator.makeArray = function(o) {
|
||||
var result = [];
|
||||
for (var i=0; i<o.length; i++) result[i] = o[i];
|
||||
return result;
|
||||
};
|
||||
}
|
||||
// convert a dash-delimited-property to a camelCaseProperty (c/o Prototype, thanks Sam!)
|
||||
Animator.camelize = function(string) {
|
||||
var oStringList = string.split('-');
|
||||
@@ -161,27 +161,27 @@ Animator.camelize = function(string) {
|
||||
camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
|
||||
}
|
||||
return camelizedString;
|
||||
};
|
||||
}
|
||||
// syntactic sugar for creating CSSStyleSubjects
|
||||
Animator.apply = function(el, style, options) {
|
||||
if (style instanceof Array) {
|
||||
return new Animator(options).addSubject(new CSSStyleSubject(el, style[0], style[1]));
|
||||
}
|
||||
return new Animator(options).addSubject(new CSSStyleSubject(el, style));
|
||||
};
|
||||
}
|
||||
// make a transition function that gradually accelerates. pass a=1 for smooth
|
||||
// gravitational acceleration, higher values for an exaggerated effect
|
||||
Animator.makeEaseIn = function(a) {
|
||||
return function(state) {
|
||||
return Math.pow(state, a*2);
|
||||
}
|
||||
};
|
||||
}
|
||||
// as makeEaseIn but for deceleration
|
||||
Animator.makeEaseOut = function(a) {
|
||||
return function(state) {
|
||||
return 1 - Math.pow(1 - state, a*2);
|
||||
}
|
||||
};
|
||||
}
|
||||
// make a transition function that, like an object with momentum being attracted to a point,
|
||||
// goes past the target then returns
|
||||
Animator.makeElastic = function(bounces) {
|
||||
@@ -189,7 +189,7 @@ Animator.makeElastic = function(bounces) {
|
||||
state = Animator.tx.easeInOut(state);
|
||||
return ((1-Math.cos(state * Math.PI * bounces)) * (1 - state)) + state;
|
||||
}
|
||||
};
|
||||
}
|
||||
// make an Attack Decay Sustain Release envelope that starts and finishes on the same level
|
||||
//
|
||||
Animator.makeADSR = function(attackEnd, decayEnd, sustainEnd, sustainLevel) {
|
||||
@@ -206,7 +206,7 @@ Animator.makeADSR = function(attackEnd, decayEnd, sustainEnd, sustainLevel) {
|
||||
}
|
||||
return sustainLevel * (1 - ((state - sustainEnd) / (1 - sustainEnd)));
|
||||
}
|
||||
};
|
||||
}
|
||||
// make a transition function that, like a ball falling to floor, reaches the target and/
|
||||
// bounces back again
|
||||
Animator.makeBounce = function(bounces) {
|
||||
@@ -215,7 +215,7 @@ Animator.makeBounce = function(bounces) {
|
||||
state = fn(state);
|
||||
return state <= 1 ? state : 2-state;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// pre-made transition functions to use with the 'transition' option
|
||||
Animator.tx = {
|
||||
@@ -233,7 +233,7 @@ Animator.tx = {
|
||||
veryElastic: Animator.makeElastic(3),
|
||||
bouncy: Animator.makeBounce(1),
|
||||
veryBouncy: Animator.makeBounce(3)
|
||||
};
|
||||
}
|
||||
|
||||
// animates a pixel-based style property between two integer values
|
||||
function NumericalStyleSubject(els, property, from, to, units) {
|
||||
@@ -271,7 +271,7 @@ NumericalStyleSubject.prototype = {
|
||||
inspect: function() {
|
||||
return "\t" + this.property + "(" + this.from + this.units + " to " + this.to + this.units + ")\n";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// animates a colour based style property between two hex values
|
||||
function ColorStyleSubject(els, property, from, to) {
|
||||
@@ -313,7 +313,7 @@ ColorStyleSubject.prototype = {
|
||||
inspect: function() {
|
||||
return "\t" + this.property + "(" + this.origFrom + " to " + this.origTo + ")\n";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// return a properly formatted 6-digit hex colour spec, or false
|
||||
ColorStyleSubject.parseColor = function(string) {
|
||||
@@ -336,14 +336,14 @@ ColorStyleSubject.parseColor = function(string) {
|
||||
return '#' + match[1];
|
||||
}
|
||||
return false;
|
||||
};
|
||||
}
|
||||
// convert a number to a 2 digit hex string
|
||||
ColorStyleSubject.toColorPart = function(number) {
|
||||
if (number > 255) number = 255;
|
||||
var digits = number.toString(16);
|
||||
if (number < 16) return '0' + digits;
|
||||
return digits;
|
||||
};
|
||||
}
|
||||
ColorStyleSubject.parseColor.rgbRe = /^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i;
|
||||
ColorStyleSubject.parseColor.hexRe = /^\#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;
|
||||
|
||||
@@ -367,7 +367,7 @@ DiscreteStyleSubject.prototype = {
|
||||
inspect: function() {
|
||||
return "\t" + this.property + "(" + this.from + " to " + this.to + " @ " + this.threshold + ")\n";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// animates between two styles defined using CSS.
|
||||
// if style1 and style2 are present, animate between them, if only style1
|
||||
@@ -482,7 +482,7 @@ CSSStyleSubject.prototype = {
|
||||
}
|
||||
return str;
|
||||
}
|
||||
};
|
||||
}
|
||||
// get the current value of a css property,
|
||||
CSSStyleSubject.getStyle = function(el, property){
|
||||
var style;
|
||||
@@ -497,7 +497,7 @@ CSSStyleSubject.getStyle = function(el, property){
|
||||
style = el.currentStyle[property];
|
||||
}
|
||||
return style || el.style[property]
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
CSSStyleSubject.ruleRe = /^\s*([a-zA-Z\-]+)\s*:\s*(\S(.+\S)?)\s*$/;
|
||||
@@ -604,7 +604,7 @@ AnimatorChain.prototype = {
|
||||
this.animators[this.current].seekTo(1);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// an Accordion is a class that creates and controls a number of Animators. An array of elements is passed in,
|
||||
// and for each element an Animator and a activator button is created. When an Animator's activator button is
|
||||
@@ -667,4 +667,4 @@ Accordion.prototype = {
|
||||
document.location.hash = this.rememberanceTexts[section];
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -7,17 +7,20 @@
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="../lib/OpenLayers/Layer/ArcGISCache.js" type="text/javascript"></script>
|
||||
|
||||
<!-- This is to simplify making the JSONP request for this example -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var map,
|
||||
layerURL = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer";
|
||||
|
||||
function init() {
|
||||
var jsonp = new OpenLayers.Protocol.Script();
|
||||
jsonp.createRequest(layerURL, {
|
||||
f: 'json',
|
||||
pretty: 'true'
|
||||
}, initMap);
|
||||
var jsonp_url = layerURL + '?f=json&pretty=true&callback=?';
|
||||
$.getJSON(jsonp_url, function(data) {
|
||||
initMap(data);
|
||||
});
|
||||
}
|
||||
|
||||
function initMap(layerInfo){
|
||||
@@ -43,7 +46,8 @@
|
||||
resolutions: baseLayer.resolutions,
|
||||
numZoomLevels: baseLayer.numZoomLevels,
|
||||
tileSize: baseLayer.tileSize,
|
||||
displayProjection: baseLayer.displayProjection
|
||||
displayProjection: baseLayer.displayProjection,
|
||||
StartBounds: baseLayer.initialExtent
|
||||
});
|
||||
map.addLayers([baseLayer]);
|
||||
|
||||
@@ -89,7 +93,7 @@
|
||||
<p>
|
||||
This method automatically configures the layer using the capabilities object
|
||||
generated by the server itself. This page shows how to construct the url for the server capabilities object,
|
||||
retrieve it using JSONP, and pass it in during construction. Note that in this case,
|
||||
retrieve it using JSONP (and jQuery), and pass it in during construction. Note that in this case,
|
||||
the layer is constructed before the map. This approach greatly simplifies the
|
||||
configuration of your map, and works best when all your tiles / overlays are similarly laid out.
|
||||
If you are using a live AGS map server for your layer, it can be helpful to check your
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<h1 id="title">Attribution Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
copyright, watermark, logo, attribution, light
|
||||
copyright, watermark, logo, attribution
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>Basic Bing Tiles with a Subset of Resolutions Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<h1 id="title">Basic Bing Tiles Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
bing tiles, light
|
||||
bing tiles
|
||||
</div>
|
||||
|
||||
<div id="shortdesc">Use Bing with direct tile access</div>
|
||||
|
||||
@@ -23,9 +23,7 @@ var hybrid = new OpenLayers.Layer.Bing({
|
||||
|
||||
map.addLayers([road, aerial, hybrid]);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
// Zoom level numbering depends on metadata from Bing, which is not yet loaded.
|
||||
var zoom = map.getZoomForResolution(76.43702827453613);
|
||||
map.setCenter(new OpenLayers.LonLat(-71.147, 42.472).transform(
|
||||
new OpenLayers.Projection("EPSG:4326"),
|
||||
map.getProjectionObject()
|
||||
), zoom);
|
||||
), 11);
|
||||
|
||||
@@ -7,37 +7,35 @@
|
||||
<title>OpenLayers Bing Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&mkt=en-us"></script>
|
||||
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script>
|
||||
|
||||
// API key for http://openlayers.org. Please get your own at
|
||||
// http://bingmapsportal.com/ and use that instead.
|
||||
var apiKey = "AqTGBsziZHIJYYxgivLBf0hVdrAk9mWO5cQcb8Yux8sW5M8c8opEC2lZqKR1ZZXf";
|
||||
var map;
|
||||
|
||||
function init() {
|
||||
|
||||
function init(){
|
||||
// setting restrictedExtent so that we can use the
|
||||
// VirtualEarth-layers, see e.g.
|
||||
// http://dev.openlayers.org/apidocs/files/OpenLayers/Layer/VirtualEarth-js.html
|
||||
var restrictedExtent = new OpenLayers.Bounds(-180, -90,
|
||||
180, 90);
|
||||
|
||||
map = new OpenLayers.Map("map");
|
||||
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
|
||||
var road = new OpenLayers.Layer.Bing({
|
||||
name: "Road",
|
||||
key: apiKey,
|
||||
type: "Road"
|
||||
var shaded = new OpenLayers.Layer.VirtualEarth("Shaded", {
|
||||
type: VEMapStyle.Shaded
|
||||
});
|
||||
var hybrid = new OpenLayers.Layer.Bing({
|
||||
name: "Hybrid",
|
||||
key: apiKey,
|
||||
type: "AerialWithLabels"
|
||||
var hybrid = new OpenLayers.Layer.VirtualEarth("Hybrid", {
|
||||
type: VEMapStyle.Hybrid
|
||||
});
|
||||
var aerial = new OpenLayers.Layer.Bing({
|
||||
name: "Aerial",
|
||||
key: apiKey,
|
||||
type: "Aerial"
|
||||
var aerial = new OpenLayers.Layer.VirtualEarth("Aerial", {
|
||||
type: VEMapStyle.Aerial
|
||||
});
|
||||
|
||||
map.addLayers([road, hybrid, aerial]);
|
||||
map.addLayers([shaded, hybrid, aerial]);
|
||||
|
||||
map.setCenter(new OpenLayers.LonLat(-110, 45), 3);
|
||||
}
|
||||
@@ -48,7 +46,7 @@
|
||||
<h1 id="title">Bing Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
Bing, Microsoft, Virtual Earth, light
|
||||
Bing, Microsoft, Virtual Earth
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Bootstraped OpenLayers</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css">
|
||||
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
padding-top: 60px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
#map {
|
||||
height: 350px;
|
||||
background-color: #eee;
|
||||
}
|
||||
.olControlAttribution {
|
||||
bottom: 3px;
|
||||
left: 10px;
|
||||
line-height: 9px;
|
||||
font-size: 9px;
|
||||
color: #ccc;
|
||||
}
|
||||
</style>
|
||||
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-responsive.min.css" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||
<div class="navbar-inner">
|
||||
<div class="container-fluid">
|
||||
<a class="brand" href="/">openlayers.org</a>
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<a href="./">
|
||||
<i class="icon-globe icon-white"></i> examples
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid" ng-controller="AlertsCtrl">
|
||||
<div class="row-fluid">
|
||||
<div class="span7">
|
||||
<div id="map"></div>
|
||||
</div>
|
||||
<div class="span5">
|
||||
<h4>OpenLayers and Bootstrap</h4>
|
||||
<p>
|
||||
This example demonstrates an OpenLayers map in a fluid
|
||||
layout using Bootstrap CSS.
|
||||
</p>
|
||||
<p>
|
||||
Note that the OpenLayers stylesheet is loaded before
|
||||
Bootstrap. The Bootstrap CSS sets the maximum width for
|
||||
images to be 100% (of their containing element).
|
||||
</p>
|
||||
<pre><code>img {
|
||||
max-width: 100%;
|
||||
}
|
||||
</code></pre>
|
||||
<p>
|
||||
This causes problems for images that you might want to be
|
||||
bigger than their containing element (e.g. big tile in small
|
||||
map viewport). To overcome this, the OpenLayers CSS
|
||||
overrides this <code>max-width</code> setting. If you are
|
||||
not loading the OpenLayers default CSS or are having trouble
|
||||
with tile sizing and Bootstrap, add the following to your
|
||||
markup:
|
||||
</p>
|
||||
<pre><code><style>
|
||||
img.olTileImage {
|
||||
max-width: none;
|
||||
}
|
||||
</style></code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="bootstrap.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
31
examples/bootstrap.js
vendored
31
examples/bootstrap.js
vendored
@@ -1,31 +0,0 @@
|
||||
var map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
projection: "EPSG:900913",
|
||||
layers: [
|
||||
new OpenLayers.Layer.XYZ(
|
||||
"Imagery",
|
||||
[
|
||||
"http://oatile1.mqcdn.com/naip/${z}/${x}/${y}.png",
|
||||
"http://oatile2.mqcdn.com/naip/${z}/${x}/${y}.png",
|
||||
"http://oatile3.mqcdn.com/naip/${z}/${x}/${y}.png",
|
||||
"http://oatile4.mqcdn.com/naip/${z}/${x}/${y}.png"
|
||||
],
|
||||
{
|
||||
attribution: "Tiles Courtesy of <a href='http://open.mapquest.co.uk/' target='_blank'>MapQuest</a>. Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency. <img src='http://developer.mapquest.com/content/osm/mq_logo.png' border='0'>",
|
||||
transitionEffect: "resize",
|
||||
wrapDateLine: true
|
||||
}
|
||||
)
|
||||
],
|
||||
controls: [
|
||||
new OpenLayers.Control.Navigation({
|
||||
dragPanOptions: {
|
||||
enableKinetic: true
|
||||
}
|
||||
}),
|
||||
new OpenLayers.Control.Zoom(),
|
||||
new OpenLayers.Control.Attribution()
|
||||
],
|
||||
center: [0, 0],
|
||||
zoom: 1
|
||||
});
|
||||
@@ -45,7 +45,7 @@
|
||||
<h1 id="title">Boxes Example Vector</h1>
|
||||
|
||||
<div id="tags">
|
||||
box, vector, annotation, light
|
||||
box, vector, annotation
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0",
|
||||
{layers: 'basic'}, {'buffer':4} );
|
||||
map.addLayer(layer);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher())
|
||||
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
|
||||
}
|
||||
</script>
|
||||
@@ -37,7 +37,7 @@
|
||||
<h1 id="title">Buffer Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
buffer, performance, tile, light
|
||||
buffer, performance, tile
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
<div id="docs">
|
||||
Use the buffer property to control how many tiles are included
|
||||
outside the visible map area. Default is 0.
|
||||
outside the visible map area. Default is 2.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers Cache Read Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="cache-read.js"></script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Cache Read Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
mobile, local storage, persistence, cache, html5
|
||||
</div>
|
||||
|
||||
<div id="shortdesc">Caching viewed tiles</div>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="status"></div>
|
||||
<br>
|
||||
<div id="docs">
|
||||
<p>This example shows how to use the CacheRead control to fetch cached
|
||||
tiles from the browser's Local Storage. As you pan and zoom the map,
|
||||
you can see how the number of cache hits incrases as you browse regions
|
||||
that are available in the cache.</p>
|
||||
<p>To fill the cache with tiles, switch to the
|
||||
<a href="cache-write.html">cache-write.html</a> example.</p>
|
||||
<p>See <a href="cache-read.js">cache-read.js</a> for the source
|
||||
code.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,36 +0,0 @@
|
||||
var map, cacheRead;
|
||||
function init() {
|
||||
map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
projection: "EPSG:900913",
|
||||
layers: [
|
||||
new OpenLayers.Layer.WMS("OSGeo", "http://vmap0.tiles.osgeo.org/wms/vmap0", {
|
||||
layers: "basic"
|
||||
}, {
|
||||
eventListeners: {
|
||||
tileloaded: updateHits
|
||||
}
|
||||
})
|
||||
],
|
||||
center: [0, 0],
|
||||
zoom: 1
|
||||
});
|
||||
cacheRead = new OpenLayers.Control.CacheRead();
|
||||
map.addControl(cacheRead);
|
||||
|
||||
|
||||
|
||||
// User interface
|
||||
var status = document.getElementById("status"),
|
||||
hits = 0;
|
||||
|
||||
// update the number of cached tiles and detect local storage support
|
||||
function updateHits(evt) {
|
||||
hits += evt.tile.url.substr(0, 5) === "data:";
|
||||
if (window.localStorage) {
|
||||
status.innerHTML = hits + " cache hits.";
|
||||
} else {
|
||||
status.innerHTML = "Local storage not supported. Try a different browser.";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers Cache Write Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script>OpenLayers.Console = window.console || OpenLayers.Console;</script>
|
||||
<script src="cache-write.js"></script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Cache Write Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
mobile, local storage, persistence, cache, html5
|
||||
</div>
|
||||
|
||||
<div id="shortdesc">Caching viewed tiles</div>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div>Cache status: <span id="status"></span></div>
|
||||
<div><button id="clear">Clear cache</button></div>
|
||||
<br>
|
||||
<div id="docs">
|
||||
<p>This example shows how to use the CacheWrite control to cache the
|
||||
tiles. Caching is turned on, and as you pan and zoom the map, every
|
||||
tile that is loaded is also copied to the browsers Local Storage.</p>
|
||||
<p>To use the cached tiles, switch to the
|
||||
<a href="cache-read.html">cache-read.html</a> example.</p>
|
||||
<p>See <a href="cache-write.js">cache-write.js</a> for the source
|
||||
code.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,46 +0,0 @@
|
||||
// Use proxy to get same origin URLs for tiles that don't support CORS.
|
||||
OpenLayers.ProxyHost = "proxy.cgi?url=";
|
||||
|
||||
var map, cacheWrite;
|
||||
|
||||
function init() {
|
||||
map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
projection: "EPSG:900913",
|
||||
layers: [
|
||||
new OpenLayers.Layer.WMS(
|
||||
"OSGeo", "http://vmap0.tiles.osgeo.org/wms/vmap0",
|
||||
{layers: "basic"}
|
||||
)
|
||||
],
|
||||
center: [0, 0],
|
||||
zoom: 1
|
||||
});
|
||||
cacheWrite = new OpenLayers.Control.CacheWrite({
|
||||
autoActivate: true,
|
||||
imageFormat: "image/jpeg",
|
||||
eventListeners: {
|
||||
cachefull: function() { status.innerHTML = "Cache full."; }
|
||||
}
|
||||
});
|
||||
map.addControl(cacheWrite);
|
||||
|
||||
|
||||
|
||||
// User interface
|
||||
var status = document.getElementById("status");
|
||||
document.getElementById("clear").onclick = function() {
|
||||
OpenLayers.Control.CacheWrite.clearCache();
|
||||
updateStatus();
|
||||
};
|
||||
|
||||
// update the number of cached tiles and detect local storage support
|
||||
map.layers[0].events.on({'tileloaded': updateStatus});
|
||||
function updateStatus() {
|
||||
if (window.localStorage) {
|
||||
status.innerHTML = localStorage.length + " entries in cache.";
|
||||
} else {
|
||||
status.innerHTML = "Local storage not supported. Try a different browser.";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<title>OpenLayers Canvas Hit Detection Example</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0;">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
|
||||
@@ -5,7 +5,12 @@ function init() {
|
||||
map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
projection: new OpenLayers.Projection("EPSG:900913"),
|
||||
displayProjection: new OpenLayers.Projection("EPSG:4326")
|
||||
displayProjection: new OpenLayers.Projection("EPSG:4326"),
|
||||
units: "m",
|
||||
maxResolution: 156543.0339,
|
||||
maxExtent: new OpenLayers.Bounds(
|
||||
-20037508, -20037508, 20037508, 20037508
|
||||
)
|
||||
});
|
||||
|
||||
var g = new OpenLayers.Layer.Google("Google Layer", {
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Reading Features From CartoDB using GeoJSON</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="title">Reading Features From CartoDB using GeoJSON</h1>
|
||||
<div id="tags">
|
||||
protocol, script, cartodb
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Demonstrates how to load features on OpenLayers using CartoDB SQL API.
|
||||
</p>
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs">
|
||||
<p>
|
||||
<a href="http://cartodb.com/">CartoDB</a> is an Open Source
|
||||
Geopatial Database on the cloud. It allows you to import your
|
||||
data in shapefiles, KML, OpenStreeMap files, CSV, etc. and
|
||||
then analyze and visualize it. Internally CartoDB uses PostGIS
|
||||
2.0 so all functionality in PostGIS can be used straight
|
||||
away. CartoDB exposes two APIS. One
|
||||
to <a href="http://developers.cartodb.com/documentation/cartodb-apis.html#maps_api">generate maps</a>
|
||||
as tiles with interactivity, and another <a href="http://developers.cartodb.com/documentation/cartodb-apis.html#sql_api">SQL API</a>
|
||||
to retrieve vector data using among other formats, GeoJSON. In
|
||||
this example we do a very simple query to obtain all protected
|
||||
areas in Costa Rica from a public table. You can adapt the SQL
|
||||
to include where clauses or complicate geospatial queries.
|
||||
</p>
|
||||
<p>
|
||||
View the source code of this page to see how this is done. And
|
||||
check the table on CartoDB
|
||||
for <a href="https://examples.cartodb.com/tables/costa_rica_pa/public#/map">Protected Areas in Costa Rica</a>
|
||||
</p>
|
||||
</div>
|
||||
<script>
|
||||
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: "http://examples.cartodb.com/api/v2/sql",
|
||||
params: {
|
||||
q: "select * from costa_rica_pa LIMIT 50",
|
||||
format: "geojson"
|
||||
},
|
||||
format: new OpenLayers.Format.GeoJSON({
|
||||
ignoreExtraDims: true
|
||||
}),
|
||||
callbackKey: "callback"
|
||||
}),
|
||||
eventListeners: {
|
||||
"featuresadded": function() {
|
||||
this.map.zoomToExtent(this.getDataExtent());
|
||||
}
|
||||
}
|
||||
})
|
||||
]
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -34,7 +34,7 @@
|
||||
},
|
||||
|
||||
trigger: function(e) {
|
||||
var lonlat = map.getLonLatFromPixel(e.xy);
|
||||
var lonlat = map.getLonLatFromViewPortPx(e.xy);
|
||||
alert("You clicked near " + lonlat.lat + " N, " +
|
||||
+ lonlat.lon + " E");
|
||||
}
|
||||
@@ -70,12 +70,12 @@
|
||||
|
||||
<div id="tags">
|
||||
click control, double, doubleclick, double-click, event, events,
|
||||
propagation, light
|
||||
propagation
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
This example shows the use of the click handler and
|
||||
getLonLatFromPixel functions to trigger events on mouse click.
|
||||
getLonLatFromViewPortPx functions to trigger events on mouse click.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers Client Zoom Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css"/>
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script src="../lib/Firebug/firebug.js"></script>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="clientzoom.js"></script>
|
||||
<style>
|
||||
.olControlAttribution {
|
||||
bottom: 5px;
|
||||
}
|
||||
#map {
|
||||
width: 600px;
|
||||
height: 400px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body onload="init();">
|
||||
<h1 id="title">Client Zoom</h1>
|
||||
<div id="tags">
|
||||
client zoom continuous zooming
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
|
||||
This example demonstrates the <strong>"client zoom"</strong>
|
||||
functionality, where OpenLayers stretches the layer div when the
|
||||
resolution is not supported by that layer's tile service.
|
||||
|
||||
</p>
|
||||
|
||||
<div id="map"></div>
|
||||
|
||||
<div id="docs">
|
||||
|
||||
<p>
|
||||
|
||||
The map of this example is configured with 22 resolutions, while
|
||||
the OSM tile server supports the first 19 resolutions only. When
|
||||
the zoom level is 19, 20 or 21 "client zoom" is applied to the OSM
|
||||
layer, i.e. the OSM layer div is stretched as necessary. The map's
|
||||
initial zoom is 18. So if you zoom in using the zoom bar's "+"
|
||||
button you'll effectively trigger "client zoom".
|
||||
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
||||
For demonstration purpose the map of this example has
|
||||
<code>fractionalZoom</code> set to true. So "client zoom" also
|
||||
applies if you choose arbitrary zoom levels using the slider of the
|
||||
zoom bar, or shift-drag boxes to zoom to arbitrary extents.
|
||||
"client zoom" therefore allows continous zooming for tiled layers.
|
||||
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
||||
Enabling "client zoom" on a layer is done by passing
|
||||
<code>serverResolutions</code> to the layer constructor.
|
||||
<code>serverResolutions</code> is the list of resolutions supported
|
||||
by the tile service. See the <a href="clientzoom.js"
|
||||
target="_blank"> clientzoom.js source</a>.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,39 +0,0 @@
|
||||
var map;
|
||||
|
||||
function init() {
|
||||
|
||||
map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
projection: "EPSG:900913",
|
||||
controls: [],
|
||||
fractionalZoom: true
|
||||
});
|
||||
|
||||
var osm = new OpenLayers.Layer.OSM(null, null, {
|
||||
resolutions: [156543.03390625, 78271.516953125, 39135.7584765625,
|
||||
19567.87923828125, 9783.939619140625, 4891.9698095703125,
|
||||
2445.9849047851562, 1222.9924523925781, 611.4962261962891,
|
||||
305.74811309814453, 152.87405654907226, 76.43702827453613,
|
||||
38.218514137268066, 19.109257068634033, 9.554628534317017,
|
||||
4.777314267158508, 2.388657133579254, 1.194328566789627,
|
||||
0.5971642833948135, 0.25, 0.1, 0.05],
|
||||
serverResolutions: [156543.03390625, 78271.516953125, 39135.7584765625,
|
||||
19567.87923828125, 9783.939619140625,
|
||||
4891.9698095703125, 2445.9849047851562,
|
||||
1222.9924523925781, 611.4962261962891,
|
||||
305.74811309814453, 152.87405654907226,
|
||||
76.43702827453613, 38.218514137268066,
|
||||
19.109257068634033, 9.554628534317017,
|
||||
4.777314267158508, 2.388657133579254,
|
||||
1.194328566789627, 0.5971642833948135],
|
||||
transitionEffect: 'resize'
|
||||
});
|
||||
|
||||
map.addLayers([osm]);
|
||||
map.addControls([
|
||||
new OpenLayers.Control.Navigation(),
|
||||
new OpenLayers.Control.Attribution(),
|
||||
new OpenLayers.Control.PanZoomBar()
|
||||
]);
|
||||
map.setCenter(new OpenLayers.LonLat(659688.852138, 5710701.2962197), 18);
|
||||
}
|
||||
@@ -8,16 +8,6 @@
|
||||
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
|
||||
<style>
|
||||
/* round corners of layer switcher, and make it transparent */
|
||||
.olControlLayerSwitcher .layersDiv {
|
||||
border-radius: 10px 0 0 10px;
|
||||
opacity: 0.75;
|
||||
filter: alpha(opacity=75);
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
var map;
|
||||
|
||||
@@ -37,7 +37,7 @@ var map = new OpenLayers.Map({
|
||||
function loadFeatures(data) {
|
||||
var features = new OpenLayers.Format.GeoJSON().read(data);
|
||||
states.addFeatures(features);
|
||||
}
|
||||
};
|
||||
|
||||
// update filter and redraw when form is submitted
|
||||
var cql = document.getElementById("cql");
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>OpenLayers Script Protocol XML Example</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="title">Script Protocol With XML</h1>
|
||||
<div id="tags">
|
||||
protocol, script, cross origin, xml, advanced
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Demonstrates how, with a custom parseFeatures method, the script protocol can be used with YQL for cross-origin loading of files in any of the XML formats supported by OpenLayers.
|
||||
</p>
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs">
|
||||
<p>
|
||||
YQL can wrap a jsonp callback around an XML file, which effectively means Yahoo's servers are acting as a proxy for cross-origin feature loading. This example uses a GPX file, but the same technique can be used for other formats such as KML.
|
||||
</p>
|
||||
<p>
|
||||
View the <a href="cross-origin-xml.js" target="_blank">cross-origin-xml.js</a>
|
||||
source to see how this is done
|
||||
</p>
|
||||
</div>
|
||||
<script src="cross-origin-xml.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,25 +0,0 @@
|
||||
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: "http://query.yahooapis.com/v1/public/yql",
|
||||
params: {
|
||||
q: "select * from xml where url='http://www.topografix.com/fells_loop.gpx'"
|
||||
},
|
||||
format: new OpenLayers.Format.GPX(),
|
||||
parseFeatures: function(data) {
|
||||
return this.format.read(data.results[0]);
|
||||
}
|
||||
}),
|
||||
eventListeners: {
|
||||
"featuresadded": function () {
|
||||
this.map.zoomToExtent(this.getDataExtent());
|
||||
}
|
||||
}
|
||||
})
|
||||
]
|
||||
});
|
||||
@@ -50,7 +50,7 @@
|
||||
<h1 id="title">Custom Control Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
control, panel, rectangle, light
|
||||
control, panel, rectangle
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB |
Binary file not shown.
@@ -31,7 +31,7 @@ function updateOutput(event) {
|
||||
map.layers[1].events.on({
|
||||
sketchmodified: updateOutput,
|
||||
sketchcomplete: updateOutput
|
||||
});
|
||||
})
|
||||
|
||||
// add behavior to UI elements
|
||||
function toggleControl(element) {
|
||||
|
||||
38
examples/doubleSetCenter.html
Normal file
38
examples/doubleSetCenter.html
Normal file
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers Double Set Center Example</title>
|
||||
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="title">Double Set Center Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
center, centering, cleanup
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrate the behavior of two calls to set the center after instantiating the layer object.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<script defer="defer" type="text/javascript">
|
||||
var map = new OpenLayers.Map('map');
|
||||
var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} );
|
||||
map.addLayer(wms);
|
||||
map.setCenter(new OpenLayers.LonLat(100,10));
|
||||
map.setCenter(new OpenLayers.LonLat(1,1));
|
||||
</script>
|
||||
|
||||
<div id="docs"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -33,27 +33,18 @@
|
||||
var pointLayer = new OpenLayers.Layer.Vector("Point Layer");
|
||||
var lineLayer = new OpenLayers.Layer.Vector("Line Layer");
|
||||
var polygonLayer = new OpenLayers.Layer.Vector("Polygon Layer");
|
||||
var boxLayer = new OpenLayers.Layer.Vector("Box layer");
|
||||
|
||||
map.addLayers([wmsLayer, pointLayer, lineLayer, polygonLayer, boxLayer]);
|
||||
map.addLayers([wmsLayer, pointLayer, lineLayer, polygonLayer]);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.addControl(new OpenLayers.Control.MousePosition());
|
||||
|
||||
drawControls = {
|
||||
point: new OpenLayers.Control.DrawFeature(pointLayer,
|
||||
OpenLayers.Handler.Point),
|
||||
OpenLayers.Handler.Point),
|
||||
line: new OpenLayers.Control.DrawFeature(lineLayer,
|
||||
OpenLayers.Handler.Path),
|
||||
OpenLayers.Handler.Path),
|
||||
polygon: new OpenLayers.Control.DrawFeature(polygonLayer,
|
||||
OpenLayers.Handler.Polygon),
|
||||
box: new OpenLayers.Control.DrawFeature(boxLayer,
|
||||
OpenLayers.Handler.RegularPolygon, {
|
||||
handlerOptions: {
|
||||
sides: 4,
|
||||
irregular: true
|
||||
}
|
||||
}
|
||||
)
|
||||
OpenLayers.Handler.Polygon)
|
||||
};
|
||||
|
||||
for(var key in drawControls) {
|
||||
@@ -89,11 +80,11 @@
|
||||
<h1 id="title">OpenLayers Draw Feature Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
point, line, linestring, polygon, box, digitizing, geometry, draw, drag
|
||||
point, line, linestring, polygon, digitizing, geometry, draw, drag
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrate on-screen digitizing tools for point, line, polygon and box creation.
|
||||
Demonstrate on-screen digitizing tools for point, line, and polygon creation.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
@@ -116,10 +107,6 @@
|
||||
<input type="radio" name="type" value="polygon" id="polygonToggle" onclick="toggleControl(this);" />
|
||||
<label for="polygonToggle">draw polygon</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="type" value="box" id="boxToggle" onclick="toggleControl(this);" />
|
||||
<label for="boxToggle">draw box</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="checkbox" name="allow-pan" value="allow-pan" id="allowPanCheckbox" checked=true onclick="allowPan(this);" />
|
||||
<label for="allowPanCheckbox">allow pan while drawing</label>
|
||||
@@ -132,8 +119,6 @@
|
||||
Double-click to finish drawing.</p>
|
||||
<p>With the polygon drawing control active, click on the map to add the points that make up your
|
||||
polygon. Double-click to finish drawing.</p>
|
||||
<p>With the box drawing control active, click in the map and drag the mouse to get a rectangle. Release
|
||||
the mouse to finish.</p>
|
||||
<p>With any drawing control active, paning the map can still be achieved. Drag the map as
|
||||
usual for that.</p>
|
||||
<p>Hold down the shift key while drawing to activate freehand mode. While drawing lines or polygons
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<title>OpenLayers Undo/Redo Drawing Methods</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0;">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<title>OpenLayers Editing Methods</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0;">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
|
||||
@@ -20,7 +20,7 @@ map.addControl(draw);
|
||||
draw.activate();
|
||||
|
||||
// handle clicks on method links
|
||||
document.getElementById("insertXY").onclick = function() {
|
||||
$("insertXY").onclick = function() {
|
||||
var values = parseInput(
|
||||
window.prompt(
|
||||
"Enter map coordinates for new point (e.g. '-111, 46')", "x, y"
|
||||
@@ -29,8 +29,8 @@ document.getElementById("insertXY").onclick = function() {
|
||||
if (values != null) {
|
||||
draw.insertXY(values[0], values[1]);
|
||||
}
|
||||
};
|
||||
document.getElementById("insertDeltaXY").onclick = function() {
|
||||
}
|
||||
$("insertDeltaXY").onclick = function() {
|
||||
var values = parseInput(
|
||||
window.prompt(
|
||||
"Enter offset values for new point (e.g. '15, -10')", "dx, dy"
|
||||
@@ -39,8 +39,8 @@ document.getElementById("insertDeltaXY").onclick = function() {
|
||||
if (values != null) {
|
||||
draw.insertDeltaXY(values[0], values[1]);
|
||||
}
|
||||
};
|
||||
document.getElementById("insertDirectionLength").onclick = function() {
|
||||
}
|
||||
$("insertDirectionLength").onclick = function() {
|
||||
var values = parseInput(
|
||||
window.prompt(
|
||||
"Enter direction and length offset values for new point (e.g. '-45, 10')", "direction, length"
|
||||
@@ -49,8 +49,8 @@ document.getElementById("insertDirectionLength").onclick = function() {
|
||||
if (values != null) {
|
||||
draw.insertDirectionLength(values[0], values[1]);
|
||||
}
|
||||
};
|
||||
document.getElementById("insertDeflectionLength").onclick = function() {
|
||||
}
|
||||
$("insertDeflectionLength").onclick = function() {
|
||||
var values = parseInput(
|
||||
window.prompt(
|
||||
"Enter deflection and length offset values for new point (e.g. '15, 20')", "deflection, length"
|
||||
@@ -59,13 +59,13 @@ document.getElementById("insertDeflectionLength").onclick = function() {
|
||||
if (values != null) {
|
||||
draw.insertDeflectionLength(values[0], values[1]);
|
||||
}
|
||||
};
|
||||
document.getElementById("cancel").onclick = function() {
|
||||
}
|
||||
$("cancel").onclick = function() {
|
||||
draw.cancel();
|
||||
};
|
||||
document.getElementById("finishSketch").onclick = function() {
|
||||
}
|
||||
$("finishSketch").onclick = function() {
|
||||
draw.finishSketch();
|
||||
};
|
||||
}
|
||||
|
||||
function parseInput(text) {
|
||||
var values = text.split(",");
|
||||
@@ -80,4 +80,4 @@ function parseInput(text) {
|
||||
}
|
||||
}
|
||||
return values;
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -64,7 +64,7 @@
|
||||
}
|
||||
.ex_classes{
|
||||
font-size: .7em;
|
||||
color: gray;
|
||||
color: grey;
|
||||
display: none;
|
||||
}
|
||||
#toc {
|
||||
@@ -169,7 +169,7 @@
|
||||
var words = text.split(/\W+/);
|
||||
var scores = {};
|
||||
for(var i=0; i<words.length; ++i) {
|
||||
var word = words[i].toLowerCase();
|
||||
var word = words[i].toLowerCase()
|
||||
var dict = info.index[word];
|
||||
var updateScores = function() {
|
||||
for(exIndex in dict) {
|
||||
@@ -185,7 +185,7 @@
|
||||
scores[exIndex][word] = count;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
if(dict) {
|
||||
updateScores();
|
||||
} else {
|
||||
@@ -255,7 +255,7 @@
|
||||
template = new jugl.Template("template");
|
||||
target = document.getElementById("examples");
|
||||
listExamples(info.examples);
|
||||
document.getElementById("keywords").onkeyup = inputChange;
|
||||
document.getElementById("keywords").onkeyup = inputChange
|
||||
parseQuery();
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="title">OpenLayers Example</h1>
|
||||
<div id="tags">simple, basic, light</div>
|
||||
<div id="tags">simple, basic</div>
|
||||
<p id="shortdesc">
|
||||
Demonstrate a simple map with an overlay that includes layer switching controls.
|
||||
</p>
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers Feature Events Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<style type="text/css">
|
||||
#result {
|
||||
height: 60px;
|
||||
width: 514px;
|
||||
font-size: smaller;
|
||||
overflow: auto;
|
||||
margin-top: 5px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="title">Feature Events Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
feature, select, hover
|
||||
</div>
|
||||
|
||||
<div id="shortdesc">Feature hover and click events</div>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs">
|
||||
<p id="result">Hover over or click features on the map.</p>
|
||||
|
||||
<p>This example shows how to use the 'featureclick', 'nofeatureclick',
|
||||
'featureover' and 'featureout' events to make features interactive.
|
||||
Look at the <a href="feature-events.js">feature-events.js</a> source
|
||||
code to see how this is done.</p>
|
||||
|
||||
<p>Note that these events can be registered both on the map and on
|
||||
individual layers. If many layers need to be observed, it is
|
||||
recommended to register listeners once on the map for performance
|
||||
reasons.</p>
|
||||
</div>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="feature-events.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,67 +0,0 @@
|
||||
var layerListeners = {
|
||||
featureclick: function(e) {
|
||||
log(e.object.name + " says: " + e.feature.id + " clicked.");
|
||||
return false;
|
||||
},
|
||||
nofeatureclick: function(e) {
|
||||
log(e.object.name + " says: No feature clicked.");
|
||||
}
|
||||
};
|
||||
|
||||
var style = new OpenLayers.StyleMap({
|
||||
'default': OpenLayers.Util.applyDefaults(
|
||||
{label: "${l}", pointRadius: 10},
|
||||
OpenLayers.Feature.Vector.style["default"]
|
||||
),
|
||||
'select': OpenLayers.Util.applyDefaults(
|
||||
{pointRadius: 10},
|
||||
OpenLayers.Feature.Vector.style.select
|
||||
)
|
||||
});
|
||||
var layer1 = new OpenLayers.Layer.Vector("Layer 1", {
|
||||
styleMap: style,
|
||||
eventListeners: layerListeners
|
||||
});
|
||||
layer1.addFeatures([
|
||||
new OpenLayers.Feature.Vector(OpenLayers.Geometry.fromWKT("POINT(-1 -1)"), {l:1}),
|
||||
new OpenLayers.Feature.Vector(OpenLayers.Geometry.fromWKT("POINT(1 1)"), {l:1})
|
||||
]);
|
||||
var layer2 = new OpenLayers.Layer.Vector("Layer 2", {
|
||||
styleMap: style,
|
||||
eventListeners: layerListeners
|
||||
});
|
||||
layer2.addFeatures([
|
||||
new OpenLayers.Feature.Vector(OpenLayers.Geometry.fromWKT("POINT(-1 1)"), {l:2}),
|
||||
new OpenLayers.Feature.Vector(OpenLayers.Geometry.fromWKT("POINT(1 -1)"), {l:2})
|
||||
]);
|
||||
|
||||
var map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
allOverlays: true,
|
||||
layers: [layer1, layer2],
|
||||
zoom: 6,
|
||||
center: [0, 0],
|
||||
eventListeners: {
|
||||
featureover: function(e) {
|
||||
e.feature.renderIntent = "select";
|
||||
e.feature.layer.drawFeature(e.feature);
|
||||
log("Map says: Pointer entered " + e.feature.id + " on " + e.feature.layer.name);
|
||||
},
|
||||
featureout: function(e) {
|
||||
e.feature.renderIntent = "default";
|
||||
e.feature.layer.drawFeature(e.feature);
|
||||
log("Map says: Pointer left " + e.feature.id + " on " + e.feature.layer.name);
|
||||
},
|
||||
featureclick: function(e) {
|
||||
log("Map says: " + e.feature.id + " clicked on " + e.feature.layer.name);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function log(msg) {
|
||||
if (!log.timer) {
|
||||
result.innerHTML = "";
|
||||
log.timer = window.setTimeout(function() {delete log.timer;}, 100);
|
||||
}
|
||||
result.innerHTML += msg + "<br>";
|
||||
}
|
||||
@@ -20,11 +20,11 @@ function startAnimation() {
|
||||
filter.lowerBoundary = currentDate;
|
||||
filter.upperBoundary = new Date(currentDate.getTime() + (span * 1000));
|
||||
filterStrategy.setFilter(filter);
|
||||
currentDate = new Date(currentDate.getTime() + (step * 1000));
|
||||
currentDate = new Date(currentDate.getTime() + (step * 1000))
|
||||
} else {
|
||||
stopAnimation(true);
|
||||
}
|
||||
};
|
||||
}
|
||||
animationTimer = window.setInterval(next, interval * 1000);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,8 +25,9 @@
|
||||
}
|
||||
</style>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="fullScreen.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<body onload="init()">
|
||||
<div id="map"></div>
|
||||
|
||||
<div id="text">
|
||||
@@ -37,7 +38,7 @@
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrate a map that fills the entire browser window.
|
||||
Demonstrate a map that fill the entire browser window.
|
||||
</p>
|
||||
|
||||
<div id="docs">
|
||||
@@ -47,7 +48,6 @@
|
||||
<a href="fullScreen.js" target="_blank">fullScreen.js source</a>
|
||||
to see how this is done.</p>
|
||||
</div>
|
||||
<script src="fullScreen.js"></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,20 +1,15 @@
|
||||
var map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
layers: [
|
||||
new OpenLayers.Layer.OSM("OSM (without buffer)"),
|
||||
new OpenLayers.Layer.OSM("OSM (with buffer)", null, {buffer: 2})
|
||||
],
|
||||
controls: [
|
||||
new OpenLayers.Control.Navigation({
|
||||
dragPanOptions: {
|
||||
enableKinetic: true
|
||||
}
|
||||
}),
|
||||
new OpenLayers.Control.PanZoom(),
|
||||
new OpenLayers.Control.Attribution()
|
||||
],
|
||||
center: [0, 0],
|
||||
zoom: 3
|
||||
});
|
||||
var map;
|
||||
function init(){
|
||||
map = new OpenLayers.Map('map');
|
||||
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0",
|
||||
{layers: 'basic'} );
|
||||
var ol_wms_nobuffer = new OpenLayers.Layer.WMS( "OpenLayers WMS (no tile buffer)",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0",
|
||||
{layers: 'basic'}, {buffer: 0});
|
||||
|
||||
map.addLayers([ol_wms, ol_wms_nobuffer]);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.setCenter(new OpenLayers.LonLat(0, 0), 6);
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>OpenLayers Example For Reading Features From Google Fusion Tables</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="title">Reading Features From A Google Fusion Tables Table</h1>
|
||||
<div id="tags">
|
||||
protocol, script, fusion tables
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Demonstrates how, with a custom read method, the script protocol and GeoJSON format can be used to read features stored in a table on Google Fusion Tables.
|
||||
</p>
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs">
|
||||
<p>
|
||||
Google Fusion Tables can be used to store features, and access them using SQL-type commands over HTTP. Tables are accessed using an authorization key; create/update/delete of tables requires an OAuth2 token, but tables can be public, in which case a simple apikey is all that's needed to read them. Geometries can be stored in Location columns in KML format, but the default output is a JSON object with the geometry as GeoJSON. With a custom read method, this example parses the geometry for each row, storing the other columns as feature attributes. You can of course add a 'where' clause to the SQL statement or change the column names to limit the data retrieved. Point geometries can also be stored in Latitude/Longitude columns, and the script could easily be modified to use those instead.
|
||||
</p>
|
||||
<p>
|
||||
View the <a href="fusiontables.js" target="_blank">fusiontables.js</a>
|
||||
source to see how this is done. You will need to get your own apikey from <a href="https://code.google.com/apis/console">Google's API Console</a> for this to function on your domain.
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://www.google.com/fusiontables/DataSource?docid=1g5DrXcdotCiO_yffkdW0zhuJk0a1i80SPvERHI8">Table used</a>. <a href="https://developers.google.com/fusiontables/docs/v1/using">Fusion Tables Developers Guide</a>
|
||||
</p>
|
||||
</div>
|
||||
<script src="fusiontables.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,51 +0,0 @@
|
||||
// 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());
|
||||
}
|
||||
}
|
||||
})
|
||||
]
|
||||
});
|
||||
@@ -35,7 +35,7 @@
|
||||
function init() {
|
||||
map = new OpenLayers.Map( 'map',
|
||||
{
|
||||
'maxExtent': new OpenLayers.Bounds(0, 0, document.getElementById("map").clientWidth, document.getElementById("map").clientHeight),
|
||||
'maxExtent': new OpenLayers.Bounds(0, 0, $("map").clientWidth, $("map").clientHeight),
|
||||
controls: [],
|
||||
maxResolution: 'auto'}
|
||||
);
|
||||
@@ -74,7 +74,7 @@
|
||||
<div id="shortdesc">Simple acceleration demo; roll a vector feature around
|
||||
on a map. (Only tested on iOS 4.)</div>
|
||||
|
||||
<div id="map" width="100%" height="100%" style="background-color: gray"></div>
|
||||
<div id="map" width="100%" height="100%" style="background-color: grey"></div>
|
||||
<div id="docs">
|
||||
<p>Demo works best when device is locked in portrait mode.</p>
|
||||
</div>
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers GeoJSON Reprojected Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<style type="text/css">
|
||||
.olControlAttribution {
|
||||
left: 2px;
|
||||
right: inherit;
|
||||
bottom: 3px;
|
||||
line-height: 11px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="title">GeoJSON Reprojected</h1>
|
||||
|
||||
<div id="tags">
|
||||
geojson, bing, projection
|
||||
</div>
|
||||
|
||||
<div id="shortdesc">Display GeoJSON data over Bing tiles</div>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p>This example demonstrates the use of GeoJSON over Bing tiles. The
|
||||
GeoJSON vector data is in geographic coordinates (EPSG:4326). The Bing
|
||||
tiles are in a spherical mercator projection (EPSG:900913). By setting
|
||||
the <code>projection</code> property of the GeoJSON layer to the source
|
||||
projection (EPSG:4326), the features are properly displayed over the
|
||||
base layer. In general, the map projection determines how raster or
|
||||
vector data is displayed. The layer projection corresponds to the
|
||||
projection of the data source.
|
||||
<p>See the
|
||||
<a target="_blank" href="geojson-reprojected.js">geojson-reprojected.js</a>
|
||||
source for details on how this is done.</p>
|
||||
</div>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="geojson-reprojected.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,27 +0,0 @@
|
||||
// API key for http://openlayers.org. Please get your own at
|
||||
// http://bingmapsportal.com/ and use that instead.
|
||||
var apiKey = "AqTGBsziZHIJYYxgivLBf0hVdrAk9mWO5cQcb8Yux8sW5M8c8opEC2lZqKR1ZZXf";
|
||||
|
||||
var hybrid = new OpenLayers.Layer.Bing({
|
||||
key: apiKey,
|
||||
type: "AerialWithLabels",
|
||||
name: "Bing Aerial With Labels"
|
||||
});
|
||||
|
||||
var vector = new OpenLayers.Layer.Vector("GeoJSON", {
|
||||
projection: "EPSG:4326",
|
||||
strategies: [new OpenLayers.Strategy.Fixed()],
|
||||
protocol: new OpenLayers.Protocol.HTTP({
|
||||
url: "geojson-reprojected.json",
|
||||
format: new OpenLayers.Format.GeoJSON()
|
||||
})
|
||||
});
|
||||
|
||||
var center = new OpenLayers.LonLat(-109.6, 46.7).transform("EPSG:4326", "EPSG:900913");
|
||||
|
||||
var map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
layers: [hybrid, vector],
|
||||
center: center,
|
||||
zoom: 4
|
||||
});
|
||||
@@ -1 +0,0 @@
|
||||
{"type":"FeatureCollection","features":[{"type":"Feature","id":"USA-MT","properties":{"fips":"30","name":"Montana"},"geometry":{"type":"Polygon","coordinates":[[[-104.047534,49.000239],[-104.042057,47.861036],[-104.047534,45.944106],[-104.042057,44.996596],[-104.058488,44.996596],[-105.91517,45.002073],[-109.080842,45.002073],[-111.05254,45.002073],[-111.047063,44.476286],[-111.227803,44.580348],[-111.386634,44.75561],[-111.616665,44.547487],[-111.819312,44.509148],[-111.868605,44.563917],[-112.104113,44.520102],[-112.241036,44.569394],[-112.471068,44.481763],[-112.783254,44.48724],[-112.887315,44.394132],[-113.002331,44.448902],[-113.133778,44.772041],[-113.341901,44.782995],[-113.456917,44.865149],[-113.45144,45.056842],[-113.571933,45.128042],[-113.736241,45.330689],[-113.834826,45.522382],[-113.807441,45.604536],[-113.98818,45.703121],[-114.086765,45.593582],[-114.333228,45.456659],[-114.546828,45.560721],[-114.497536,45.670259],[-114.568736,45.774321],[-114.387997,45.88386],[-114.492059,46.037214],[-114.464674,46.272723],[-114.322274,46.645155],[-114.612552,46.639678],[-114.623506,46.705401],[-114.886399,46.809463],[-114.930214,46.919002],[-115.302646,47.187372],[-115.324554,47.258572],[-115.527201,47.302388],[-115.718894,47.42288],[-115.724371,47.696727],[-116.04751,47.976051],[-116.04751,49.000239],[-111.50165,48.994762],[-109.453274,49.000239],[-104.047534,49.000239]]]}}]}
|
||||
@@ -63,7 +63,7 @@
|
||||
<h1 id="title">GeoJSON Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
JSON, GeoJSON, light
|
||||
JSON, GeoJSON
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
|
||||
@@ -92,15 +92,16 @@ geolocate.events.register("locationupdated",geolocate,function(e) {
|
||||
geolocate.events.register("locationfailed",this,function() {
|
||||
OpenLayers.Console.log('Location detection failed');
|
||||
});
|
||||
document.getElementById('locate').onclick = function() {
|
||||
|
||||
$('locate').onclick = function() {
|
||||
vector.removeAllFeatures();
|
||||
geolocate.deactivate();
|
||||
document.getElementById('track').checked = false;
|
||||
$('track').checked = false;
|
||||
geolocate.watch = false;
|
||||
firstGeolocation = true;
|
||||
geolocate.activate();
|
||||
};
|
||||
document.getElementById('track').onclick = function() {
|
||||
$('track').onclick = function() {
|
||||
vector.removeAllFeatures();
|
||||
geolocate.deactivate();
|
||||
if (this.checked) {
|
||||
@@ -109,4 +110,4 @@ document.getElementById('track').onclick = function() {
|
||||
geolocate.activate();
|
||||
}
|
||||
};
|
||||
document.getElementById('track').checked = false;
|
||||
$('track').checked = false;
|
||||
|
||||
@@ -50,20 +50,21 @@
|
||||
|
||||
style.addRules([rule, elseRule]);
|
||||
|
||||
// Create a Vector layer with GeoRSS format and a style map.
|
||||
markerLayer = new OpenLayers.Layer.Vector("Some images from Flickr", {
|
||||
protocol: new OpenLayers.Protocol.HTTP({
|
||||
url: "xml/georss-flickr.xml",
|
||||
format: new OpenLayers.Format.GeoRSS({
|
||||
// adds the thumbnail attribute to the feature
|
||||
createFeatureFromItem: function(item) {
|
||||
var feature = OpenLayers.Format.GeoRSS.prototype.createFeatureFromItem.apply(this, arguments);
|
||||
feature.attributes.thumbnail = this.getElementsByTagNameNS(item, "*", "thumbnail")[0].getAttribute("url");
|
||||
return feature;
|
||||
}
|
||||
})
|
||||
}),
|
||||
strategies: [new OpenLayers.Strategy.Fixed()],
|
||||
// Create a GML layer with GeoRSS format and a style map.
|
||||
markerLayer = new OpenLayers.Layer.GML("Some images from Flickr",
|
||||
"xml/georss-flickr.xml", {
|
||||
format: OpenLayers.Format.GeoRSS,
|
||||
formatOptions: {
|
||||
// adds the thumbnail attribute to the feature
|
||||
createFeatureFromItem: function(item) {
|
||||
var feature = OpenLayers.Format.GeoRSS.prototype
|
||||
.createFeatureFromItem.apply(this, arguments);
|
||||
feature.attributes.thumbnail =
|
||||
this.getElementsByTagNameNS(
|
||||
item, "*", "thumbnail")[0].getAttribute("url");
|
||||
return feature;
|
||||
}
|
||||
},
|
||||
// Giving the style map keys for "default" and "select"
|
||||
// rendering intent, to make the image larger when selected
|
||||
styleMap: new OpenLayers.StyleMap({
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
</style>
|
||||
<script defer="defer" type="text/javascript">
|
||||
OpenLayers.ProxyHost = "proxy.cgi?url=";
|
||||
|
||||
var map, infocontrols, water, highlightlayer;
|
||||
|
||||
function load() {
|
||||
@@ -104,7 +105,7 @@
|
||||
},
|
||||
queryVisible: true
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
map.addLayers([political, roads, cities, water, highlightLayer]);
|
||||
for (var i in infoControls) {
|
||||
@@ -124,7 +125,7 @@
|
||||
highlightLayer.addFeatures(evt.features);
|
||||
highlightLayer.redraw();
|
||||
} else {
|
||||
document.getElementById('responseText').innerHTML = evt.text;
|
||||
$('responseText').innerHTML = evt.text;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,13 +20,7 @@
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} );
|
||||
map.addLayer(layer);
|
||||
map.zoomToExtent(new OpenLayers.Bounds(-3.922119,44.335327,4.866943,49.553833));
|
||||
map.addLayer(new OpenLayers.Layer.Vector("GML", {
|
||||
protocol: new OpenLayers.Protocol.HTTP({
|
||||
url: "gml/polygon.xml",
|
||||
format: new OpenLayers.Format.GML()
|
||||
}),
|
||||
strategies: [new OpenLayers.Strategy.Fixed()]
|
||||
}));
|
||||
map.addLayer(new OpenLayers.Layer.GML("GML", "gml/polygon.xml"));
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
45
examples/google-ng.html
Normal file
45
examples/google-ng.html
Normal file
@@ -0,0 +1,45 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers Google NG Layer Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="../theme/default/google.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<style type="text/css">
|
||||
.olControlAttribution {
|
||||
left: 2px;
|
||||
right: inherit;
|
||||
bottom: 3px;
|
||||
line-height: 11px;
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
</style>
|
||||
<script src="http://maps.google.com/maps/api/js?v=3.5&sensor=false"></script>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="google-ng.js"></script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Google NG Layer Example</h1>
|
||||
<div id="tags">
|
||||
Google, api key, apikey
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Demonstrate use of tiles from the Google Maps v3 API.
|
||||
</p>
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs">
|
||||
<p>
|
||||
If you use OpenLayers.Layer.GoogleNG, the getTile method of the
|
||||
GMaps v3 API's MapType is used to load tiles. This allows for
|
||||
better integration than interacting with a whole map generated
|
||||
by a google.maps.Map instance, as done with
|
||||
OpenLayers.Layer.Google. See the
|
||||
<a href="google-ng.js" target="_blank">google-ng.js source</a>
|
||||
to see how this is done.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
28
examples/google-ng.js
Normal file
28
examples/google-ng.js
Normal file
@@ -0,0 +1,28 @@
|
||||
var map;
|
||||
|
||||
function init() {
|
||||
map = new OpenLayers.Map('map');
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
|
||||
var gphy = new OpenLayers.Layer.GoogleNG(
|
||||
{type: google.maps.MapTypeId.TERRAIN}
|
||||
);
|
||||
var gmap = new OpenLayers.Layer.GoogleNG(
|
||||
// ROADMAP, the default
|
||||
);
|
||||
var ghyb = new OpenLayers.Layer.GoogleNG(
|
||||
{type: google.maps.MapTypeId.HYBRID}
|
||||
);
|
||||
var gsat = new OpenLayers.Layer.GoogleNG(
|
||||
{type: google.maps.MapTypeId.SATELLITE}
|
||||
);
|
||||
|
||||
map.addLayers([gphy, gmap, ghyb, gsat]);
|
||||
|
||||
// GoogleNG uses EPSG:900913 as projection, so we have to
|
||||
// transform our coordinates
|
||||
map.setCenter(new OpenLayers.LonLat(10.2, 48.9).transform(
|
||||
new OpenLayers.Projection("EPSG:4326"),
|
||||
map.getProjectionObject()
|
||||
), 5);
|
||||
}
|
||||
63
examples/google-reproject.html
Normal file
63
examples/google-reproject.html
Normal file
@@ -0,0 +1,63 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers Google with Overlay Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<!-- this gmaps key generated for http://openlayers.org/dev/ -->
|
||||
<script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhR_wWLPFku8Ix9i2SXYRVK3e45q1BQUd_beF8dtzKET_EteAjPdGDwqpQ'></script>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
var map;
|
||||
|
||||
function init(){
|
||||
map = new OpenLayers.Map('map');
|
||||
|
||||
var satellite = new OpenLayers.Layer.Google(
|
||||
"Google Satellite" , {type: G_SATELLITE_MAP}
|
||||
);
|
||||
|
||||
var wms = new OpenLayers.Layer.WMS(
|
||||
"World Map",
|
||||
"http://world.freemap.in/cgi-bin/mapserv",
|
||||
{
|
||||
map: '/www/freemap.in/world/map/factbooktrans.map',
|
||||
transparent: 'TRUE',
|
||||
layers: 'factbook'
|
||||
},
|
||||
{'reproject': true}
|
||||
);
|
||||
|
||||
map.addLayers([satellite, wms]);
|
||||
|
||||
map.setCenter(new OpenLayers.LonLat(10.205188,48.857593), 5);
|
||||
map.addControl( new OpenLayers.Control.LayerSwitcher() );
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Google with Overlay Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
Google, overlay, mercator, reproject, cleanup
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrate a Google basemap used with boundary overlay layer.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p>An overlay in a Geographic projection can be stretched to somewhat
|
||||
line up with Google tiles (in a Mercator projection). Results get
|
||||
worse farther from the equator. Use the "reproject" option on a
|
||||
layer to get this behavior. Use the sphericalMercator option on
|
||||
a Google layer to get proper overlays (with other layers in
|
||||
Spherical Mercator).</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,39 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers Google (Static Maps API) Grid Layer Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="title">Google (Static Maps API) Grid Layer Example</h1>
|
||||
<div id="tags">
|
||||
Google, grid, static, GMaps, light
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Using the Google Static Maps API with a Grid Layer.
|
||||
</p>
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs">
|
||||
<p>A Grid layer with a custom <code>getURL</code> method can be
|
||||
used to request static maps for a specific extent and zoom
|
||||
level. The Google Static Maps API is the most reliable way to
|
||||
get Google base maps in OpenLayers. Note, however, that the
|
||||
free version of this is limited to a map size of 640x640 pixels
|
||||
(1280x1280 if the <code>scale=2</code> url parameter is used)
|
||||
and 1000 page views per viewer per day. Every map center
|
||||
or zoom level change increases the page view counter by 1.
|
||||
</p>
|
||||
<p>Look at the
|
||||
<a href="google-static.js" target="_blank">google-static.js
|
||||
source</a> to see how this is done. See the
|
||||
<a href="http://code.google.com/apis/maps/documentation/staticmaps/">Static Maps API V2 Developer Guide</a>
|
||||
for details on the API.
|
||||
</div>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="google-static.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,61 +0,0 @@
|
||||
var options = {
|
||||
singleTile: true,
|
||||
ratio: 1,
|
||||
isBaseLayer: true,
|
||||
wrapDateLine: true,
|
||||
getURL: function() {
|
||||
var center = this.map.getCenter().transform("EPSG:3857", "EPSG:4326"),
|
||||
size = this.map.getSize();
|
||||
return [
|
||||
this.url, "¢er=", center.lat, ",", center.lon,
|
||||
"&zoom=", this.map.getZoom(), "&size=", size.w, "x", size.h
|
||||
].join("");
|
||||
}
|
||||
};
|
||||
|
||||
var map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
projection: "EPSG:3857",
|
||||
numZoomLevels: 22,
|
||||
layers: [
|
||||
new OpenLayers.Layer.Grid(
|
||||
"Google Physical",
|
||||
"http://maps.googleapis.com/maps/api/staticmap?sensor=false&maptype=terrain",
|
||||
null, options
|
||||
),
|
||||
new OpenLayers.Layer.Grid(
|
||||
"Google Streets",
|
||||
"http://maps.googleapis.com/maps/api/staticmap?sensor=false&maptype=roadmap",
|
||||
null, options
|
||||
),
|
||||
new OpenLayers.Layer.Grid(
|
||||
"Google Hybrid",
|
||||
"http://maps.googleapis.com/maps/api/staticmap?sensor=false&maptype=hybrid",
|
||||
null, options
|
||||
),
|
||||
new OpenLayers.Layer.Grid(
|
||||
"Google Satellite",
|
||||
"http://maps.googleapis.com/maps/api/staticmap?sensor=false&maptype=satellite",
|
||||
null, options
|
||||
),
|
||||
// the same layer again, but scaled to allow map sizes up to 1280x1280 pixels
|
||||
new OpenLayers.Layer.Grid(
|
||||
"Google Satellite (scale=2)",
|
||||
"http://maps.googleapis.com/maps/api/staticmap?sensor=false&maptype=satellite&scale=2",
|
||||
null, OpenLayers.Util.applyDefaults({
|
||||
getURL: function() {
|
||||
var center = this.map.getCenter().transform("EPSG:3857", "EPSG:4326"),
|
||||
size = this.map.getSize();
|
||||
return [
|
||||
this.url, "¢er=", center.lat, ",", center.lon,
|
||||
"&zoom=", (this.map.getZoom() - 1),
|
||||
"&size=", Math.floor(size.w / 2), "x", Math.floor(size.h / 2)
|
||||
].join("");
|
||||
}
|
||||
}, options)
|
||||
)
|
||||
],
|
||||
center: new OpenLayers.LonLat(10.2, 48.9).transform("EPSG:4326", "EPSG:3857"),
|
||||
zoom: 5
|
||||
});
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
@@ -6,15 +6,16 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers Google (v3) Layer Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="../theme/default/google.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script src="http://maps.google.com/maps/api/js?v=3&sensor=false"></script>
|
||||
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="google-v3-alloverlays.js"></script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Google (v3) allOverlays Layer Example</h1>
|
||||
<div id="tags">
|
||||
Google, overlay, light
|
||||
Google, overlay
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Demonstrate use the Google Maps v3 API with allOverlays set to true on the map.
|
||||
|
||||
@@ -6,15 +6,16 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>OpenLayers Google (v3) Layer Example</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="../theme/default/google.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script src="http://maps.google.com/maps/api/js?v=3&sensor=false"></script>
|
||||
<script src="http://maps.google.com/maps/api/js?v=3.5&sensor=false"></script>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="google-v3.js"></script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Google (v3) Layer Example</h1>
|
||||
<div id="tags">
|
||||
Google, api key, apikey, light
|
||||
Google, api key, apikey
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Demonstrate use the Google Maps v3 API.
|
||||
@@ -29,6 +30,10 @@
|
||||
spherical mercator projection. See the
|
||||
<a href="google-v3.js" target="_blank">google-v3.js source</a>
|
||||
to see how this is done.
|
||||
<p>
|
||||
In order to position the Google attribution div in the default
|
||||
location, you must include the extra theme/default/google.css
|
||||
stylesheet.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -1,34 +1,35 @@
|
||||
var map;
|
||||
|
||||
function init() {
|
||||
map = new OpenLayers.Map('map', {
|
||||
projection: 'EPSG:3857',
|
||||
layers: [
|
||||
new OpenLayers.Layer.Google(
|
||||
"Google Physical",
|
||||
{type: google.maps.MapTypeId.TERRAIN}
|
||||
),
|
||||
new OpenLayers.Layer.Google(
|
||||
"Google Streets", // the default
|
||||
{numZoomLevels: 20}
|
||||
),
|
||||
new OpenLayers.Layer.Google(
|
||||
"Google Hybrid",
|
||||
{type: google.maps.MapTypeId.HYBRID, numZoomLevels: 20}
|
||||
),
|
||||
new OpenLayers.Layer.Google(
|
||||
"Google Satellite",
|
||||
{type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 22}
|
||||
)
|
||||
],
|
||||
center: new OpenLayers.LonLat(10.2, 48.9)
|
||||
// Google.v3 uses web mercator as projection, so we have to
|
||||
// transform our coordinates
|
||||
.transform('EPSG:4326', 'EPSG:3857'),
|
||||
zoom: 5
|
||||
});
|
||||
map = new OpenLayers.Map('map');
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
|
||||
var gphy = new OpenLayers.Layer.Google(
|
||||
"Google Physical",
|
||||
{type: google.maps.MapTypeId.TERRAIN}
|
||||
);
|
||||
var gmap = new OpenLayers.Layer.Google(
|
||||
"Google Streets", // the default
|
||||
{numZoomLevels: 20}
|
||||
);
|
||||
var ghyb = new OpenLayers.Layer.Google(
|
||||
"Google Hybrid",
|
||||
{type: google.maps.MapTypeId.HYBRID, numZoomLevels: 20}
|
||||
);
|
||||
var gsat = new OpenLayers.Layer.Google(
|
||||
"Google Satellite",
|
||||
{type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 22}
|
||||
);
|
||||
|
||||
map.addLayers([gphy, gmap, ghyb, gsat]);
|
||||
|
||||
// Google.v3 uses EPSG:900913 as projection, so we have to
|
||||
// transform our coordinates
|
||||
map.setCenter(new OpenLayers.LonLat(10.2, 48.9).transform(
|
||||
new OpenLayers.Projection("EPSG:4326"),
|
||||
map.getProjectionObject()
|
||||
), 5);
|
||||
|
||||
// add behavior to html
|
||||
var animate = document.getElementById("animate");
|
||||
animate.onclick = function() {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<body onload="init();">
|
||||
<h1 id="title">Named Graphics Example</h1>
|
||||
<div id="tags">
|
||||
vector, named graphic, star, cross, x, square, triangle, circle, style, light
|
||||
vector, named graphic, star, cross, x, square, triangle, circle, style
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Shows how to use well-known graphic names.
|
||||
|
||||
@@ -5,10 +5,6 @@ OpenLayers.Renderer.symbol.church = [4, 0, 6, 0, 6, 4, 10, 4, 10, 6, 6, 6, 6, 14
|
||||
var map;
|
||||
|
||||
function init(){
|
||||
// allow testing of specific renderers via "?renderer=Canvas", etc
|
||||
var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
|
||||
renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;
|
||||
|
||||
map = new OpenLayers.Map('map', {
|
||||
controls: []
|
||||
});
|
||||
@@ -50,8 +46,7 @@ function init(){
|
||||
// Create a vector layer and give it your style map.
|
||||
var layer = new OpenLayers.Layer.Vector("Graphics", {
|
||||
styleMap: styles,
|
||||
isBaseLayer: true,
|
||||
renderers: renderer
|
||||
isBaseLayer: true
|
||||
});
|
||||
layer.addFeatures(features);
|
||||
map.addLayer(layer);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
}
|
||||
</style>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="http://svn.osgeo.org/metacrs/proj4js/trunk/lib/proj4js-compressed.js"></script>
|
||||
<script src="http://proj4js.org/lib/proj4js-compressed.js"></script>
|
||||
<script type="text/javascript">
|
||||
Proj4js.defs["EPSG:42304"]="+title=Atlas of Canada, LCC +proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs";
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
<h1 id="title">Graticule Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
graticule, grid, projection, proj4js, reproject, transform
|
||||
graticule, grid
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
|
||||
@@ -13,43 +13,48 @@
|
||||
}
|
||||
</style>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
OpenLayers.IMAGE_RELOAD_ATTEMPTS = 2;
|
||||
var map;
|
||||
window.onload = function() {
|
||||
options = {maxExtent: new OpenLayers.Bounds(-73.5295, 41.2318,
|
||||
-69.9097, 42.8883),
|
||||
maxResolution: 0.0003}
|
||||
map = new OpenLayers.Map('map', options);
|
||||
var roads15 = new OpenLayers.Layer.WMS( "Roads (15px gutter)",
|
||||
"http://boston.freemap.in/cgi-bin/mapserv?map=/www/freemap.in/boston/map/gmaps.map&",
|
||||
{layers: 'roads_200_40'},
|
||||
{gutter: 15});
|
||||
var roads = new OpenLayers.Layer.WMS( "Roads (no gutter)",
|
||||
"http://boston.freemap.in/cgi-bin/mapserv?map=/www/freemap.in/boston/map/gmaps.map&",
|
||||
{layers: 'roads_200_40'});
|
||||
map.addLayers([roads, roads15]);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.setCenter(new OpenLayers.LonLat(-71.848, 42.2), 0);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="title">Gutter Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
gutter, quality, tile, light
|
||||
gutter, quality, tile
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrates OpenLayer's facility for dealing with tiling artifacts.
|
||||
Demonstrates map tiling artifacts, and OpenLayer's facility for correcting this distortion.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p class="caption">
|
||||
When you render tiles with certain types of symbols, some map
|
||||
servers may render artifacts at tile edges that make symbology not
|
||||
look continuous. Look at the state abbreviations, open the layer
|
||||
switcher and change to the layer with a 15 pixel gutter to see how
|
||||
the symbology looks different (the server in this example doesn't
|
||||
render such artifacts, so the client-side gutter won't make things
|
||||
look nicer).
|
||||
When you render tiles with certain types of symbols, there are artifacts
|
||||
at tile edges that make symbology not look continuous. In the center of
|
||||
the above map (when it first loads), the large orange road is split
|
||||
vertically by a tile. Open the layer switcher and change to the layer
|
||||
with a 15 pixel gutter to see how the symbology looks nicer.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
<script type="text/javascript">
|
||||
var map = new OpenLayers.Map('map');
|
||||
var states15 = new OpenLayers.Layer.WMS( "States (15px gutter)",
|
||||
"http://suite.opengeo.org/geoserver/wms",
|
||||
{layers: 'usa:states'},
|
||||
{gutter: 15, transitionEffect: "resize"});
|
||||
var states = new OpenLayers.Layer.WMS( "States (no gutter)",
|
||||
"http://suite.opengeo.org/geoserver/wms",
|
||||
{layers: 'usa:states'});
|
||||
map.addLayers([states, states15]);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.setCenter(new OpenLayers.LonLat(-71.848, 42.2), 5);
|
||||
</script>
|
||||
</html>
|
||||
|
||||
@@ -68,6 +68,8 @@
|
||||
highlightCtrl.activate();
|
||||
selectCtrl.activate();
|
||||
|
||||
map.addControl(new OpenLayers.Control.EditingToolbar(vectors));
|
||||
|
||||
map.setCenter(new OpenLayers.LonLat(0, 0), 1);
|
||||
|
||||
}
|
||||
|
||||
@@ -19,12 +19,14 @@
|
||||
function init(){
|
||||
map = new OpenLayers.Map('map');
|
||||
|
||||
var options = {numZoomLevels: 3};
|
||||
|
||||
var graphic = new OpenLayers.Layer.Image(
|
||||
'City Lights',
|
||||
'data/4_m_citylights_lg.gif',
|
||||
'http://earthtrends.wri.org/images/maps/4_m_citylights_lg.gif',
|
||||
new OpenLayers.Bounds(-180, -88.759, 180, 88.759),
|
||||
new OpenLayers.Size(580, 288),
|
||||
{numZoomLevels: 3}
|
||||
options
|
||||
);
|
||||
|
||||
graphic.events.on({
|
||||
@@ -36,12 +38,9 @@
|
||||
}
|
||||
});
|
||||
|
||||
var jpl_wms = new OpenLayers.Layer.WMS(
|
||||
"Global Imagery",
|
||||
"http://demo.opengeo.org/geoserver/wms",
|
||||
{layers: "bluemarble"},
|
||||
{maxExtent: [-160, -88.759, 160, 88.759], numZoomLevels: 3}
|
||||
);
|
||||
var jpl_wms = new OpenLayers.Layer.WMS( "NASA Global Mosaic",
|
||||
"http://t1.hypercube.telascience.org/cgi-bin/landsat7",
|
||||
{layers: "landsat7"}, options);
|
||||
|
||||
map.addLayers([graphic, jpl_wms]);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 45 KiB |
@@ -1,6 +1,7 @@
|
||||
var map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
resolutions: [0.087890625, 0.0439453125, 0.02197265625, 0.010986328125],
|
||||
panDuration: 100,
|
||||
controls: [
|
||||
new OpenLayers.Control.Navigation(
|
||||
{dragPanOptions: {enableKinetic: true}}
|
||||
|
||||
@@ -29,13 +29,12 @@ function init() {
|
||||
var fid, points = [], feature;
|
||||
for (var i=0, len=e.features.length; i<len; i++) {
|
||||
feature = e.features[i];
|
||||
if ((fid && feature.fid !== fid) || i === len-1) {
|
||||
if (feature.fid !== fid || i === len-1) {
|
||||
fid = feature.fid;
|
||||
this.addNodes(points, {silent: true});
|
||||
points = [];
|
||||
} else {
|
||||
points.push(feature);
|
||||
}
|
||||
fid = feature.fid;
|
||||
points.push(feature);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<h1 id="title">Late Rendering</h1>
|
||||
|
||||
<div id="tags">
|
||||
creation, render, div, light
|
||||
creation, render, div
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<h1 id="title">Layer Opacity Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
opacity, transparent, transparency, light
|
||||
opacity, transparent, transparency
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user