Compare commits
5 Commits
v2.13.1
...
release-2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a4c86b0489 | ||
|
|
538302fa9b | ||
|
|
b7bf7d5436 | ||
|
|
7232cfa3a0 | ||
|
|
2642f000fd |
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
|
||||
@@ -1,113 +0,0 @@
|
||||
Format: 1.52
|
||||
|
||||
# This is the Natural Docs languages file for this project. If you change
|
||||
# anything here, it will apply to THIS PROJECT ONLY. If you'd like to change
|
||||
# something for all your projects, edit the Languages.txt in Natural Docs'
|
||||
# Config directory instead.
|
||||
|
||||
|
||||
# You can prevent certain file extensions from being scanned like this:
|
||||
# Ignore Extensions: [extension] [extension] ...
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# SYNTAX:
|
||||
#
|
||||
# Unlike other Natural Docs configuration files, in this file all comments
|
||||
# MUST be alone on a line. Some languages deal with the # character, so you
|
||||
# cannot put comments on the same line as content.
|
||||
#
|
||||
# Also, all lists are separated with spaces, not commas, again because some
|
||||
# languages may need to use them.
|
||||
#
|
||||
# Language: [name]
|
||||
# Alter Language: [name]
|
||||
# Defines a new language or alters an existing one. Its name can use any
|
||||
# characters. If any of the properties below have an add/replace form, you
|
||||
# must use that when using Alter Language.
|
||||
#
|
||||
# The language Shebang Script is special. It's entry is only used for
|
||||
# extensions, and files with those extensions have their shebang (#!) lines
|
||||
# read to determine the real language of the file. Extensionless files are
|
||||
# always treated this way.
|
||||
#
|
||||
# The language Text File is also special. It's treated as one big comment
|
||||
# so you can put Natural Docs content in them without special symbols. Also,
|
||||
# if you don't specify a package separator, ignored prefixes, or enum value
|
||||
# behavior, it will copy those settings from the language that is used most
|
||||
# in the source tree.
|
||||
#
|
||||
# Extensions: [extension] [extension] ...
|
||||
# [Add/Replace] Extensions: [extension] [extension] ...
|
||||
# Defines the file extensions of the language's source files. You can
|
||||
# redefine extensions found in the main languages file. You can use * to
|
||||
# mean any undefined extension.
|
||||
#
|
||||
# Shebang Strings: [string] [string] ...
|
||||
# [Add/Replace] Shebang Strings: [string] [string] ...
|
||||
# Defines a list of strings that can appear in the shebang (#!) line to
|
||||
# designate that it's part of the language. You can redefine strings found
|
||||
# in the main languages file.
|
||||
#
|
||||
# Ignore Prefixes in Index: [prefix] [prefix] ...
|
||||
# [Add/Replace] Ignored Prefixes in Index: [prefix] [prefix] ...
|
||||
#
|
||||
# Ignore [Topic Type] Prefixes in Index: [prefix] [prefix] ...
|
||||
# [Add/Replace] Ignored [Topic Type] Prefixes in Index: [prefix] [prefix] ...
|
||||
# Specifies prefixes that should be ignored when sorting symbols in an
|
||||
# index. Can be specified in general or for a specific topic type.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
# For basic language support only:
|
||||
#
|
||||
# Line Comments: [symbol] [symbol] ...
|
||||
# Defines a space-separated list of symbols that are used for line comments,
|
||||
# if any.
|
||||
#
|
||||
# Block Comments: [opening sym] [closing sym] [opening sym] [closing sym] ...
|
||||
# Defines a space-separated list of symbol pairs that are used for block
|
||||
# comments, if any.
|
||||
#
|
||||
# Package Separator: [symbol]
|
||||
# Defines the default package separator symbol. The default is a dot.
|
||||
#
|
||||
# [Topic Type] Prototype Enders: [symbol] [symbol] ...
|
||||
# When defined, Natural Docs will attempt to get a prototype from the code
|
||||
# immediately following the topic type. It stops when it reaches one of
|
||||
# these symbols. Use \n for line breaks.
|
||||
#
|
||||
# Line Extender: [symbol]
|
||||
# Defines the symbol that allows a prototype to span multiple lines if
|
||||
# normally a line break would end it.
|
||||
#
|
||||
# Enum Values: [global|under type|under parent]
|
||||
# Defines how enum values are referenced. The default is global.
|
||||
# global - Values are always global, referenced as 'value'.
|
||||
# under type - Values are under the enum type, referenced as
|
||||
# 'package.enum.value'.
|
||||
# under parent - Values are under the enum's parent, referenced as
|
||||
# 'package.value'.
|
||||
#
|
||||
# Perl Package: [perl package]
|
||||
# Specifies the Perl package used to fine-tune the language behavior in ways
|
||||
# too complex to do in this file.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
# For full language support only:
|
||||
#
|
||||
# Full Language Support: [perl package]
|
||||
# Specifies the Perl package that has the parsing routines necessary for full
|
||||
# language support.
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# The following languages are defined in the main file, if you'd like to alter
|
||||
# them:
|
||||
#
|
||||
# Text File, Shebang Script, C/C++, C#, Java, JavaScript, Perl, Python,
|
||||
# PHP, SQL, Visual Basic, Pascal, Assembly, Ada, Tcl, Ruby, Makefile,
|
||||
# ActionScript, ColdFusion, R, Fortran
|
||||
|
||||
# If you add a language that you think would be useful to other developers
|
||||
# and should be included in Natural Docs by default, please e-mail it to
|
||||
# languages [at] naturaldocs [dot] org.
|
||||
@@ -1,472 +0,0 @@
|
||||
Format: 1.52
|
||||
|
||||
|
||||
Title: OpenLayers
|
||||
SubTitle: JavaScript Mapping Library
|
||||
|
||||
# You can add a footer to your documentation like this:
|
||||
# Footer: [text]
|
||||
# If you want to add a copyright notice, this would be the place to do it.
|
||||
|
||||
# You can add a timestamp to your documentation like one of these:
|
||||
# Timestamp: Generated on month day, year
|
||||
# Timestamp: Updated mm/dd/yyyy
|
||||
# Timestamp: Last updated mon day
|
||||
#
|
||||
# m - One or two digit month. January is "1"
|
||||
# mm - Always two digit month. January is "01"
|
||||
# mon - Short month word. January is "Jan"
|
||||
# month - Long month word. January is "January"
|
||||
# d - One or two digit day. 1 is "1"
|
||||
# dd - Always two digit day. 1 is "01"
|
||||
# day - Day with letter extension. 1 is "1st"
|
||||
# yy - Two digit year. 2006 is "06"
|
||||
# yyyy - Four digit year. 2006 is "2006"
|
||||
# year - Four digit year. 2006 is "2006"
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
#
|
||||
# Cut and paste the lines below to change the order in which your files
|
||||
# appear on the menu. Don't worry about adding or removing files, Natural
|
||||
# Docs will take care of that.
|
||||
#
|
||||
# You can further organize the menu by grouping the entries. Add a
|
||||
# "Group: [name] {" line to start a group, and add a "}" to end it.
|
||||
#
|
||||
# You can add text and web links to the menu by adding "Text: [text]" and
|
||||
# "Link: [name] ([URL])" lines, respectively.
|
||||
#
|
||||
# The formatting and comments are auto-generated, so don't worry about
|
||||
# neatness when editing the file. Natural Docs will clean it up the next
|
||||
# time it is run. When working with groups, just deal with the braces and
|
||||
# forget about the indentation and comments.
|
||||
#
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
|
||||
Group: OpenLayers {
|
||||
|
||||
File: OpenLayers (no auto-title, OpenLayers.js)
|
||||
|
||||
Group: BaseTypes {
|
||||
|
||||
File: Base Types (no auto-title, OpenLayers/BaseTypes.js)
|
||||
File: Bounds (no auto-title, OpenLayers/BaseTypes/Bounds.js)
|
||||
File: Class (no auto-title, OpenLayers/BaseTypes/Class.js)
|
||||
File: Date (no auto-title, OpenLayers/BaseTypes/Date.js)
|
||||
File: Element (no auto-title, OpenLayers/BaseTypes/Element.js)
|
||||
File: LonLat (no auto-title, OpenLayers/BaseTypes/LonLat.js)
|
||||
File: Pixel (no auto-title, OpenLayers/BaseTypes/Pixel.js)
|
||||
File: Size (no auto-title, OpenLayers/BaseTypes/Size.js)
|
||||
} # Group: BaseTypes
|
||||
|
||||
File: Console (no auto-title, OpenLayers/Console.js)
|
||||
|
||||
Group: Control {
|
||||
|
||||
File: Control (no auto-title, OpenLayers/Control.js)
|
||||
File: ArgParser (no auto-title, OpenLayers/Control/ArgParser.js)
|
||||
File: Attribution (no auto-title, OpenLayers/Control/Attribution.js)
|
||||
File: Button (no auto-title, OpenLayers/Control/Button.js)
|
||||
File: DragFeature (no auto-title, OpenLayers/Control/DragFeature.js)
|
||||
File: DragPan (no auto-title, OpenLayers/Control/DragPan.js)
|
||||
File: DrawFeature (no auto-title, OpenLayers/Control/DrawFeature.js)
|
||||
File: EditingToolbar (no auto-title, OpenLayers/Control/EditingToolbar.js)
|
||||
File: Geolocate (no auto-title, OpenLayers/Control/Geolocate.js)
|
||||
File: GetFeature (no auto-title, OpenLayers/Control/GetFeature.js)
|
||||
File: Graticule (no auto-title, OpenLayers/Control/Graticule.js)
|
||||
File: KeyboardDefaults (no auto-title, OpenLayers/Control/KeyboardDefaults.js)
|
||||
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: MousePosition (no auto-title, OpenLayers/Control/MousePosition.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)
|
||||
File: OverviewMap (no auto-title, OpenLayers/Control/OverviewMap.js)
|
||||
File: Pan (no auto-title, OpenLayers/Control/Pan.js)
|
||||
File: Panel (no auto-title, OpenLayers/Control/Panel.js)
|
||||
File: PanPanel (no auto-title, OpenLayers/Control/PanPanel.js)
|
||||
File: PanZoom (no auto-title, OpenLayers/Control/PanZoom.js)
|
||||
File: PanZoomBar (no auto-title, OpenLayers/Control/PanZoomBar.js)
|
||||
File: Permalink (no auto-title, OpenLayers/Control/Permalink.js)
|
||||
File: PinchZoom (no auto-title, OpenLayers/Control/PinchZoom.js)
|
||||
File: Scale (no auto-title, OpenLayers/Control/Scale.js)
|
||||
File: ScaleLine (no auto-title, OpenLayers/Control/ScaleLine.js)
|
||||
File: SelectFeature (no auto-title, OpenLayers/Control/SelectFeature.js)
|
||||
File: SLDSelect (no auto-title, OpenLayers/Control/SLDSelect.js)
|
||||
File: Snapping (no auto-title, OpenLayers/Control/Snapping.js)
|
||||
File: Split (no auto-title, OpenLayers/Control/Split.js)
|
||||
File: TouchNavigation (no auto-title, OpenLayers/Control/TouchNavigation.js)
|
||||
File: TransformFeature (no auto-title, OpenLayers/Control/TransformFeature.js)
|
||||
File: WMSGetFeatureInfo (no auto-title, OpenLayers/Control/WMSGetFeatureInfo.js)
|
||||
File: WMTSGetFeatureInfo (no auto-title, OpenLayers/Control/WMTSGetFeatureInfo.js)
|
||||
File: ZoomBox (no auto-title, OpenLayers/Control/ZoomBox.js)
|
||||
File: ZoomIn (no auto-title, OpenLayers/Control/ZoomIn.js)
|
||||
File: ZoomOut (no auto-title, OpenLayers/Control/ZoomOut.js)
|
||||
File: ZoomPanel (no auto-title, OpenLayers/Control/ZoomPanel.js)
|
||||
File: ZoomToMaxExtent (no auto-title, OpenLayers/Control/ZoomToMaxExtent.js)
|
||||
} # Group: Control
|
||||
|
||||
File: Events (no auto-title, OpenLayers/Events.js)
|
||||
|
||||
Group: Feature {
|
||||
|
||||
File: Feature (no auto-title, OpenLayers/Feature.js)
|
||||
File: Vector (no auto-title, OpenLayers/Feature/Vector.js)
|
||||
} # Group: Feature
|
||||
|
||||
Group: Filter {
|
||||
|
||||
File: Filter (no auto-title, OpenLayers/Filter.js)
|
||||
File: Comparison (no auto-title, OpenLayers/Filter/Comparison.js)
|
||||
File: FeatureId (no auto-title, OpenLayers/Filter/FeatureId.js)
|
||||
File: Function (no auto-title, OpenLayers/Filter/Function.js)
|
||||
File: Logical (no auto-title, OpenLayers/Filter/Logical.js)
|
||||
File: Spatial (no auto-title, OpenLayers/Filter/Spatial.js)
|
||||
} # Group: Filter
|
||||
|
||||
Group: Format {
|
||||
|
||||
File: Format (no auto-title, OpenLayers/Format.js)
|
||||
File: ArcXML (no auto-title, OpenLayers/Format/ArcXML.js)
|
||||
File: ArcXML.Features (no auto-title, OpenLayers/Format/ArcXML/Features.js)
|
||||
File: Atom (no auto-title, OpenLayers/Format/Atom.js)
|
||||
File: Context (no auto-title, OpenLayers/Format/Context.js)
|
||||
File: CQL (no auto-title, OpenLayers/Format/CQL.js)
|
||||
File: CSWGetDomain (no auto-title, OpenLayers/Format/CSWGetDomain.js)
|
||||
File: CSWGetDomain.v2_0_2 (no auto-title, OpenLayers/Format/CSWGetDomain/v2_0_2.js)
|
||||
File: CSWGetRecords (no auto-title, OpenLayers/Format/CSWGetRecords.js)
|
||||
File: CSWGetRecords.v2_0_2 (no auto-title, OpenLayers/Format/CSWGetRecords/v2_0_2.js)
|
||||
|
||||
Group: Filter {
|
||||
|
||||
File: Filter (no auto-title, OpenLayers/Format/Filter.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/Filter/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/Filter/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/Filter/v1_1_0.js)
|
||||
} # Group: Filter
|
||||
|
||||
Group: GML {
|
||||
|
||||
File: GML (no auto-title, OpenLayers/Format/GML.js)
|
||||
File: Base (no auto-title, OpenLayers/Format/GML/Base.js)
|
||||
File: v2 (no auto-title, OpenLayers/Format/GML/v2.js)
|
||||
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)
|
||||
|
||||
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)
|
||||
} # Group: OWSCommon
|
||||
|
||||
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)
|
||||
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)
|
||||
|
||||
Group: WFSCapabilities {
|
||||
|
||||
File: WFSCapabilities (no auto-title, OpenLayers/Format/WFSCapabilities.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/WFSCapabilities/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/WFSCapabilities/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WFSCapabilities/v1_1_0.js)
|
||||
} # Group: WFSCapabilities
|
||||
|
||||
Group: WFST {
|
||||
|
||||
File: WFST (no auto-title, OpenLayers/Format/WFST.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/WFST/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/WFST/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WFST/v1_1_0.js)
|
||||
} # Group: WFST
|
||||
|
||||
Group: WMC {
|
||||
|
||||
File: WMC (no auto-title, OpenLayers/Format/WMC.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/WMC/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/WMC/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WMC/v1_1_0.js)
|
||||
} # Group: WMC
|
||||
|
||||
Group: WMSCapabilities {
|
||||
|
||||
File: WMSCapabilities (no auto-title, OpenLayers/Format/WMSCapabilities.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/WMSCapabilities/v1.js)
|
||||
File: v1_1 (no auto-title, OpenLayers/Format/WMSCapabilities/v1_1.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WMSCapabilities/v1_1_0.js)
|
||||
File: v1_1_1 (no auto-title, OpenLayers/Format/WMSCapabilities/v1_1_1.js)
|
||||
File: v1_3 (no auto-title, OpenLayers/Format/WMSCapabilities/v1_3.js)
|
||||
File: v1_3_0 (no auto-title, OpenLayers/Format/WMSCapabilities/v1_3_0.js)
|
||||
File: WMSCapabilities/v1_1_1_WMSC (no auto-title, OpenLayers/Format/WMSCapabilities/v1_1_1_WMSC.js)
|
||||
} # Group: WMSCapabilities
|
||||
|
||||
Group: WMSDescribeLayer {
|
||||
|
||||
File: WMSDescribeLayer (no auto-title, OpenLayers/Format/WMSDescribeLayer.js)
|
||||
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)
|
||||
File: WPSCapabilities (no auto-title, OpenLayers/Format/WPSCapabilities.js)
|
||||
File: WPSCapabilities.v1_0_0 (no auto-title, OpenLayers/Format/WPSCapabilities/v1_0_0.js)
|
||||
File: WPSDescribeProcess (no auto-title, OpenLayers/Format/WPSDescribeProcess.js)
|
||||
File: WPSExecute version 1.0.0 (no auto-title, OpenLayers/Format/WPSExecute.js)
|
||||
File: XLS (no auto-title, OpenLayers/Format/XLS.js)
|
||||
File: XLS.v1 (no auto-title, OpenLayers/Format/XLS/v1.js)
|
||||
File: XLS.v1_1_0 (no auto-title, OpenLayers/Format/XLS/v1_1_0.js)
|
||||
File: XML (no auto-title, OpenLayers/Format/XML.js)
|
||||
} # Group: Format
|
||||
|
||||
Group: Geometry {
|
||||
|
||||
File: Geometry (no auto-title, OpenLayers/Geometry.js)
|
||||
File: Collection (no auto-title, OpenLayers/Geometry/Collection.js)
|
||||
File: Curve (no auto-title, OpenLayers/Geometry/Curve.js)
|
||||
File: LinearRing (no auto-title, OpenLayers/Geometry/LinearRing.js)
|
||||
File: LineString (no auto-title, OpenLayers/Geometry/LineString.js)
|
||||
File: MultiLineString (no auto-title, OpenLayers/Geometry/MultiLineString.js)
|
||||
File: MultiPoint (no auto-title, OpenLayers/Geometry/MultiPoint.js)
|
||||
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)
|
||||
} # Group: Geometry
|
||||
|
||||
Group: Handler {
|
||||
|
||||
File: Handler (no auto-title, OpenLayers/Handler.js)
|
||||
File: Box (no auto-title, OpenLayers/Handler/Box.js)
|
||||
File: Click (no auto-title, OpenLayers/Handler/Click.js)
|
||||
File: Drag (no auto-title, OpenLayers/Handler/Drag.js)
|
||||
File: Feature (no auto-title, OpenLayers/Handler/Feature.js)
|
||||
File: Hover (no auto-title, OpenLayers/Handler/Hover.js)
|
||||
File: Keyboard (no auto-title, OpenLayers/Handler/Keyboard.js)
|
||||
File: MouseWheel (no auto-title, OpenLayers/Handler/MouseWheel.js)
|
||||
File: Path (no auto-title, OpenLayers/Handler/Path.js)
|
||||
File: Pinch (no auto-title, OpenLayers/Handler/Pinch.js)
|
||||
File: Point (no auto-title, OpenLayers/Handler/Point.js)
|
||||
File: Polygon (no auto-title, OpenLayers/Handler/Polygon.js)
|
||||
File: RegularPolygon (no auto-title, OpenLayers/Handler/RegularPolygon.js)
|
||||
} # Group: Handler
|
||||
|
||||
File: Icon (no auto-title, OpenLayers/Icon.js)
|
||||
|
||||
Group: Lang {
|
||||
|
||||
File: Lang (no auto-title, OpenLayers/Lang.js)
|
||||
File: ar (no auto-title, OpenLayers/Lang/ar.js)
|
||||
File: be-tarask (no auto-title, OpenLayers/Lang/be-tarask.js)
|
||||
File: bg (no auto-title, OpenLayers/Lang/bg.js)
|
||||
File: br (no auto-title, OpenLayers/Lang/br.js)
|
||||
File: ca (no auto-title, OpenLayers/Lang/ca.js)
|
||||
File: cs-CZ (no auto-title, OpenLayers/Lang/cs-CZ.js)
|
||||
File: da-DK (no auto-title, OpenLayers/Lang/da-DK.js)
|
||||
File: de (no auto-title, OpenLayers/Lang/de.js)
|
||||
File: en (no auto-title, OpenLayers/Lang/en.js)
|
||||
File: en-CA (no auto-title, OpenLayers/Lang/en-CA.js)
|
||||
File: es (no auto-title, OpenLayers/Lang/es.js)
|
||||
File: el (no auto-title, OpenLayers/Lang/el.js)
|
||||
File: fi (no auto-title, OpenLayers/Lang/fi.js)
|
||||
File: fr (no auto-title, OpenLayers/Lang/fr.js)
|
||||
File: fur (no auto-title, OpenLayers/Lang/fur.js)
|
||||
File: gl (no auto-title, OpenLayers/Lang/gl.js)
|
||||
File: gsw (no auto-title, OpenLayers/Lang/gsw.js)
|
||||
File: hr (no auto-title, OpenLayers/Lang/hr.js)
|
||||
File: hsb (no auto-title, OpenLayers/Lang/hsb.js)
|
||||
File: hu (no auto-title, OpenLayers/Lang/hu.js)
|
||||
File: ia (no auto-title, OpenLayers/Lang/ia.js)
|
||||
File: id (no auto-title, OpenLayers/Lang/id.js)
|
||||
File: io (no auto-title, OpenLayers/Lang/io.js)
|
||||
File: is (no auto-title, OpenLayers/Lang/is.js)
|
||||
File: it (no auto-title, OpenLayers/Lang/it.js)
|
||||
File: ja (no auto-title, OpenLayers/Lang/ja.js)
|
||||
File: km (no auto-title, OpenLayers/Lang/km.js)
|
||||
File: ksh (no auto-title, OpenLayers/Lang/ksh.js)
|
||||
File: lt (no auto-title, OpenLayers/Lang/lt.js)
|
||||
File: nds (no auto-title, OpenLayers/Lang/nds.js)
|
||||
File: nb (no auto-title, OpenLayers/Lang/nb.js)
|
||||
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: 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)
|
||||
File: sv-SE (no auto-title, OpenLayers/Lang/sv-SE.js)
|
||||
File: te (no auto-title, OpenLayers/Lang/te.js)
|
||||
File: vi (no auto-title, OpenLayers/Lang/vi.js)
|
||||
File: zh-CN (no auto-title, OpenLayers/Lang/zh-CN.js)
|
||||
File: zh-TW (no auto-title, OpenLayers/Lang/zh-TW.js)
|
||||
} # Group: Lang
|
||||
|
||||
Group: Layer {
|
||||
|
||||
File: Layer (no auto-title, OpenLayers/Layer.js)
|
||||
File: ArcGISCache.js (no auto-title, OpenLayers/Layer/ArcGISCache.js)
|
||||
File: ArcGIS93Rest (no auto-title, OpenLayers/Layer/ArcGIS93Rest.js)
|
||||
File: ArcIMS (no auto-title, OpenLayers/Layer/ArcIMS.js)
|
||||
File: Bing (no auto-title, OpenLayers/Layer/Bing.js)
|
||||
File: Boxes (no auto-title, OpenLayers/Layer/Boxes.js)
|
||||
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: Google (no auto-title, OpenLayers/Layer/Google.js)
|
||||
File: Google.v3 (no auto-title, OpenLayers/Layer/Google/v3.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)
|
||||
File: KaMap (no auto-title, OpenLayers/Layer/KaMap.js)
|
||||
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: Markers (no auto-title, OpenLayers/Layer/Markers.js)
|
||||
File: OSM (no auto-title, OpenLayers/Layer/OSM.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)
|
||||
File: Text (no auto-title, OpenLayers/Layer/Text.js)
|
||||
File: TileCache (no auto-title, OpenLayers/Layer/TileCache.js)
|
||||
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: WMS (no auto-title, OpenLayers/Layer/WMS.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: Zoomify (no auto-title, OpenLayers/Layer/Zoomify.js)
|
||||
} # Group: Layer
|
||||
|
||||
File: Map (no auto-title, OpenLayers/Map.js)
|
||||
|
||||
Group: Marker {
|
||||
|
||||
File: Marker (no auto-title, OpenLayers/Marker.js)
|
||||
File: Box (no auto-title, OpenLayers/Marker/Box.js)
|
||||
} # Group: Marker
|
||||
|
||||
Group: Popup {
|
||||
|
||||
File: Popup (no auto-title, OpenLayers/Popup.js)
|
||||
File: Anchored (no auto-title, OpenLayers/Popup/Anchored.js)
|
||||
File: Framed (no auto-title, OpenLayers/Popup/Framed.js)
|
||||
File: FramedCloud (no auto-title, OpenLayers/Popup/FramedCloud.js)
|
||||
} # Group: Popup
|
||||
|
||||
File: Projection (no auto-title, OpenLayers/Projection.js)
|
||||
|
||||
Group: Protocol {
|
||||
|
||||
File: Protocol (no auto-title, OpenLayers/Protocol.js)
|
||||
File: HTTP (no auto-title, OpenLayers/Protocol/HTTP.js)
|
||||
|
||||
Group: WFS {
|
||||
|
||||
File: WFS (no auto-title, OpenLayers/Protocol/WFS.js)
|
||||
File: v1 (no auto-title, OpenLayers/Protocol/WFS/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Protocol/WFS/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Protocol/WFS/v1_1_0.js)
|
||||
} # Group: WFS
|
||||
|
||||
File: Script (no auto-title, OpenLayers/Protocol/Script.js)
|
||||
File: SOS.DEFAULTS (no auto-title, OpenLayers/Protocol/SOS.js)
|
||||
File: SOS.v1_0_0 (no auto-title, OpenLayers/Protocol/SOS/v1_0_0.js)
|
||||
} # Group: Protocol
|
||||
|
||||
Group: Renderer {
|
||||
|
||||
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: SVG (no auto-title, OpenLayers/Renderer/SVG.js)
|
||||
File: VML (no auto-title, OpenLayers/Renderer/VML.js)
|
||||
} # Group: Renderer
|
||||
|
||||
Group: Request {
|
||||
|
||||
File: Request (no auto-title, OpenLayers/Request.js)
|
||||
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)
|
||||
|
||||
Group: Strategy {
|
||||
|
||||
File: Strategy (no auto-title, OpenLayers/Strategy.js)
|
||||
File: BBOX (no auto-title, OpenLayers/Strategy/BBOX.js)
|
||||
File: Cluster (no auto-title, OpenLayers/Strategy/Cluster.js)
|
||||
File: Filter (no auto-title, OpenLayers/Strategy/Filter.js)
|
||||
File: Fixed (no auto-title, OpenLayers/Strategy/Fixed.js)
|
||||
File: Paging (no auto-title, OpenLayers/Strategy/Paging.js)
|
||||
File: Refresh (no auto-title, OpenLayers/Strategy/Refresh.js)
|
||||
File: Save (no auto-title, OpenLayers/Strategy/Save.js)
|
||||
} # Group: Strategy
|
||||
|
||||
File: Style (no auto-title, OpenLayers/Style.js)
|
||||
File: Style2 (no auto-title, OpenLayers/Style2.js)
|
||||
File: StyleMap (no auto-title, OpenLayers/StyleMap.js)
|
||||
|
||||
Group: Symbolizer {
|
||||
|
||||
File: Symbolizer (no auto-title, OpenLayers/Symbolizer.js)
|
||||
File: Line (no auto-title, OpenLayers/Symbolizer/Line.js)
|
||||
File: Point (no auto-title, OpenLayers/Symbolizer/Point.js)
|
||||
File: Polygon (no auto-title, OpenLayers/Symbolizer/Polygon.js)
|
||||
File: Raster (no auto-title, OpenLayers/Symbolizer/Raster.js)
|
||||
File: Text (no auto-title, OpenLayers/Symbolizer/Text.js)
|
||||
} # Group: Symbolizer
|
||||
|
||||
Group: Tile {
|
||||
|
||||
File: Tile (no auto-title, OpenLayers/Tile.js)
|
||||
File: Image (no auto-title, OpenLayers/Tile/Image.js)
|
||||
File: Image.IFrame (no auto-title, OpenLayers/Tile/Image/IFrame.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 {
|
||||
|
||||
Index: Everything
|
||||
Class Index: Classes
|
||||
Constant Index: Constants
|
||||
Function Index: Functions
|
||||
Property Index: Properties
|
||||
File Index: Files
|
||||
Constructor Index: Constructor
|
||||
} # Group: Index
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
p {
|
||||
text-indent: 0; margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.MGroup {
|
||||
font-variant: normal;
|
||||
margin: 0.4em 0 0em 10px
|
||||
}
|
||||
|
||||
.MTitle {
|
||||
font-variant: normal;
|
||||
}
|
||||
|
||||
.CGroup .CTitle {
|
||||
font-variant: normal;
|
||||
}
|
||||
|
||||
.SGroup .SEntry {
|
||||
font-variant: normal;
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
Format: 1.52
|
||||
|
||||
# This is the Natural Docs topics file for this project. If you change anything
|
||||
# here, it will apply to THIS PROJECT ONLY. If you'd like to change something
|
||||
# for all your projects, edit the Topics.txt in Natural Docs' Config directory
|
||||
# instead.
|
||||
|
||||
|
||||
Ignore Keywords:
|
||||
function, functions
|
||||
func, funcs
|
||||
procedure, procedures
|
||||
proc, procs
|
||||
routine, routines
|
||||
subroutine, subroutines
|
||||
sub, subs
|
||||
method, methods
|
||||
callback, callbacks
|
||||
property, properties
|
||||
prop, props
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# SYNTAX:
|
||||
#
|
||||
# Topic Type: [name]
|
||||
# Alter Topic Type: [name]
|
||||
# Creates a new topic type or alters one from the main file. Each type gets
|
||||
# its own index and behavior settings. Its name can have letters, numbers,
|
||||
# spaces, and these charaters: - / . '
|
||||
#
|
||||
# Plural: [name]
|
||||
# Sets the plural name of the topic type, if different.
|
||||
#
|
||||
# Keywords:
|
||||
# [keyword]
|
||||
# [keyword], [plural keyword]
|
||||
# ...
|
||||
# Defines or adds to the list of keywords for the topic type. They may only
|
||||
# contain letters, numbers, and spaces and are not case sensitive. Plural
|
||||
# keywords are used for list topics. You can redefine keywords found in the
|
||||
# main topics file.
|
||||
#
|
||||
# Index: [yes|no]
|
||||
# Whether the topics get their own index. Defaults to yes. Everything is
|
||||
# included in the general index regardless of this setting.
|
||||
#
|
||||
# Scope: [normal|start|end|always global]
|
||||
# How the topics affects scope. Defaults to normal.
|
||||
# normal - Topics stay within the current scope.
|
||||
# start - Topics start a new scope for all the topics beneath it,
|
||||
# like class topics.
|
||||
# end - Topics reset the scope back to global for all the topics
|
||||
# beneath it.
|
||||
# always global - Topics are defined as global, but do not change the scope
|
||||
# for any other topics.
|
||||
#
|
||||
# Class Hierarchy: [yes|no]
|
||||
# Whether the topics are part of the class hierarchy. Defaults to no.
|
||||
#
|
||||
# Page Title If First: [yes|no]
|
||||
# Whether the topic's title becomes the page title if it's the first one in
|
||||
# a file. Defaults to no.
|
||||
#
|
||||
# Break Lists: [yes|no]
|
||||
# Whether list topics should be broken into individual topics in the output.
|
||||
# Defaults to no.
|
||||
#
|
||||
# Can Group With: [type], [type], ...
|
||||
# Defines a list of topic types that this one can possibly be grouped with.
|
||||
# Defaults to none.
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# The following topics are defined in the main file, if you'd like to alter
|
||||
# their behavior or add keywords:
|
||||
#
|
||||
# Generic, Class, Interface, Section, File, Group, Function, Variable,
|
||||
# Property, Type, Constant, Enumeration, Event, Delegate, Macro,
|
||||
# Database, Database Table, Database View, Database Index, Database
|
||||
# Cursor, Database Trigger, Cookie, Build Target
|
||||
|
||||
# If you add something that you think would be useful to other developers
|
||||
# and should be included in Natural Docs by default, please e-mail it to
|
||||
# topics [at] naturaldocs [dot] org.
|
||||
|
||||
|
||||
Topic Type: Constructor
|
||||
|
||||
Class Hierarchy: Yes
|
||||
Keywords:
|
||||
constructor
|
||||
initialize
|
||||
|
||||
|
||||
Alter Topic Type: Function
|
||||
|
||||
Add Keywords:
|
||||
apimethod
|
||||
apifunction
|
||||
|
||||
|
||||
Alter Topic Type: Property
|
||||
|
||||
Add Keywords:
|
||||
apiproperty
|
||||
@@ -1,25 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
|
||||
<!ENTITY ns_svg "http://www.w3.org/2000/svg">
|
||||
]>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
|
||||
<!ENTITY ns_svg "http://www.w3.org/2000/svg">
|
||||
]>
|
||||
<svg version="1.1" id="Layer_1" xmlns:i="&ns_ai;"
|
||||
xmlns="&ns_svg;" width="20.5" height="24.5" viewBox="0 0 20.5 24.5"
|
||||
overflow="visible" enable-background="new 0 0 20.5 24.5" xml:space="preserve">
|
||||
<g i:extraneous="self">
|
||||
<rect x="0.25" y="0.25" opacity="0" stroke="#000000" stroke-width="1" width="20" height="24"/>
|
||||
<g id="XMLID_2_">
|
||||
<g>
|
||||
<polygon fill="#FF0000" points="10.12,0.6 19.93,7.71 10.06,24.03 0.6,7.58 "/>
|
||||
</g>
|
||||
<g>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="1" points="9.98,24.16 10.06,24.03 19.93,7.71 20.06,7.49 "/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="1" points="10.13,24.16 10.06,24.03 0.6,7.58 0.5,7.41 "/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="1" points="0.41,7.72 0.6,7.58 10.12,0.6 10.29,0.47 "/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="1" points="9.94,0.47 10.12,0.6 19.93,7.71 20.06,7.8 "/>
|
||||
</g>
|
||||
</g>
|
||||
<ellipse stroke="#000000" stroke-width="1" cx="10.125" cy="9.25" rx="1.5" ry="1.5"/>
|
||||
</g>
|
||||
</svg>
|
||||
xmlns="&ns_svg;" width="20.5" height="24.5" viewBox="0 0 20.5 24.5"
|
||||
overflow="visible" enable-background="new 0 0 20.5 24.5" xml:space="preserve">
|
||||
<g i:extraneous="self">
|
||||
<rect x="0.25" y="0.25" opacity="0" stroke="#000000" stroke-width="1" width="20" height="24"/>
|
||||
<g id="XMLID_2_">
|
||||
<g>
|
||||
<polygon fill="#FF0000" points="10.12,0.6 19.93,7.71 10.06,24.03 0.6,7.58 "/>
|
||||
</g>
|
||||
<g>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="1" points="9.98,24.16 10.06,24.03 19.93,7.71 20.06,7.49 "/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="1" points="10.13,24.16 10.06,24.03 0.6,7.58 0.5,7.41 "/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="1" points="0.41,7.72 0.6,7.58 10.12,0.6 10.29,0.47 "/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="1" points="9.94,0.47 10.12,0.6 19.93,7.71 20.06,7.8 "/>
|
||||
</g>
|
||||
</g>
|
||||
<ellipse stroke="#000000" stroke-width="1" cx="10.125" cy="9.25" rx="1.5" ry="1.5"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
56
authors.txt
56
authors.txt
@@ -1,56 +0,0 @@
|
||||
OpenLayers contributors:
|
||||
|
||||
Antoine Abt
|
||||
Mike Adair
|
||||
Jeff Adams
|
||||
Seb Benthall
|
||||
Bruno Binet
|
||||
Stéphane Brunner
|
||||
Howard Butler
|
||||
Bertil Chaupis
|
||||
John Cole
|
||||
Tim Coulter
|
||||
Robert Coup
|
||||
Jeff Dege
|
||||
Roald de Wit
|
||||
Schuyler Erle
|
||||
Christian López Espínola
|
||||
John Frank
|
||||
Sean Gilles
|
||||
Pierre Giraud
|
||||
Ivan Grcic
|
||||
Andreas Hocevar
|
||||
Marc Jansen
|
||||
Ian Johnson
|
||||
Frédéric Junod
|
||||
Eric Lemoine
|
||||
Philip Lindsay
|
||||
Martijn van Oosterhout
|
||||
David Overstrom
|
||||
Corey Puffault
|
||||
Peter William Robins
|
||||
Gregers Rygg
|
||||
Tim Schaub
|
||||
Christopher Schmidt
|
||||
Cameron Shorter
|
||||
Pedro Simonetti
|
||||
Paul Spencer
|
||||
Paul Smith
|
||||
Glen Stampoultzis
|
||||
James Stembridge
|
||||
Erik Uzureau
|
||||
Bart van den Eijnden
|
||||
Ivan Willig
|
||||
Thomas Wood
|
||||
Bill Woodall
|
||||
Steve Woodbridge
|
||||
David Zwarg
|
||||
|
||||
Some portions of OpenLayers are used under the Apache 2.0 license, available
|
||||
in doc/licenses/APACHE-2.0.txt.
|
||||
|
||||
Some portions of OpenLayers are used under the MIT license, availabie in
|
||||
doc/licenses/MIT-LICENSE.txt.
|
||||
|
||||
Some portions of OpenLayers are Copyright 2001 Robert Penner, and are used
|
||||
under the BSD license, available in doc/licenses/BSD-LICENSE.txt
|
||||
@@ -1,46 +1,14 @@
|
||||
The OpenLayers build tool supports several different
|
||||
forms of compressing your javascript code, and a method
|
||||
of describing build profiles to create customized
|
||||
OpenLayers builds with only the components you need.
|
||||
|
||||
When building a file, you can choose to build with several
|
||||
different compression options to the Python-based build.py
|
||||
script. The following is an example script:
|
||||
## HowTo: Build & deploy "Shrunk" Single File Library version of OpenLayers ##
|
||||
|
||||
python build.py -c closure full OpenLayers-closure.js
|
||||
* Build:
|
||||
|
||||
This script selects the 'closure' compression mechanism,
|
||||
uses a config file called 'full.cfg', and writes the output
|
||||
to OpenLayers-closure.js.
|
||||
cd build
|
||||
./build.sh
|
||||
cd ..
|
||||
|
||||
The options available for compression are:
|
||||
* Upload the result to the server: e.g.
|
||||
|
||||
* closure
|
||||
This requires you to have a closure-compiler.jar in your
|
||||
tools directory. You can do this by fetching the compiler
|
||||
from:
|
||||
|
||||
http://closure-compiler.googlecode.com/files/compiler-latest.zip
|
||||
|
||||
Then unzipping that file, and placing compiler.jar into tools
|
||||
and renaming it closure-compiler.jar.
|
||||
|
||||
* closure_ws
|
||||
This uses the closure compiler webservice. This will only work
|
||||
for files source Javascript files which are under 1MB. (Note that
|
||||
the default OpenLayers full build is not under 1MB.)
|
||||
|
||||
* jsmin
|
||||
jsmin is the default compiler, and uses the Python-based
|
||||
jsmin script to compress the Javascript.
|
||||
|
||||
* minimize
|
||||
This is a simple whitespace removing Python script, designed
|
||||
to fill in when other tools are unavailable.
|
||||
|
||||
* none
|
||||
None will leave the Javascript uncompressed.
|
||||
scp build/OpenLayers.js openlayers@openlayers.org:openlayers.org/htdocs/code/
|
||||
|
||||
|
||||
For more information on the build script and custom build profiles,
|
||||
see http://docs.openlayers.org/library/deploying.html
|
||||
|
||||
165
build/build.py
165
build/build.py
@@ -1,158 +1,27 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import os
|
||||
sys.path.append("../tools")
|
||||
import mergejs
|
||||
import optparse
|
||||
|
||||
def build(config_file = None, output_file = None, options = None):
|
||||
have_compressor = []
|
||||
try:
|
||||
import jsmin
|
||||
have_compressor.append("jsmin")
|
||||
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
|
||||
have_compressor.append("closure")
|
||||
except Exception, E:
|
||||
print "No closure (%s)" % E
|
||||
try:
|
||||
import closure_ws
|
||||
have_compressor.append("closure_ws")
|
||||
except ImportError:
|
||||
print "No closure_ws"
|
||||
|
||||
try:
|
||||
import minimize
|
||||
have_compressor.append("minimize")
|
||||
except ImportError:
|
||||
print "No minimize"
|
||||
import jsmin, mergejs
|
||||
|
||||
try:
|
||||
import uglify_js
|
||||
uglify_js.check_available()
|
||||
have_compressor.append("uglify-js")
|
||||
except Exception, E:
|
||||
print "No uglify-js (%s)" % E
|
||||
sourceDirectory = "../lib"
|
||||
configFilename = "library.cfg"
|
||||
outputFilename = "OpenLayers.js"
|
||||
|
||||
use_compressor = None
|
||||
if options.compressor and options.compressor in have_compressor:
|
||||
use_compressor = options.compressor
|
||||
if len(sys.argv) > 1:
|
||||
configFilename = sys.argv[1] + ".cfg"
|
||||
if len(sys.argv) > 2:
|
||||
outputFilename = sys.argv[2]
|
||||
|
||||
sourceDirectory = "../lib"
|
||||
configFilename = "full.cfg"
|
||||
outputFilename = "OpenLayers.js"
|
||||
print "Merging libraries."
|
||||
merged = mergejs.run(sourceDirectory, None, configFilename)
|
||||
print "Compressing."
|
||||
minimized = jsmin.jsmin(merged)
|
||||
print "Adding license file."
|
||||
minimized = file("license.txt").read() + minimized
|
||||
|
||||
if config_file:
|
||||
configFilename = config_file
|
||||
extension = configFilename[-4:]
|
||||
print "Writing to %s." % outputFilename
|
||||
file(outputFilename, "w").write(minimized)
|
||||
|
||||
if extension != ".cfg":
|
||||
configFilename = config_file + ".cfg"
|
||||
|
||||
if output_file:
|
||||
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)
|
||||
|
||||
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."
|
||||
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."
|
||||
|
||||
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."
|
||||
minimized = file("license.txt").read() + minimized
|
||||
|
||||
print "Writing to %s." % outputFilename
|
||||
file(outputFilename, "w").write(minimized)
|
||||
|
||||
print "Done."
|
||||
|
||||
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)
|
||||
(options, args) = opt.parse_args()
|
||||
if not len(args):
|
||||
build(options=options)
|
||||
elif len(args) == 1:
|
||||
build(args[0], options=options)
|
||||
elif len(args) == 2:
|
||||
build(args[0], args[1], options=options)
|
||||
else:
|
||||
print "Wrong number of arguments"
|
||||
print "Done."
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
sys.path.append("../tools")
|
||||
|
||||
import jsmin, mergejs
|
||||
|
||||
sourceDirectory = "../lib"
|
||||
configFilename = "full.cfg"
|
||||
outputFilename = "OpenLayers.js"
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
configFilename = sys.argv[1] + ".cfg"
|
||||
if len(sys.argv) > 2:
|
||||
outputFilename = sys.argv[2]
|
||||
|
||||
print "Merging libraries."
|
||||
merged = mergejs.run(sourceDirectory, None, configFilename)
|
||||
print "Adding license file."
|
||||
merged = file("license.txt").read() + merged
|
||||
|
||||
print "Writing to %s." % outputFilename
|
||||
file(outputFilename, "w").write(merged)
|
||||
|
||||
print "Done."
|
||||
@@ -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){};
|
||||
|
||||
39
build/docs.sh
Executable file
39
build/docs.sh
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/bin/sh
|
||||
|
||||
rm ../doc/reference.html
|
||||
CLASSES="Map Layer Layer.Image Layer.HTTPRequest Layer.Grid Layer.WMS Layer.KaMap Layer.EventPane Layer.Google Layer.VirtualEarth Layer.Markers Layer.Text Layer.GeoRSS Layer.Boxes Layer.TMS Icon Marker Marker.Box Tile Tile.Image Tile.WFS Control Control.LayerSwitcher Control.MouseDefaults Control.MousePosition Control.MouseToolbar Control.OverviewMap Control.PanZoom Control.PanZoomBar Control.Permalink Control.Scale LonLat Size Pixel Bounds Util Ajax"
|
||||
echo "<html>
|
||||
<head>
|
||||
<title>OpenLayers Class Reference Documentation</title>
|
||||
<style type='text/css'>
|
||||
.type { background-color: #ddd }
|
||||
td { border: black solid 1px; padding: 3px; }
|
||||
table { border-collapse: collapse; margin: 5px 10px; }
|
||||
.classref { margin-left: 20px; }
|
||||
div.index { float:left; width: 300px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>" >> ../doc/reference.html
|
||||
|
||||
for i in $CLASSES; do
|
||||
echo "<div class='index'><a href='#OpenLayers.$i'>OpenLayers.$i</a></div>" >> ../doc/reference.html
|
||||
done
|
||||
|
||||
echo "<br style='clear:both' />" >> ../doc/reference.html
|
||||
|
||||
for i in $CLASSES; do
|
||||
cat ../doc/$i.txt | \
|
||||
perl -pe 's!^(.*?) -- (.*?) -- (.*?)$! <tr><td>$1</td><td>$2</td><td>$3</td></tr>!g;
|
||||
s!^( \* )?(.*?) -- (.*?)$! <tr><td>$2</td><td>$3</td></tr>!g;
|
||||
s!^ \* (.*)$! </table>\n\n<h3>$1</h3>\n <table>!;
|
||||
s!{OpenLayers.(.*?)\|(.*?)}!<a href="#OpenLayers.$1" title="OpenLayers.$1">\2</a>!g;
|
||||
s!{OpenLayers.(.*?)}!<a href="#OpenLayers.$1" title="OpenLayers.$1">OpenLayers.$1</a>!;
|
||||
s!{([A-Za-z]+?)\|(.+?)}!<span class="type" title="$1">\2<\/span>!g;
|
||||
s!{([A-Za-z]+?)}!<span class="type" title="$1">$1<\/span>!g;
|
||||
s!^\* (.*)$!</table>\n<h2>$1</h2>\n<table>!;
|
||||
s!^OpenLayers\.(.*)$!<h1><a name="OpenLayers.$1">OpenLayers.$1</a></h1><div class="classref">!' \
|
||||
>> ../doc/reference.html
|
||||
echo '</table></div>' >> ../doc/reference.html
|
||||
done
|
||||
echo " </body>
|
||||
</html>" >> ../doc/reference.html
|
||||
@@ -1,14 +0,0 @@
|
||||
# This is the full build with all files: this includes the vector-related files
|
||||
# like Renderers and Formats.
|
||||
|
||||
[first]
|
||||
|
||||
[last]
|
||||
|
||||
[include]
|
||||
|
||||
[exclude]
|
||||
Firebug
|
||||
OpenLayers.js
|
||||
OpenLayers/Lang
|
||||
deprecated.js
|
||||
13
build/library.cfg
Normal file
13
build/library.cfg
Normal file
@@ -0,0 +1,13 @@
|
||||
[first]
|
||||
OpenLayers/SingleFile.js
|
||||
OpenLayers.js
|
||||
OpenLayers/BaseTypes.js
|
||||
OpenLayers/Util.js
|
||||
Rico/Corner.js
|
||||
|
||||
[last]
|
||||
|
||||
[include]
|
||||
|
||||
[exclude]
|
||||
OpenLayers/Control/KeyboardDefaults.js
|
||||
@@ -2,56 +2,44 @@
|
||||
|
||||
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-2007 MetaCarta, Inc., released under the BSD license.
|
||||
Please see http://svn.openlayers.org/trunk/openlayers/release-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 XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>
|
||||
* Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)
|
||||
/* Contains portions of Prototype.js:
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
* 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.
|
||||
*
|
||||
**/
|
||||
|
||||
/**
|
||||
* OpenLayers.Util.pagePosition is based on Yahoo's getXY method, which is
|
||||
* Copyright (c) 2006, Yahoo! Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use of this software in source and binary forms, with or
|
||||
* without modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * 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.
|
||||
*
|
||||
* * Neither the name of Yahoo! Inc. nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission of Yahoo! Inc.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT OWNER OR CONTRIBUTORS 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.
|
||||
*/
|
||||
|
||||
@@ -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]
|
||||
@@ -1,17 +1,20 @@
|
||||
# This file includes a small subset of OpenLayers code, designed to be
|
||||
# integrated into another application. It includes only the Layer types
|
||||
# neccesary to create tiled or untiled WMS, and does not include any Controls.
|
||||
# This is the result of what was at the time called "Webmap.js" at the FOSS4G
|
||||
# Web Mapping BOF.
|
||||
|
||||
[first]
|
||||
OpenLayers/SingleFile.js
|
||||
OpenLayers.js
|
||||
OpenLayers/BaseTypes.js
|
||||
OpenLayers/Util.js
|
||||
|
||||
[last]
|
||||
|
||||
[include]
|
||||
OpenLayers/Events.js
|
||||
OpenLayers/Map.js
|
||||
OpenLayers/Layer.js
|
||||
OpenLayers/Layer/Grid.js
|
||||
OpenLayers/Layer/HTTPRequest.js
|
||||
OpenLayers/Layer/WMS.js
|
||||
OpenLayers/Layer/WMS/Untiled.js
|
||||
OpenLayers/Tile.js
|
||||
OpenLayers/Tile/Image.js
|
||||
|
||||
[exclude]
|
||||
|
||||
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
[first]
|
||||
|
||||
[last]
|
||||
|
||||
[include]
|
||||
OpenLayers/Map.js
|
||||
OpenLayers/Kinetic.js
|
||||
OpenLayers/Projection.js
|
||||
OpenLayers/Layer/OSM.js
|
||||
OpenLayers/Layer/Bing.js
|
||||
OpenLayers/Layer/WMS.js
|
||||
OpenLayers/Control/TouchNavigation.js
|
||||
OpenLayers/Control/Geolocate.js
|
||||
OpenLayers/Control/Zoom.js
|
||||
OpenLayers/Control/Attribution.js
|
||||
OpenLayers/Control/SelectFeature.js
|
||||
OpenLayers/Control/DrawFeature.js
|
||||
OpenLayers/Control/ModifyFeature.js
|
||||
OpenLayers/Control/Panel.js
|
||||
OpenLayers/Handler/Point.js
|
||||
OpenLayers/Handler/Path.js
|
||||
OpenLayers/Handler/Polygon.js
|
||||
OpenLayers/Layer/Vector.js
|
||||
OpenLayers/Renderer/SVG.js
|
||||
OpenLayers/Renderer/Canvas.js
|
||||
OpenLayers/Format/GeoJSON.js
|
||||
OpenLayers/Format/KML.js
|
||||
OpenLayers/Protocol/HTTP.js
|
||||
OpenLayers/Protocol/WFS.js
|
||||
OpenLayers/Protocol/WFS/v1_0_0.js
|
||||
OpenLayers/Strategy/Fixed.js
|
||||
OpenLayers/TileManager.js
|
||||
|
||||
[exclude]
|
||||
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
# This build config is supposed to be used for the units tests with "mode=build"
|
||||
|
||||
[first]
|
||||
|
||||
[last]
|
||||
|
||||
[include]
|
||||
|
||||
[exclude]
|
||||
Firebug
|
||||
OpenLayers.js
|
||||
9
doc/Ajax.txt
Normal file
9
doc/Ajax.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
OpenLayers contains a number of helper functions for working with AJAX.
|
||||
|
||||
* Methods
|
||||
OpenLayers.loadURL({String|uri}, {String|params}, {Object|caller}, {function|onComplete}, {function|onFailure}) -- none -- This function sends an XMLHTTPRequest to a remote site, specified by URI, with the params string given as the params argument. Caller is bound as 'this' to the function specified by either onComplete or onFailure.
|
||||
OpenLayers.parseXMLString({String|text}) -- {AJAXResponse} -- Accepts a block of text, and creates a DOM response document from the text.
|
||||
|
||||
* Parameters
|
||||
OpenLayers.ProxyHost -- When initiating an AJAX request, any URL that is absolute is prefixed with OpenLayers.ProxyHost. The ProxyHost is designed to accept a URL and return the content, in an effort to work around cross-browser security restrictions. This defaults to null, but if you wish to access content from another domain that Javascript would restrict access to, you must set this to be the URL which will accept a URL encoded version of the passed URL and return the content at that URL. An example is available as proxy.txt in the examples/ directory.
|
||||
|
||||
21
doc/Bounds.txt
Normal file
21
doc/Bounds.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
OpenLayers.Bounds
|
||||
|
||||
This class represents a bounding box. Data stores as left, bottom, right, top floats.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Bounds(left, bottom, right, top) -- Create new Bounds.
|
||||
|
||||
* Methods
|
||||
clone() -- {OpenLayers.Bounds} -- Return copy of the current bounds.
|
||||
toString() -- {String} -- Return bounds as string.
|
||||
toBBOX() -- {String} -- Return bounds as simple string, usable for WMS.
|
||||
getWidth() -- {float} -- Return width of bounds.
|
||||
getHeight() -- {float} -- Return height of bounds.
|
||||
getSize() -- {OpenLayers.Size} -- Return size of bounds.
|
||||
getCenterPixel() -- {OpenLayers.Pixel} -- Return center of bounds as pixel.
|
||||
getCenterLonLat() -- {OpenLayers.LonLat} -- Return center of bounds as LonLat.
|
||||
equals({OpenLayers.Bounds|bounds}) -- {Boolean} -- whether or not the bounds are equivilant.
|
||||
add({float|x}, {float|y}) -- {OpenLayers.Bounds} -- Shift bounds by x and y.
|
||||
contains({float|x}, {float|y}, {Boolean|inclusive}) -- {Boolean} -- Return Whether or not the passed-in coordinates are within this bounds
|
||||
containsBounds({OpenLayers.Bounds|bounds}, {Boolean|partial}, {Boolean|inclusive}) -- {Boolean} -- Returns whether or not the passed-in OpenLayers.Bounds object is contained within this bounds. partial indicates whether bounds must be contained or only overlap. Inclusive determines whether border is included.
|
||||
determineQuadrant({OpenLayers.LonLat|lonlat}) -- {String} -- Determine which quadrant the LonLat is in. Returns combination of "b" or "t" and "l" or "r".
|
||||
14
doc/Control.LayerSwitcher.txt
Normal file
14
doc/Control.LayerSwitcher.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
OpenLayers.Control.LayerSwitcher
|
||||
|
||||
This control will by default display a small image in the upper right corner of the map. When clicked, this image expands into a control which allows one to select between multiple types of layers, seperated into two types: Base Layers and Overlays. Only one base layer can be selected at a time, and is enforced by a radio button control being used. Multiple overlays can be selected at once, and a checkbox control is visible for this functionality.
|
||||
* Constructor
|
||||
OpenLayers.Control.LayerSwitcher({Object|options}?) -- Creates a new control.
|
||||
|
||||
* Methods
|
||||
maximizeControl() -- none -- Expand the layer switcher control.
|
||||
minimizeControl() -- none -- Close the layer switcher control.
|
||||
|
||||
* Parameters
|
||||
position -- (inherited from {OpenLayers.Control}) {OpenLayers.Pixel} to use as the top-left corner of the control div, relative to the map area.
|
||||
activeColor -- The color to use for the background of the layer switcher div.
|
||||
ascending -- Ascending determines whether layers are added to the layer switcher in ascending or descending order. If ascending is true, the lowest layer is appended to the list first. If ascending is false, the lowest layer is at the very bottom of the LayerSwitcher. Default is true.
|
||||
19
doc/Control.MouseDefaults.txt
Normal file
19
doc/Control.MouseDefaults.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
OpenLayers.Control.MouseDefaults
|
||||
|
||||
Control to set up mouse handling. This includes clicks, double clicks, scrollwheel events, and mouse movement. There are a number of functions which act as the default handlers for these events: if you wish to create your own mouse control which behaves differently, you should create a subclass of MouseDefaults, replacing the functions whose behavior you wish to change.
|
||||
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Control() -- Creates a new control. No options available.
|
||||
|
||||
* Methods
|
||||
defaultClick -- none -- This event takes place when a click event occurs on the map.
|
||||
defaultDblClick -- none -- This event re-centers the map on the clicked location.
|
||||
defaultMouseDown -- none -- This event starts a dragging event, so that the map can be dragged. If the shift key is held, it starts a 'zoombox' or rubber-band-zoom action instead.
|
||||
defaultMouseMove -- none -- If a mouseDrag is in operation, this function causes the map to move to follow the cursor. If a zoombox is in place, this increases the size of the zoombox element to match the cursor.
|
||||
defaultMouseUp -- none -- This function is called when a mouseup event is received, and either sets the center of the map to be the final location or zooms to the zoombox if enabled.
|
||||
defaultMouseOut -- none -- This calls defaultMouseUp, so that when you mouse out of the map div, the events are stopped.
|
||||
defaultWheelUp -- none -- Zooms in one level. Called by onWheelEvent
|
||||
defaultWheelDown -- none -- Zooms out one level. Called by onWheelEvent.
|
||||
onWheelEvent -- none -- catches the map wheel event, and handles it, zooming appropriately.
|
||||
|
||||
32
doc/Control.MousePosition.txt
Normal file
32
doc/Control.MousePosition.txt
Normal file
@@ -0,0 +1,32 @@
|
||||
OpenLayers.Control.MousePosition
|
||||
|
||||
A small control which displays the Longitude and Latitude of the current mouse position, by defualt in the lower right of the map viewport.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Control.MousePosition({Object|options}) -- Creates a new MousePosition control.
|
||||
|
||||
|
||||
* Parameters
|
||||
|
||||
element -- if not null, div in which to display the MousePosition
|
||||
prefix -- html to precede the longitude value (default: '')
|
||||
separator -- html to separate the longitude and latitude values (default: '<br />')
|
||||
suffix -- html to follow the latitude value (default: '')
|
||||
numdigits -- number of digits to the right of the decimal (default: 5)
|
||||
granularity -- Don't refresh display if mouse has moved more than this (default: 10)
|
||||
|
||||
prefix, separator, and suffix are used to format the lon/lat values.
|
||||
|
||||
With:
|
||||
prefix = 'Lon: '
|
||||
suffix = '<br />Lat: '
|
||||
suffix = ''
|
||||
nudigits = 3
|
||||
Lon/Lat is displayed as:
|
||||
Lon: 95.123
|
||||
Lat: 35.456
|
||||
|
||||
If the mouse has never been over the map, Lon/Lat will equal 0/0. If the mouse is over the map, Lon/Lat will equal the current mouse position. If the mouse has been moved off the map, Lon/Lat will equal the value displayed at the time the mouse was moved off the map.
|
||||
|
||||
If the mouse is moving slowly, the Lon/Lat will refresh continuously. If the mouse is moving rapidly, the refresh of Lon/Lat will be suspended until the mouse has slowed down or stopped. (Trying to update the Lon/Lat value while the mouse is in rapid movemement makes the movement of the mouse unacceptably jerky.)
|
||||
|
||||
15
doc/Control.MouseToolbar.txt
Normal file
15
doc/Control.MouseToolbar.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
OpenLayers.Control.MouseToolbar
|
||||
|
||||
Control to set up mouse handling. This includes clicks, double clicks, scrollwheel events, and mouse movement. There are a number of functions which act as the default handlers for these events: if you wish to create your own mouse control which behaves differently, you should create a subclass of MouseToolbar, replacing the functions whose behavior you wish to change. Additionally, a toolbar of images can be clicked to start events, as well as using the keyboard shortcuts. Note that if you wish to use the MouseToolbar, you *must* add a 'controls' option to the map constructor, otherwise you will have both MouseDefaults and MouseToolbar on the map, which will not work.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Control.MouseToolbar({OpenLayers.Pixel|position}, {String|direction}) -- Creates a new control. The direction of the control can be either "vertical" or "horizontal". The default is vertical.
|
||||
|
||||
* Methods
|
||||
defaultClick -- none -- This event takes place when a click event occurs on the map.
|
||||
defaultDblClick -- none -- This event re-centers the map on the clicked location.
|
||||
defaultMouseDown -- none -- This event starts a dragging event, so that the map can be dragged. If the shift key is held, it starts a 'zoombox' or rubber-band-zoom action instead.
|
||||
defaultMouseMove -- none -- If a mouseDrag is in operation, this function causes the map to move to follow the cursor. If a zoombox is in place, this increases the size of the zoombox element to match the cursor.
|
||||
defaultMouseUp -- none -- This function is called when a mouseup event is received, and either sets the center of the map to be the final location or zooms to the zoombox if enabled.
|
||||
defaultMouseOut -- none -- This calls defaultMouseUp, so that when you mouse out of the map div, the events are stopped.
|
||||
|
||||
38
doc/Control.OverviewMap.txt
Normal file
38
doc/Control.OverviewMap.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
OpenLayers.Control.OverviewMap
|
||||
|
||||
This control provides a locator or overview map linked to another map. By default, the overview map shows up in the lower right of the main map and can be expdaned with the '+' button.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Control.OverviewMap(opts?) -- Creates a new overview map. The opts variable is an object with various options, as described in the options section below.
|
||||
|
||||
* Methods
|
||||
isSuitableOverview() -- {Boolean} -- Determines if the overview map is suitable given the extent and resolution of the main map.
|
||||
getRectPxBounds() -- {OpenLayers.Bounds|bounds} -- An OpenLayers.Bounds which is the extent rectangle's pixel bounds (relative to the parent element).
|
||||
setRectPxBounds({OpenLayers.Bounds|bounds}) -- none -- Set extent rectangle pixel bounds.
|
||||
getRectBoundsFromMapBounds({OpenLayers.Bounds|lonLatBounds}) -- {OpenLayers.Bounds|bounds} -- An OpenLayers.Bounds which is the passed-in map lon/lat extent translated into pixel bounds for the overview map.
|
||||
getMapBoundsFromRectBounds({OpenLayers.Bounds|pxBounds]}) -- {OpenLayers.Bounds|bounds} -- An OpenLayers.Bounds which is the passed-in overview rect bounds translated into lon/lat bounds for the overview map.
|
||||
getLonLatFromOverviewPx({OpenLayers.Pixel|pixel}) -- {OpenLayers.LonLat|lonlat} -- An OpenLayers.LonLat which is the passed-in overview map OpenLayers.Pixel translated into lon/lat by the overview map.
|
||||
getOverviewPxFromLonLat({OpenLayers.LonLat|lonlat}) -- {OpenLayers.Pixel|pixel} -- An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat, translated into overview map pixels
|
||||
|
||||
|
||||
* Events
|
||||
* Rectangle events
|
||||
They are defined on OverviewMap.rectEvents
|
||||
|
||||
mouseover -- rectangle is moused over
|
||||
mouseout -- rectangle is no longer mousedout
|
||||
mousemove -- mouse moves inside rectangle
|
||||
mousedown -- mouse button is pressed over the rectangle.
|
||||
mouseup -- mouse button is released over the rectangle.
|
||||
click -- mouse clicked
|
||||
dblclick -- mouse double clicked
|
||||
|
||||
* Map events
|
||||
They are defined on OverviewMap.mapDivEvents
|
||||
|
||||
click -- mouse clicked
|
||||
|
||||
* Options:
|
||||
* minRatio -- The ratio of the overview map resolution to the main map resolution at which to zoom farther out on the overview map.
|
||||
* maxRatio -- The ratio of the overview map resolution to the main map resolution at which to zoom farther in on the overview map.
|
||||
* layers -- Ordered list of layers in the overview map. If none, then the map base layer is used.
|
||||
9
doc/Control.PanZoom.txt
Normal file
9
doc/Control.PanZoom.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
OpenLayers.Control.PanZoom
|
||||
|
||||
Creates a small toolset for controlling the location of the map with panning and zooming, including four directional arrows, a zoom in and zoom out, and one button which zooms to the max extent of the map.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Control.PanZoom({Object|options}) -- Creates a new panzoom control.
|
||||
|
||||
* Parameters
|
||||
slideFactor -- Number of pixels by which to slide the map when a pan arrow is clicked.
|
||||
6
doc/Control.PanZoomBar.txt
Normal file
6
doc/Control.PanZoomBar.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
OpenLayers.Control.PanZoomBar
|
||||
|
||||
Creates a small toolset for controlling the location of the map with panning and zooming, including four directional arrows, a zoom in and zoom out, and a bar on which a slider can be moved to zoom in or out by multiple stops at once.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Control.PanZoomBar() -- Creates a new panzoombar control.
|
||||
6
doc/Control.Permalink.txt
Normal file
6
doc/Control.Permalink.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
OpenLayers.Control.Permalink
|
||||
|
||||
A small control which updates a "Permalink" to the map every time the viewport changes. This allows users to copy a link to a specfic map view. By default, it places itself in the lower right corner of the map. This control must be added to the map after a baselayer has been set.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Control.Scale({DOMElement|element}?, {String|base}) -- Creates a new permalink control. The DOMElement is used, if passed, as the element on which the 'href' is set. If you prefer to put this link on an element outside of the map, set this element to an anchor element to have its href updated when the map moves. If you wish to make the link go to some other URL (for example, an editing interface rather than the current URL), the 'base' property can be used, to which the ?lat=&lon=&zoom= will be appended after the map has moved.
|
||||
6
doc/Control.Scale.txt
Normal file
6
doc/Control.Scale.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
OpenLayers.Control.Scale
|
||||
|
||||
A small control which displays an informative scale value, a la "1:50K" , by defualt in the lower right of the map viewport.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Control.Scale({DOMElement|element}?) -- Creates a new scale control. The DOMElement is used, if passed, to put the scale inside -- this allows you to have the scale displayed in some location outside the map.
|
||||
9
doc/Control.txt
Normal file
9
doc/Control.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
OpenLayers.Control
|
||||
|
||||
Base class from which controls are derived. Controls are elements of the map used to control things like zoom, layer status, or to provide information to the user about the status of the map, such as scale or copyright information.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Control({Object|options}?) -- Creates a new control. The options here are used to control parameters of the control. The base control defines only "position", which is designed to be an {OpenLayers.Pixel} which is the top-left of the location of the control relative to the map div.
|
||||
|
||||
* Parameters
|
||||
position -- {OpenLayers.Pixel} to use as the top-left corner of the control div, relative to the map area.
|
||||
9
doc/Icon.txt
Normal file
9
doc/Icon.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
OpenLayers.Icon
|
||||
|
||||
Icon is used as the visual representation of a Marker. Creating such a representation requres up to three parts: An Icon URL, a size, and an offset. The icon URL is a pointer to an image to use as an icon. The size is the size of the image, as an {OpenLayers.Size} object, and the offset is the position of the top left corner of the image in pixels, relative to the latitude and longitude of the Marker.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Icon({String|url}, {OpenLayers.Size|size}, {OpenLayers.Pixel|offset}) -- creates a new icon.
|
||||
|
||||
* Methods
|
||||
clone() -- {OpenLayers.Icon} -- Create an exact copy of the icon.
|
||||
7
doc/Layer.Boxes.txt
Normal file
7
doc/Layer.Boxes.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
OpenLayers.Layer.Boxes
|
||||
|
||||
A subclass of the markers layer, this layer draws boxes using div elements
|
||||
instead of icons using images.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer.Boxes(name, options) -- Same as OpenLayers.Layer.Markers.
|
||||
6
doc/Layer.EventPane.txt
Normal file
6
doc/Layer.EventPane.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
OpenLayers.Layer.EventPane
|
||||
|
||||
Designed to act as a super-class for layers which need OpenLayers to intercept click events. Google Maps and Microsoft Virtual Earth both use this functionality, in order to allow for actions like the rubber-band-zoom/zoombox functionality. This Layer is not designed to be used on its own, but instead to act as an intermediary between the user and layers which have their own click handlers.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer.EventPane(name, options) -- Only designed to be used by subclasses.
|
||||
12
doc/Layer.GeoRSS.txt
Normal file
12
doc/Layer.GeoRSS.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
OpenLayers.Layer.GeoRSS
|
||||
|
||||
GeoRSS layer. Pass a name and location of a GeoRSS file on the web, and a marker will be added to the map for each item in the GeoRSS feed. Uses OpenLayers.loadURL to load the XML, parses the data, and adds markers to the map. The GeoRSS layer supports 1.0 and 2.0 in IE and Firefox, and supports 2.0 in Safari. (Ticket #111 explains the reason for this difference.)
|
||||
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer.GeoRSS(name, url) -- Name and location of GeoRSS XML file.
|
||||
|
||||
* Methods
|
||||
parseData(ajaxResponse) -- none -- Callback for the loadURL call. This function parses the XML for the GeoRSS feed, creating markers for the data and adding a popup to each marker. It populates an array of features as 'this.features'.
|
||||
markerClick(Event) -- none -- Action to perform when a marker is clicked.
|
||||
clearFeatures() -- none -- Removes all features and markers from the map.
|
||||
16
doc/Layer.Google.txt
Normal file
16
doc/Layer.Google.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
OpenLayers.Layer.Google
|
||||
|
||||
The Google Layer in OpenLayers allows you to include Google Maps functionality in your OpenLayers maps. In order to use the Google Layer, you must first obtain an API key for Google Maps, and include the Google Maps API script in your page. Once you have done this,
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer.Google(name, options?) -- Constructor for Google layer. Accepts name and options.
|
||||
|
||||
* Methods
|
||||
getOLLonLatFromGLatLng(GLonLat) -- {OpenLayers.LonLat} -- Convert from GLatLon to OpenLayers LonLat
|
||||
getGLatLngFromOLLonLat({OpenLayers.LonLat|lonlat}) -- GLatLon -- Convert From OpenLayers LonLat to GLatLon
|
||||
getOLPixelFromGPoint(GPoint) -- {OpenLayers.Pixel} -- Convert from GPoint to OpenLayers.Pixel
|
||||
getGPointFromOLPixel({OpenLayers.Pixel|pixel}) -- GPoint -- Create GPoint from OpenLayers Pixel.
|
||||
|
||||
* Parameters
|
||||
type -- one of G_NORMAL_MAP, G_SATELLITE_MAP, G_HYBRID_MAP, used to choose the type of map to display. (See <a href="http://www.google.com/apis/maps/documentation/reference.html#GMapType">GMapType in the Google documentation</a> for more.)
|
||||
|
||||
31
doc/Layer.Grid.txt
Normal file
31
doc/Layer.Grid.txt
Normal file
@@ -0,0 +1,31 @@
|
||||
OpenLayers.Layer.Grid
|
||||
|
||||
The Grid layer is the base layer for almost all image layers. This is a subclass of HTTPRequest.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer.Grid(name, url, params, options) -- URL is the base URL to the layer. Params is a set of params to be included in the HTTP Request. Options is a set of options, extending the parameters of the layer.
|
||||
|
||||
* Methods
|
||||
getGridBounds() -- {OpenLayers.Bounds} -- return geographic extent of the grid of tiles.
|
||||
_initTiles() -- none -- Used to initialize the tile grid, creating image elements as neccesary and filling them with the correct images.
|
||||
spiralTileLoad() -- none -- Called from _initTiles. Rotates through the grid filling in the images for the grid.
|
||||
clone() -- {OpenLayers.Layer.Grid} -- create a clone of the layer. Subclassed from {OpenLayers.Layer}.
|
||||
setMap(map) -- none -- Set the map property of the layer. Also set the parameters which are inherited from the map. This is also where the tileSize is retrieved from the map. Subclassed from {OpenLayers.Layer}.
|
||||
moveTo({OpenLayers.Bounds|bounds}, {Boolean|zoomChanged}) -- none -- Not implemented here, but the general function called on dragging or setCenter, to move the Layer to a new geographic location. Subclassed from {OpenLayers.Layer}.
|
||||
getResolution() -- {float} -- Return the current resolution of the map, in units/pixel. Subclassed from {OpenLayers.Layer}.
|
||||
getExtent() -- {OpenLayers.Bounds} -- Return the geographic extent of the current map viewport. Subclassed from {OpenLayers.Layer}.
|
||||
getZoomForExtent({OpenLayers.Bounds|bounds}) -- {Integer} -- return the integer zoom which most closely matches the passed bounds. Subclassed from {OpenLayers.Layer}.
|
||||
getLonLatFromViewPortPx({OpenLayers.Pixel|pixel}) -- {OpenLayers.LonLat} -- Returns an OpenLayers.LonLat which is the passed-in view port OpenLayers.Pixel, translated into lon/lat by the layer. Subclassed from {OpenLayers.Layer}.
|
||||
getViewPortPxFromLonLat({OpenLayers.LonLat|lonlat}) -- {OpenLayers.Pixel} -- Returns An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat, translated into view port pixels. Subclassed from {OpenLayers.Layer}.
|
||||
|
||||
* Parameters
|
||||
buffer -- Default 2. Number of tiles around the central map area which OpenLayers will preload so that dragging goes more smoothly.
|
||||
* Subclassed from OpenLayers.Layer
|
||||
isBaseLayer -- This determines whether the layer is a base layer or an overlay. Only one Base Layer can be displayed on the map at once. Default is false.
|
||||
projection -- SRS string to describe the layer. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
maxExtent -- an OpenLayers.Bounds for the layer. This is the maximum geographic extent of the layer. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
maxResolution -- The number of degrees per pixel at zoom level 0. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
maxZoomLevel -- The maximum zoom level for the layer. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
minScale -- The scale at zoom level 0. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
maxScale -- The scale at the highest zoom level. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
units -- The units the map is projected into. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
13
doc/Layer.HTTPRequest.txt
Normal file
13
doc/Layer.HTTPRequest.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
OpenLayers.Layer.HTTPRequest
|
||||
|
||||
Sublass of Layer used for services which require initiating multiple HTTPRequests.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer.HTTPRequest(name, url, params, options) -- URL is the base URL to the layer. Params is a set of params to be included in the HTTP Request. Options is a set of options, extending the parameters of the layer.
|
||||
|
||||
* Methods
|
||||
initResolutions() -- none -- Based on the current minScale/maxScale/maxResolution/numZoomLevel/scales/resolutions parameters, initializes an array of 'zoom levels' as this.resolutions, which are then used as an index into when zooming.
|
||||
getFullRequestString(newParams) -- {String} -- Returns the full request string for a combination of the defaults on this layer and the parameters passed via newParams.
|
||||
|
||||
* Options
|
||||
reproject -- If reproject is true, then the layer will alter the bounding boxes of its tiles to be based on the geographic location of the pixel bounds in the base layer. This is important for reprojecting WMS tiles onto something like Google Maps. Tile locations are calculated, and then when creating the tile request, the bounding box is adjusted to match the bounding box of the base layer at that location.
|
||||
9
doc/Layer.Image.txt
Normal file
9
doc/Layer.Image.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
OpenLayers.Layer.Image
|
||||
|
||||
The Image Layer allows you to load a single image and use it as a layer in your
|
||||
map.
|
||||
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer(name, url, {OpenLayers.Bounds|bounds}, {OpenLayers.Size|size}, {options}) -- Image Layer constructor requires a name, URL of the image, geographic bounds of the image, pixel size of the image, and an optional options parameter.
|
||||
|
||||
7
doc/Layer.KaMap.txt
Normal file
7
doc/Layer.KaMap.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
OpenLayers.Layer.KaMap
|
||||
|
||||
ka-Map is a Mapserver wrapper which performs caching and works around many of the deficiencies with tiling when using Mapserver as a WMS client.
|
||||
|
||||
* Construtor
|
||||
OpenLayers.Layer.KaMap(name, url, params, options) -- URL is the url of the tile.php for KaMap.
|
||||
|
||||
13
doc/Layer.Markers.txt
Normal file
13
doc/Layer.Markers.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
OpenLayers.Layer.Markers
|
||||
|
||||
The base class for all vector drawing, The OpenLayers.Layer.Markers layer is the primary way to get annotations into your map.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer.Markers(name, options) -- Name and options for layer.
|
||||
|
||||
* Methods
|
||||
addMarker({OpenLayers.Marker|Marker}) -- none -- Adds a marker to the layer, sets the map object on the marker, and calls drawMarker on the marker.
|
||||
removeMarker({OpenLayers.Marker|Marker}) -- none -- Remove the marker from the layer and map.
|
||||
clearMarkers() -- none -- Remove all markers from the layer with removeMarker.
|
||||
redraw() -- none -- Redraw all markers. Used so that markers can change their position when a base layer changes.
|
||||
drawMarker -- none -- Call marker.draw(px), which passes the Pixel of the latitude/longitude in the map viewport to the marker. adds the marker to the div, and marks the marker as drawn.
|
||||
15
doc/Layer.TMS.txt
Normal file
15
doc/Layer.TMS.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
OpenLayers.Layer.TMS
|
||||
|
||||
The TMS layer allows one to connect to a TMS -- Tiled Map Service -- server to obtain images.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer.TMS(name, url, options) -- URL is the base URL to the layer. Options is a set of options, extending the parameters of the layer.
|
||||
|
||||
* Methods
|
||||
getURL({OpenLayers.Bounds|bounds}) -- {String} -- Returns a TMS URL for the given bounds based on the properties of the layer.
|
||||
All other methods are inherited from {OpenLayers.Layer.Grid}
|
||||
|
||||
* Options
|
||||
tileOrigin -- The tileOrigin option will allow you to set your tileOrigin to something other than the lower left extent of your map.
|
||||
layername -- Name of the layer in the TMS request.
|
||||
type -- The extension images have.
|
||||
10
doc/Layer.Text.txt
Normal file
10
doc/Layer.Text.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
OpenLayers.Layer.Text
|
||||
|
||||
Subclass of Markers layer which retrieves CSV file from the web, and parses content to create markers and popups.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer.Text(name, options) -- Pass in name, and set location: 'URL of CSV file' in the options hash.
|
||||
|
||||
* Methods
|
||||
parseData(ajaxRequest) -- none -- Parses returned CSV file.
|
||||
|
||||
14
doc/Layer.VirtualEarth.txt
Normal file
14
doc/Layer.VirtualEarth.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
OpenLayers.Layer.VirtualEarth
|
||||
|
||||
The Virtual Earth Layer in OpenLayers allows you to include Virtual Earth Maps in your OpenLayers maps. In order to use the Virtual Earth Layer, you must first include the Virtual Earth API script in your page. Once you have done this, simply add the layer to your map.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer.VirtualEarth(name) -- Constructor for Virtual Earth layer. Accepts name.
|
||||
|
||||
* Methods
|
||||
getOLLonLatFromVELatLng(VELatLon) -- {OpenLayers.LonLat} -- Convert from VELatLon to OpenLayers LonLat
|
||||
getVELatLngFromOLLonLat({OpenLayers.LonLat|lonlat}) -- VELatLon -- Convert From OpenLayers LonLat to VELatLon
|
||||
getOLPixelFromVEPoint(Msn.VE.Pixel) -- {OpenLayers.Pixel} -- Convert from VEPoint to OpenLayers.Pixel
|
||||
getGPointFromOLPixel({OpenLayers.Pixel|pixel}) -- Msn.VE.Pixel -- Create Msvn.VE.Pixel from OpenLayers Pixel.
|
||||
|
||||
|
||||
15
doc/Layer.WMS.txt
Normal file
15
doc/Layer.WMS.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
OpenLayers.Layer.WMS
|
||||
|
||||
The WMS layer allows one to connect to a WMS server to obtain images. Params are available as a hash on the layer object, however, all keys are upper-cased automatically for maximum compatibility with WMS servers, so a parameter which is set as 'layers' will be uppercased to LAYERS. Where 'layer' is your Javscript variable for the layer, layer.params.LAYERS is the value of the layers param as set by the constructor.
|
||||
|
||||
If you wish to change params, you should use mergeNewParams, rather than accessing the parameters directly.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer.WMS(name, url, params, options) -- URL is the base URL to the layer. Params is a set of params to be included in the HTTP Request. Options is a set of options, extending the parameters of the layer.
|
||||
|
||||
* Methods
|
||||
getURL({OpenLayers.Bounds|bounds}) -- {String} -- Returns a WMS URL for the given bounds based on the properties of the layer.
|
||||
All other methods are inherited from {OpenLayers.Layer.Grid}
|
||||
|
||||
* Options
|
||||
isBaseLayer -- WMS layers default to being base layers unless one of their parameters is 'transparent':'true'.
|
||||
40
doc/Layer.txt
Normal file
40
doc/Layer.txt
Normal file
@@ -0,0 +1,40 @@
|
||||
OpenLayers.Layer
|
||||
|
||||
Layers are the most important and central aspect of OpenLayers. They are the
|
||||
core functionality for the software: Everything that ends up on the map comes
|
||||
from a layer. The base layer class is designed to be subclassed by any number
|
||||
of different layers.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Layer(name, options) -- All layers have a name as their first param. This name is used to display the layer in the LayerSwitcher, and for other purposes. The options parameter is used to replace any parameters of the Layer which need to be different.
|
||||
|
||||
* Methods
|
||||
clone() -- {OpenLayers.Layer} -- create a clone of the layer.
|
||||
setName({String|name}) -- none -- Set the name of the layer to something different.
|
||||
moveTo({OpenLayers.Bounds|bounds}, {Boolean|zoomChanged}) -- none -- Not implemented here, but the general function called on dragging or setCenter, to move the Layer to a new geographic location.
|
||||
setMap(map) -- none -- Set the map property of the layer. Also set the parameters which are inherited from the map.
|
||||
getVisibility() -- {Boolean} -- Return true or false based on visibility of the layer.
|
||||
setVisibility({Boolean|visible}) -- none -- Set the layer visibility, and trigger the appropriate events.
|
||||
getResolution() -- {float} -- Return the current resolution of the map, in units/pixel.
|
||||
getExtent() -- {OpenLayers.Bounds} -- Return the geographic extent of the current map viewport.
|
||||
getZoomForExtent({OpenLayers.Bounds|bounds}) -- {Integer} -- return the integer zoom which most closely matches the passed bounds.
|
||||
getLonLatFromViewPortPx({OpenLayers.Pixel|pixel}) -- {OpenLayers.LonLat} -- Returns an OpenLayers.LonLat which is the passed-in view port OpenLayers.Pixel, translated into lon/lat by the laye
|
||||
getViewPortPxFromLonLat({OpenLayers.LonLat|lonlat}) -- {OpenLayers.Pixel} -- Returns An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat, translated into view port pixels
|
||||
addOptions({options})) -- none -- Change the options on the layer. This is the supported way to change properties of the layer.
|
||||
|
||||
* Parameters
|
||||
displayOutsideMaxExtent -- Determine whether images or data are loaded outside the maxExtent. Default is false.
|
||||
isBaseLayer -- This determines whether the layer is a base layer or an overlay. Only one Base Layer can be displayed on the map at once. Default is false.
|
||||
projection -- SRS string to describe the layer. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
maxExtent -- an OpenLayers.Bounds for the layer. This is the maximum geographic extent of the layer. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
maxResolution -- The number of degrees per pixel at zoom level 0. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
maxZoomLevel -- The maximum zoom level for the layer. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
minScale -- The scale at zoom level 0. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
maxScale -- The scale at the highest zoom level. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
units -- The units the map is projected into. If this is set on the map before the Layer is added to the map, it will inherit from the map.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
13
doc/LonLat.txt
Normal file
13
doc/LonLat.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
OpenLayers.LonLat
|
||||
|
||||
This class represents a geographic coordinate pair, either projected or unprojected.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.LonLat({float|lon}, {float|lat}) -- Create LonLat.
|
||||
|
||||
* Methods
|
||||
toString() -- {String} -- Converts to human readable string.
|
||||
toShortString() -- {String} -- Converts to short human readable string.
|
||||
clone() -- {OpenLayers.Size} -- Returns a copy of the pixel.
|
||||
equals({OpenLayers.LonLat|ll}) -- {Boolean} -- Compares two LonLats.
|
||||
add({int|lon}, {int|lat}) -- {OpenLayers.LonLat} -- add x and y to the current coordinates.
|
||||
77
doc/Map.txt
Normal file
77
doc/Map.txt
Normal file
@@ -0,0 +1,77 @@
|
||||
OpenLayers.Map
|
||||
|
||||
Instantiate class {OpenLayers.Map} in order to create a map. This is the central class in the API. Everything else is auxiliary.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Map(container, opts?) -- Creates a new map inside of the given HTML container, which is typically a DIV element. The opts variable is an object with various options, as described in the options section below.
|
||||
|
||||
* Methods
|
||||
* Layer Management
|
||||
addLayer({OpenLayers.Layer|layer}) -- none -- adds a layer to the list currently set for the map.
|
||||
addLayers([ {OpenLayers.Layer|layer}, {OpenLayers.Layer|layer} ]) -- none -- Adds multiple layers to a map.
|
||||
removeLayer({OpenLayers.Layer|layer}) -- none -- Remove a layer from the map.
|
||||
setBaseLayer({OpenLayers.Layer|layer}) -- none -- Sets a new base layer for the map. The provided layer should have already been added to the map. Changing the base layer causes all other base layers to be turned off, and all overlays to reproject themselves.
|
||||
|
||||
* Control Management
|
||||
addControl({OpenLayers.Control|control}) -- none -- Adds a control to the map.
|
||||
|
||||
* Popup Management
|
||||
addPopup({OpenLayers.Popup|popup}, {Boolean|exclusive}) -- none -- adds a popup to the map. If exclusive is set to true, then all other popups are closed first.
|
||||
removePopup({OpenLayers.Popup|popup}) -- none -- removes an existing popup from the map.
|
||||
|
||||
* Center management
|
||||
setCenter({OpenLayers.LonLat|lonlat}, {int|zoom}) -- none -- Set the center point of the map. This then moves all the layers to the new center location as well, using each layer's 'moveTo' function. The 'zoom' is an integer from 0 to maxZoomLevel.
|
||||
pan({Integer|dx}, {Integer|dy}) -- none -- Allows user to pan by a value of screen pixels
|
||||
|
||||
* Zoom Management
|
||||
zoomTo({int|zoom}) -- none -- zoom to the given zoom level.
|
||||
zoomIn() -- none -- zoom in one level.
|
||||
zoomOut() -- none -- zoom out one level.
|
||||
zoomToExtent({OpenLayers.Bounds|bounds}) -- none -- Set the map such that the bounds fits within the current viewport area.
|
||||
zoomToMaxExtent() -- none -- Zoom such that the entire bounds of the map is contained in the viewport.
|
||||
zoomToScale({float}) -- none -- Zoom as close to the given scale as possible. Scale can be given as a ratio (1/24000) or as the denominator of the scale value (24000). zoomToScale will find the zoom level which most closely fits the requested scale and set that as the current zoom level.
|
||||
|
||||
* Current Map Information
|
||||
getLonLatFromPixel({OpenLayers.Pixel|pixel}) -- {OpenLayers.LonLat} -- Returns OpenLayers.LonLat corresponding to the given OpenLayers.Pixel, translated into lon/lat by the current base layer
|
||||
getPixelFromLonLat({OpenLayers.LonLat|lonlat}) -- {OpenLayers.Pixel} -- Returns OpenLayers.Pixel corresponding to the given OpenLayers.LonLat, translated by the current base layer
|
||||
getCenter() -- {OpenLayers.LonLat} -- Returns a LonLat for the current center of the map
|
||||
getZoom() -- {Integer} -- Returns the current zoom level as an integer
|
||||
getExtent() -- {OpenLayers.Bounds} -- Returns a Bounds object which represents the geographic bounds of the current viewPort.
|
||||
getSize() -- {OpenLayers.Pixel} -- Returns the pixel size of the current map window.
|
||||
getTileSize() -- {OpenLayers.Size} -- Returns tile size currently set for map.
|
||||
getResolution() -- {float} -- Returns the current resolution (units/pixel) of the map
|
||||
getZoomForExtent({OpenLayers.Bounds|bounds}) -- Zoom level in which the given bounds will fit -- zooming to this level and setting the center of the map in the center of the bounds will always fit the given bounds in the map.
|
||||
|
||||
* Default Map Information
|
||||
getMaxResolution() -- {float} -- returns The Map's Maximum Resolution, the units/pixel at zoom level 0. The default is 1.40625, to match the approximate MaxResolution used by the commercial providers.
|
||||
getMaxExtent() -- {OpenLayers.Bounds} -- Return the max extent of the current base layer as defined on the layer. The default maxExtent for OpenLayers is -180,-90,180,90
|
||||
getMaxZoomLevel() -- {int} -- Returns the maximum zoom level that can be reached in the map for the current base layer
|
||||
getMinZoomLevel() -- {int} -- Returns the minimum zoom level that can be reached in the map for the current base layer
|
||||
|
||||
* Events
|
||||
addlayer -- a layer is added to the map
|
||||
removelayer -- a layer is removed from the map
|
||||
changelayer -- a layer has some property of it, typically visibility, changed.
|
||||
changebaselayer -- the current base layer changes
|
||||
movestart -- start of a movement in the map
|
||||
move -- end of movement in a map. this happens while te mouse is dragging as well as for all other events.
|
||||
moveend -- end of movement in a map, but does not happen when the 'dragging' flag is set, as is the case when the move event is in the middle of a drag action.
|
||||
zoomend -- end of a zoom action
|
||||
mouseover -- map is moused over
|
||||
mouseout -- map is no longer mousedout
|
||||
mousemove -- mouse moves inside map
|
||||
dragstart -- drag action starts
|
||||
dragend -- drag action ends
|
||||
|
||||
* Options:
|
||||
* controls -- an array of control objects to be added to the map. The default is [new OpenLayers.Control.MouseDefaults(), new OpenLayers.Control.PanZoom()]
|
||||
* projection -- used by WMS layers, should be an SRS identifier.
|
||||
* maxZoomLevel -- The number of zoom levels to use in the map.
|
||||
* maxExtent -- {OpenLayers.Bounds} to be used as the maximum extent of a map. The center of the map can not leave the maxExtent of the map when dragging.
|
||||
* maxResolution -- The units/pixel measurement at zoom level 0. Default is 1.40625
|
||||
* resolutions -- An array of resolutions to be used as an index when zooming. Overrides maxZoomLevel and maxResolution if present.
|
||||
* minScale -- The smallest scale value. minScale is preferred over maxResolution, if present.
|
||||
* maxScale -- The maximum scale the map should include. Overrides maxZoomLevel if present.
|
||||
* units -- The units of the map. Defaults to degrees. Neccesary when using scale in any way.
|
||||
* scales -- An array of scale values. Overrides maxResolution, maxZoomLevel, resolutions, and min/max scale if present.
|
||||
|
||||
10
doc/Marker.Box.txt
Normal file
10
doc/Marker.Box.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
OpenLayers.Marker.Box
|
||||
|
||||
A different kind of Marker, designed to be added to a Boxes layer instead of a Markers layer.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Marker.Box({OpenLayers.Bounds|bounds}, borderColor, borderWidth) -- Set up a box. Defaults are red, with a width of 2.
|
||||
|
||||
* Methods
|
||||
setBorder(color, width) -- sets properties of border color and width.
|
||||
|
||||
15
doc/Marker.txt
Normal file
15
doc/Marker.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
OpenLayers.Marker
|
||||
|
||||
Instantiate class {OpenLayers.Marker} in order to create a marker.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Marker({OpenLayers.LonLat|lonlat}, {OpenLayers.Icon|icon}? ) -- Creates a new marker object. This object must be added to a Marker layer and will then be displayed. The icon can be left null -- if this is the case, then the default OpenLayers icon will be used.
|
||||
|
||||
* Methods
|
||||
onScreen() -- {boolean} -- Returns whether or not the marker is currently visible on screen.
|
||||
inflate({float}) -- none -- Changes the size of the Icon by a factor of the passed float.
|
||||
display({string}) -- none -- Sets the style.display property of the Icon.
|
||||
|
||||
* Events
|
||||
Standard browser events are available.
|
||||
|
||||
13
doc/Pixel.txt
Normal file
13
doc/Pixel.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
OpenLayers.Pixel
|
||||
|
||||
This class represents a screen coordinate in x and y coordinates.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Pixel({float|x}, {float|y}) -- Create Pixel.
|
||||
|
||||
* Methods
|
||||
toString() -- {String} -- Converts to human readable string.
|
||||
clone() -- {OpenLayers.Pixel} -- Returns a copy of the pixel.
|
||||
equals({OpenLayers.Pixel|px}) -- {Boolean} -- Tests for equivilance.
|
||||
add({int|x}, {int|y}) -- {OpenLayers.Pixel} -- add x and y to the current coordinates.
|
||||
offset({OpenLayers.Pixel|pixel}) -- {OpenLayers.Pixel} -- Add pixels together.
|
||||
11
doc/Size.txt
Normal file
11
doc/Size.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
OpenLayers.Size
|
||||
|
||||
This class represents a width/height pair.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Size({float|h}, {float|w}) -- Create Size.
|
||||
|
||||
* Methods
|
||||
toString() -- {String} -- Converts to human readable string.
|
||||
clone() -- {OpenLayers.Size} -- Returns a copy of the pixel.
|
||||
add({int|x}, {int|y}) -- {OpenLayers.Size} -- add x and y to the current coordinates.
|
||||
7
doc/Tile.Image.txt
Normal file
7
doc/Tile.Image.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
OpenLayers.Tile.Image
|
||||
|
||||
The image tile is designed to hold images for all types of layers, from WMS to KaMap to WorldWind.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Tile.Image({OpenLayers.Layer|layer}, {OpenLayers.Pixel|position}, {OpenLayers.Bounds|bounds}, {String|url}, {OpenLayers.Size|size}) -- Create a new tile, with properties passed.
|
||||
|
||||
6
doc/Tile.WFS.txt
Normal file
6
doc/Tile.WFS.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
OpenLayers.Tile.WFS
|
||||
|
||||
The WFS tile allows you to load any number of WFS URLs into a single tile.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Tile.WFS({OpenLayers.Layer|layer}, {OpenLayers.Pixel|position}, {OpenLayers.Bounds|bounds}, {String|urls}, {OpenLayers.Size|size}) -- Create a new tile, with properties passed. The major difference between this tile and other tiles is what it does with results: The WFS tile is designed to parse XML responses, and create features for each item in the response.
|
||||
10
doc/Tile.txt
Normal file
10
doc/Tile.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
OpenLayers.Tile
|
||||
|
||||
This is a class designed to designate a single tile, however
|
||||
it is explicitly designed to do relatively little. Tiles store information
|
||||
about themselves -- such as the URL that they are related to, and their
|
||||
size - but do not add themselves to the layer div automatically, for
|
||||
example.
|
||||
|
||||
* Constructor
|
||||
OpenLayers.Tile({OpenLayers.Layer|layer}, {OpenLayers.Pixel|position}, {OpenLayers.Bounds|bounds}, {String|url}, {OpenLayers.Size|size}) -- Create a new tile, with properties passed.
|
||||
8
doc/Util.txt
Normal file
8
doc/Util.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
OpenLayers.Util
|
||||
|
||||
Utility class. Stores a bunch of methods and settings that don't fit anywhere else.
|
||||
|
||||
* Options
|
||||
|
||||
OpenLayers.Util.onImageLoadErrorColor -- A string to set img.style.backgroundColor to if the onerror event fires for the image (useful for 500 errors from WMS, for example).
|
||||
OpenLayers.ImgPath -- A string to be used as the base for images for controls and the like. Should end with '/'.
|
||||
17
doc/authors.txt
Normal file
17
doc/authors.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
OpenLayers core development team
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
Erik Uzureau
|
||||
Christopher R. Schmidt
|
||||
Philip Lindsay
|
||||
John Frank
|
||||
Schuyler Erle
|
||||
|
||||
Patch contributors
|
||||
------------------
|
||||
Corey Puffault
|
||||
Tim Schaub
|
||||
Jeff Dege
|
||||
Sean Gilles
|
||||
|
||||
OpenLayers is graciously supported by MetaCarta, Inc.
|
||||
<http://www.metacarta.com>.
|
||||
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;
|
||||
}
|
||||
@@ -1,113 +0,0 @@
|
||||
Format: 1.52
|
||||
|
||||
# This is the Natural Docs languages file for this project. If you change
|
||||
# anything here, it will apply to THIS PROJECT ONLY. If you'd like to change
|
||||
# something for all your projects, edit the Languages.txt in Natural Docs'
|
||||
# Config directory instead.
|
||||
|
||||
|
||||
# You can prevent certain file extensions from being scanned like this:
|
||||
# Ignore Extensions: [extension] [extension] ...
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# SYNTAX:
|
||||
#
|
||||
# Unlike other Natural Docs configuration files, in this file all comments
|
||||
# MUST be alone on a line. Some languages deal with the # character, so you
|
||||
# cannot put comments on the same line as content.
|
||||
#
|
||||
# Also, all lists are separated with spaces, not commas, again because some
|
||||
# languages may need to use them.
|
||||
#
|
||||
# Language: [name]
|
||||
# Alter Language: [name]
|
||||
# Defines a new language or alters an existing one. Its name can use any
|
||||
# characters. If any of the properties below have an add/replace form, you
|
||||
# must use that when using Alter Language.
|
||||
#
|
||||
# The language Shebang Script is special. It's entry is only used for
|
||||
# extensions, and files with those extensions have their shebang (#!) lines
|
||||
# read to determine the real language of the file. Extensionless files are
|
||||
# always treated this way.
|
||||
#
|
||||
# The language Text File is also special. It's treated as one big comment
|
||||
# so you can put Natural Docs content in them without special symbols. Also,
|
||||
# if you don't specify a package separator, ignored prefixes, or enum value
|
||||
# behavior, it will copy those settings from the language that is used most
|
||||
# in the source tree.
|
||||
#
|
||||
# Extensions: [extension] [extension] ...
|
||||
# [Add/Replace] Extensions: [extension] [extension] ...
|
||||
# Defines the file extensions of the language's source files. You can
|
||||
# redefine extensions found in the main languages file. You can use * to
|
||||
# mean any undefined extension.
|
||||
#
|
||||
# Shebang Strings: [string] [string] ...
|
||||
# [Add/Replace] Shebang Strings: [string] [string] ...
|
||||
# Defines a list of strings that can appear in the shebang (#!) line to
|
||||
# designate that it's part of the language. You can redefine strings found
|
||||
# in the main languages file.
|
||||
#
|
||||
# Ignore Prefixes in Index: [prefix] [prefix] ...
|
||||
# [Add/Replace] Ignored Prefixes in Index: [prefix] [prefix] ...
|
||||
#
|
||||
# Ignore [Topic Type] Prefixes in Index: [prefix] [prefix] ...
|
||||
# [Add/Replace] Ignored [Topic Type] Prefixes in Index: [prefix] [prefix] ...
|
||||
# Specifies prefixes that should be ignored when sorting symbols in an
|
||||
# index. Can be specified in general or for a specific topic type.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
# For basic language support only:
|
||||
#
|
||||
# Line Comments: [symbol] [symbol] ...
|
||||
# Defines a space-separated list of symbols that are used for line comments,
|
||||
# if any.
|
||||
#
|
||||
# Block Comments: [opening sym] [closing sym] [opening sym] [closing sym] ...
|
||||
# Defines a space-separated list of symbol pairs that are used for block
|
||||
# comments, if any.
|
||||
#
|
||||
# Package Separator: [symbol]
|
||||
# Defines the default package separator symbol. The default is a dot.
|
||||
#
|
||||
# [Topic Type] Prototype Enders: [symbol] [symbol] ...
|
||||
# When defined, Natural Docs will attempt to get a prototype from the code
|
||||
# immediately following the topic type. It stops when it reaches one of
|
||||
# these symbols. Use \n for line breaks.
|
||||
#
|
||||
# Line Extender: [symbol]
|
||||
# Defines the symbol that allows a prototype to span multiple lines if
|
||||
# normally a line break would end it.
|
||||
#
|
||||
# Enum Values: [global|under type|under parent]
|
||||
# Defines how enum values are referenced. The default is global.
|
||||
# global - Values are always global, referenced as 'value'.
|
||||
# under type - Values are under the enum type, referenced as
|
||||
# 'package.enum.value'.
|
||||
# under parent - Values are under the enum's parent, referenced as
|
||||
# 'package.value'.
|
||||
#
|
||||
# Perl Package: [perl package]
|
||||
# Specifies the Perl package used to fine-tune the language behavior in ways
|
||||
# too complex to do in this file.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
# For full language support only:
|
||||
#
|
||||
# Full Language Support: [perl package]
|
||||
# Specifies the Perl package that has the parsing routines necessary for full
|
||||
# language support.
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# The following languages are defined in the main file, if you'd like to alter
|
||||
# them:
|
||||
#
|
||||
# Text File, Shebang Script, C/C++, C#, Java, JavaScript, Perl, Python,
|
||||
# PHP, SQL, Visual Basic, Pascal, Assembly, Ada, Tcl, Ruby, Makefile,
|
||||
# ActionScript, ColdFusion, R, Fortran
|
||||
|
||||
# If you add a language that you think would be useful to other developers
|
||||
# and should be included in Natural Docs by default, please e-mail it to
|
||||
# languages [at] naturaldocs [dot] org.
|
||||
@@ -1,473 +0,0 @@
|
||||
Format: 1.52
|
||||
|
||||
|
||||
Title: OpenLayers
|
||||
SubTitle: JavaScript Mapping Library
|
||||
|
||||
# You can add a footer to your documentation like this:
|
||||
# Footer: [text]
|
||||
# If you want to add a copyright notice, this would be the place to do it.
|
||||
|
||||
# You can add a timestamp to your documentation like one of these:
|
||||
# Timestamp: Generated on month day, year
|
||||
# Timestamp: Updated mm/dd/yyyy
|
||||
# Timestamp: Last updated mon day
|
||||
#
|
||||
# m - One or two digit month. January is "1"
|
||||
# mm - Always two digit month. January is "01"
|
||||
# mon - Short month word. January is "Jan"
|
||||
# month - Long month word. January is "January"
|
||||
# d - One or two digit day. 1 is "1"
|
||||
# dd - Always two digit day. 1 is "01"
|
||||
# day - Day with letter extension. 1 is "1st"
|
||||
# yy - Two digit year. 2006 is "06"
|
||||
# yyyy - Four digit year. 2006 is "2006"
|
||||
# year - Four digit year. 2006 is "2006"
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
#
|
||||
# Cut and paste the lines below to change the order in which your files
|
||||
# appear on the menu. Don't worry about adding or removing files, Natural
|
||||
# Docs will take care of that.
|
||||
#
|
||||
# You can further organize the menu by grouping the entries. Add a
|
||||
# "Group: [name] {" line to start a group, and add a "}" to end it.
|
||||
#
|
||||
# You can add text and web links to the menu by adding "Text: [text]" and
|
||||
# "Link: [name] ([URL])" lines, respectively.
|
||||
#
|
||||
# The formatting and comments are auto-generated, so don't worry about
|
||||
# neatness when editing the file. Natural Docs will clean it up the next
|
||||
# time it is run. When working with groups, just deal with the braces and
|
||||
# forget about the indentation and comments.
|
||||
#
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
|
||||
Group: OpenLayers {
|
||||
|
||||
File: OpenLayers (no auto-title, OpenLayers.js)
|
||||
|
||||
Group: BaseTypes {
|
||||
|
||||
File: Base Types (no auto-title, OpenLayers/BaseTypes.js)
|
||||
File: Bounds (no auto-title, OpenLayers/BaseTypes/Bounds.js)
|
||||
File: Class (no auto-title, OpenLayers/BaseTypes/Class.js)
|
||||
File: Date (no auto-title, OpenLayers/BaseTypes/Date.js)
|
||||
File: Element (no auto-title, OpenLayers/BaseTypes/Element.js)
|
||||
File: LonLat (no auto-title, OpenLayers/BaseTypes/LonLat.js)
|
||||
File: Pixel (no auto-title, OpenLayers/BaseTypes/Pixel.js)
|
||||
File: Size (no auto-title, OpenLayers/BaseTypes/Size.js)
|
||||
} # Group: BaseTypes
|
||||
|
||||
File: Console (no auto-title, OpenLayers/Console.js)
|
||||
|
||||
Group: Control {
|
||||
|
||||
File: Control (no auto-title, OpenLayers/Control.js)
|
||||
File: ArgParser (no auto-title, OpenLayers/Control/ArgParser.js)
|
||||
File: Attribution (no auto-title, OpenLayers/Control/Attribution.js)
|
||||
File: Button (no auto-title, OpenLayers/Control/Button.js)
|
||||
File: DragFeature (no auto-title, OpenLayers/Control/DragFeature.js)
|
||||
File: DragPan (no auto-title, OpenLayers/Control/DragPan.js)
|
||||
File: DrawFeature (no auto-title, OpenLayers/Control/DrawFeature.js)
|
||||
File: EditingToolbar (no auto-title, OpenLayers/Control/EditingToolbar.js)
|
||||
File: Geolocate (no auto-title, OpenLayers/Control/Geolocate.js)
|
||||
File: GetFeature (no auto-title, OpenLayers/Control/GetFeature.js)
|
||||
File: Graticule (no auto-title, OpenLayers/Control/Graticule.js)
|
||||
File: KeyboardDefaults (no auto-title, OpenLayers/Control/KeyboardDefaults.js)
|
||||
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: MousePosition (no auto-title, OpenLayers/Control/MousePosition.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)
|
||||
File: OverviewMap (no auto-title, OpenLayers/Control/OverviewMap.js)
|
||||
File: Pan (no auto-title, OpenLayers/Control/Pan.js)
|
||||
File: Panel (no auto-title, OpenLayers/Control/Panel.js)
|
||||
File: PanPanel (no auto-title, OpenLayers/Control/PanPanel.js)
|
||||
File: PanZoom (no auto-title, OpenLayers/Control/PanZoom.js)
|
||||
File: PanZoomBar (no auto-title, OpenLayers/Control/PanZoomBar.js)
|
||||
File: Permalink (no auto-title, OpenLayers/Control/Permalink.js)
|
||||
File: PinchZoom (no auto-title, OpenLayers/Control/PinchZoom.js)
|
||||
File: Scale (no auto-title, OpenLayers/Control/Scale.js)
|
||||
File: ScaleLine (no auto-title, OpenLayers/Control/ScaleLine.js)
|
||||
File: SelectFeature (no auto-title, OpenLayers/Control/SelectFeature.js)
|
||||
File: SLDSelect (no auto-title, OpenLayers/Control/SLDSelect.js)
|
||||
File: Snapping (no auto-title, OpenLayers/Control/Snapping.js)
|
||||
File: Split (no auto-title, OpenLayers/Control/Split.js)
|
||||
File: TouchNavigation (no auto-title, OpenLayers/Control/TouchNavigation.js)
|
||||
File: TransformFeature (no auto-title, OpenLayers/Control/TransformFeature.js)
|
||||
File: WMSGetFeatureInfo (no auto-title, OpenLayers/Control/WMSGetFeatureInfo.js)
|
||||
File: WMTSGetFeatureInfo (no auto-title, OpenLayers/Control/WMTSGetFeatureInfo.js)
|
||||
File: ZoomBox (no auto-title, OpenLayers/Control/ZoomBox.js)
|
||||
File: ZoomIn (no auto-title, OpenLayers/Control/ZoomIn.js)
|
||||
File: ZoomOut (no auto-title, OpenLayers/Control/ZoomOut.js)
|
||||
File: ZoomPanel (no auto-title, OpenLayers/Control/ZoomPanel.js)
|
||||
File: ZoomToMaxExtent (no auto-title, OpenLayers/Control/ZoomToMaxExtent.js)
|
||||
} # Group: Control
|
||||
|
||||
File: Events (no auto-title, OpenLayers/Events.js)
|
||||
|
||||
Group: Feature {
|
||||
|
||||
File: Feature (no auto-title, OpenLayers/Feature.js)
|
||||
File: Vector (no auto-title, OpenLayers/Feature/Vector.js)
|
||||
} # Group: Feature
|
||||
|
||||
Group: Filter {
|
||||
|
||||
File: Filter (no auto-title, OpenLayers/Filter.js)
|
||||
File: Comparison (no auto-title, OpenLayers/Filter/Comparison.js)
|
||||
File: FeatureId (no auto-title, OpenLayers/Filter/FeatureId.js)
|
||||
File: Function (no auto-title, OpenLayers/Filter/Function.js)
|
||||
File: Logical (no auto-title, OpenLayers/Filter/Logical.js)
|
||||
File: Spatial (no auto-title, OpenLayers/Filter/Spatial.js)
|
||||
} # Group: Filter
|
||||
|
||||
Group: Format {
|
||||
|
||||
File: Format (no auto-title, OpenLayers/Format.js)
|
||||
File: ArcXML (no auto-title, OpenLayers/Format/ArcXML.js)
|
||||
File: ArcXML.Features (no auto-title, OpenLayers/Format/ArcXML/Features.js)
|
||||
File: Atom (no auto-title, OpenLayers/Format/Atom.js)
|
||||
File: Context (no auto-title, OpenLayers/Format/Context.js)
|
||||
File: CQL (no auto-title, OpenLayers/Format/CQL.js)
|
||||
File: CSWGetDomain (no auto-title, OpenLayers/Format/CSWGetDomain.js)
|
||||
File: CSWGetDomain.v2_0_2 (no auto-title, OpenLayers/Format/CSWGetDomain/v2_0_2.js)
|
||||
File: CSWGetRecords (no auto-title, OpenLayers/Format/CSWGetRecords.js)
|
||||
File: CSWGetRecords.v2_0_2 (no auto-title, OpenLayers/Format/CSWGetRecords/v2_0_2.js)
|
||||
|
||||
Group: Filter {
|
||||
|
||||
File: Filter (no auto-title, OpenLayers/Format/Filter.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/Filter/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/Filter/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/Filter/v1_1_0.js)
|
||||
} # Group: Filter
|
||||
|
||||
Group: GML {
|
||||
|
||||
File: GML (no auto-title, OpenLayers/Format/GML.js)
|
||||
File: Base (no auto-title, OpenLayers/Format/GML/Base.js)
|
||||
File: v2 (no auto-title, OpenLayers/Format/GML/v2.js)
|
||||
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)
|
||||
|
||||
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)
|
||||
} # Group: OWSCommon
|
||||
|
||||
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)
|
||||
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)
|
||||
|
||||
Group: WFSCapabilities {
|
||||
|
||||
File: WFSCapabilities (no auto-title, OpenLayers/Format/WFSCapabilities.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/WFSCapabilities/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/WFSCapabilities/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WFSCapabilities/v1_1_0.js)
|
||||
} # Group: WFSCapabilities
|
||||
|
||||
Group: WFST {
|
||||
|
||||
File: WFST (no auto-title, OpenLayers/Format/WFST.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/WFST/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/WFST/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WFST/v1_1_0.js)
|
||||
} # Group: WFST
|
||||
|
||||
Group: WMC {
|
||||
|
||||
File: WMC (no auto-title, OpenLayers/Format/WMC.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/WMC/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Format/WMC/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WMC/v1_1_0.js)
|
||||
} # Group: WMC
|
||||
|
||||
Group: WMSCapabilities {
|
||||
|
||||
File: WMSCapabilities (no auto-title, OpenLayers/Format/WMSCapabilities.js)
|
||||
File: v1 (no auto-title, OpenLayers/Format/WMSCapabilities/v1.js)
|
||||
File: v1_1 (no auto-title, OpenLayers/Format/WMSCapabilities/v1_1.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Format/WMSCapabilities/v1_1_0.js)
|
||||
File: v1_1_1 (no auto-title, OpenLayers/Format/WMSCapabilities/v1_1_1.js)
|
||||
File: v1_3 (no auto-title, OpenLayers/Format/WMSCapabilities/v1_3.js)
|
||||
File: v1_3_0 (no auto-title, OpenLayers/Format/WMSCapabilities/v1_3_0.js)
|
||||
File: WMSCapabilities/v1_1_1_WMSC (no auto-title, OpenLayers/Format/WMSCapabilities/v1_1_1_WMSC.js)
|
||||
} # Group: WMSCapabilities
|
||||
|
||||
Group: WMSDescribeLayer {
|
||||
|
||||
File: WMSDescribeLayer (no auto-title, OpenLayers/Format/WMSDescribeLayer.js)
|
||||
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)
|
||||
File: WPSCapabilities (no auto-title, OpenLayers/Format/WPSCapabilities.js)
|
||||
File: WPSCapabilities.v1_0_0 (no auto-title, OpenLayers/Format/WPSCapabilities/v1_0_0.js)
|
||||
File: WPSDescribeProcess (no auto-title, OpenLayers/Format/WPSDescribeProcess.js)
|
||||
File: WPSExecute version 1.0.0 (no auto-title, OpenLayers/Format/WPSExecute.js)
|
||||
File: XLS (no auto-title, OpenLayers/Format/XLS.js)
|
||||
File: XLS.v1 (no auto-title, OpenLayers/Format/XLS/v1.js)
|
||||
File: XLS.v1_1_0 (no auto-title, OpenLayers/Format/XLS/v1_1_0.js)
|
||||
File: XML (no auto-title, OpenLayers/Format/XML.js)
|
||||
} # Group: Format
|
||||
|
||||
Group: Geometry {
|
||||
|
||||
File: Geometry (no auto-title, OpenLayers/Geometry.js)
|
||||
File: Collection (no auto-title, OpenLayers/Geometry/Collection.js)
|
||||
File: Curve (no auto-title, OpenLayers/Geometry/Curve.js)
|
||||
File: LinearRing (no auto-title, OpenLayers/Geometry/LinearRing.js)
|
||||
File: LineString (no auto-title, OpenLayers/Geometry/LineString.js)
|
||||
File: MultiLineString (no auto-title, OpenLayers/Geometry/MultiLineString.js)
|
||||
File: MultiPoint (no auto-title, OpenLayers/Geometry/MultiPoint.js)
|
||||
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)
|
||||
} # Group: Geometry
|
||||
|
||||
Group: Handler {
|
||||
|
||||
File: Handler (no auto-title, OpenLayers/Handler.js)
|
||||
File: Box (no auto-title, OpenLayers/Handler/Box.js)
|
||||
File: Click (no auto-title, OpenLayers/Handler/Click.js)
|
||||
File: Drag (no auto-title, OpenLayers/Handler/Drag.js)
|
||||
File: Feature (no auto-title, OpenLayers/Handler/Feature.js)
|
||||
File: Hover (no auto-title, OpenLayers/Handler/Hover.js)
|
||||
File: Keyboard (no auto-title, OpenLayers/Handler/Keyboard.js)
|
||||
File: MouseWheel (no auto-title, OpenLayers/Handler/MouseWheel.js)
|
||||
File: Path (no auto-title, OpenLayers/Handler/Path.js)
|
||||
File: Pinch (no auto-title, OpenLayers/Handler/Pinch.js)
|
||||
File: Point (no auto-title, OpenLayers/Handler/Point.js)
|
||||
File: Polygon (no auto-title, OpenLayers/Handler/Polygon.js)
|
||||
File: RegularPolygon (no auto-title, OpenLayers/Handler/RegularPolygon.js)
|
||||
} # Group: Handler
|
||||
|
||||
File: Icon (no auto-title, OpenLayers/Icon.js)
|
||||
File: Kinetic (no auto-title, OpenLayers/Kinetic.js)
|
||||
|
||||
Group: Lang {
|
||||
|
||||
File: Lang (no auto-title, OpenLayers/Lang.js)
|
||||
File: ar (no auto-title, OpenLayers/Lang/ar.js)
|
||||
File: be-tarask (no auto-title, OpenLayers/Lang/be-tarask.js)
|
||||
File: bg (no auto-title, OpenLayers/Lang/bg.js)
|
||||
File: br (no auto-title, OpenLayers/Lang/br.js)
|
||||
File: ca (no auto-title, OpenLayers/Lang/ca.js)
|
||||
File: cs-CZ (no auto-title, OpenLayers/Lang/cs-CZ.js)
|
||||
File: da-DK (no auto-title, OpenLayers/Lang/da-DK.js)
|
||||
File: de (no auto-title, OpenLayers/Lang/de.js)
|
||||
File: en (no auto-title, OpenLayers/Lang/en.js)
|
||||
File: en-CA (no auto-title, OpenLayers/Lang/en-CA.js)
|
||||
File: es (no auto-title, OpenLayers/Lang/es.js)
|
||||
File: el (no auto-title, OpenLayers/Lang/el.js)
|
||||
File: fi (no auto-title, OpenLayers/Lang/fi.js)
|
||||
File: fr (no auto-title, OpenLayers/Lang/fr.js)
|
||||
File: fur (no auto-title, OpenLayers/Lang/fur.js)
|
||||
File: gl (no auto-title, OpenLayers/Lang/gl.js)
|
||||
File: gsw (no auto-title, OpenLayers/Lang/gsw.js)
|
||||
File: hr (no auto-title, OpenLayers/Lang/hr.js)
|
||||
File: hsb (no auto-title, OpenLayers/Lang/hsb.js)
|
||||
File: hu (no auto-title, OpenLayers/Lang/hu.js)
|
||||
File: ia (no auto-title, OpenLayers/Lang/ia.js)
|
||||
File: id (no auto-title, OpenLayers/Lang/id.js)
|
||||
File: io (no auto-title, OpenLayers/Lang/io.js)
|
||||
File: is (no auto-title, OpenLayers/Lang/is.js)
|
||||
File: it (no auto-title, OpenLayers/Lang/it.js)
|
||||
File: ja (no auto-title, OpenLayers/Lang/ja.js)
|
||||
File: km (no auto-title, OpenLayers/Lang/km.js)
|
||||
File: ksh (no auto-title, OpenLayers/Lang/ksh.js)
|
||||
File: lt (no auto-title, OpenLayers/Lang/lt.js)
|
||||
File: nds (no auto-title, OpenLayers/Lang/nds.js)
|
||||
File: nb (no auto-title, OpenLayers/Lang/nb.js)
|
||||
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)
|
||||
File: sk (no auto-title, OpenLayers/Lang/sk.js)
|
||||
File: sv-SE (no auto-title, OpenLayers/Lang/sv-SE.js)
|
||||
File: te (no auto-title, OpenLayers/Lang/te.js)
|
||||
File: vi (no auto-title, OpenLayers/Lang/vi.js)
|
||||
File: zh-CN (no auto-title, OpenLayers/Lang/zh-CN.js)
|
||||
File: zh-TW (no auto-title, OpenLayers/Lang/zh-TW.js)
|
||||
} # Group: Lang
|
||||
|
||||
Group: Layer {
|
||||
|
||||
File: Layer (no auto-title, OpenLayers/Layer.js)
|
||||
File: ArcGISCache.js (no auto-title, OpenLayers/Layer/ArcGISCache.js)
|
||||
File: ArcGIS93Rest (no auto-title, OpenLayers/Layer/ArcGIS93Rest.js)
|
||||
File: ArcIMS (no auto-title, OpenLayers/Layer/ArcIMS.js)
|
||||
File: Bing (no auto-title, OpenLayers/Layer/Bing.js)
|
||||
File: Boxes (no auto-title, OpenLayers/Layer/Boxes.js)
|
||||
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: Google (no auto-title, OpenLayers/Layer/Google.js)
|
||||
File: Google.v3 (no auto-title, OpenLayers/Layer/Google/v3.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)
|
||||
File: KaMap (no auto-title, OpenLayers/Layer/KaMap.js)
|
||||
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: Markers (no auto-title, OpenLayers/Layer/Markers.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)
|
||||
File: Text (no auto-title, OpenLayers/Layer/Text.js)
|
||||
File: TileCache (no auto-title, OpenLayers/Layer/TileCache.js)
|
||||
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: WMS (no auto-title, OpenLayers/Layer/WMS.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: Zoomify (no auto-title, OpenLayers/Layer/Zoomify.js)
|
||||
} # Group: Layer
|
||||
|
||||
File: Map (no auto-title, OpenLayers/Map.js)
|
||||
|
||||
Group: Marker {
|
||||
|
||||
File: Marker (no auto-title, OpenLayers/Marker.js)
|
||||
File: Box (no auto-title, OpenLayers/Marker/Box.js)
|
||||
} # Group: Marker
|
||||
|
||||
Group: Popup {
|
||||
|
||||
File: Popup (no auto-title, OpenLayers/Popup.js)
|
||||
File: Anchored (no auto-title, OpenLayers/Popup/Anchored.js)
|
||||
File: Framed (no auto-title, OpenLayers/Popup/Framed.js)
|
||||
File: FramedCloud (no auto-title, OpenLayers/Popup/FramedCloud.js)
|
||||
} # Group: Popup
|
||||
|
||||
File: Projection (no auto-title, OpenLayers/Projection.js)
|
||||
|
||||
Group: Protocol {
|
||||
|
||||
File: Protocol (no auto-title, OpenLayers/Protocol.js)
|
||||
File: HTTP (no auto-title, OpenLayers/Protocol/HTTP.js)
|
||||
|
||||
Group: WFS {
|
||||
|
||||
File: WFS (no auto-title, OpenLayers/Protocol/WFS.js)
|
||||
File: v1 (no auto-title, OpenLayers/Protocol/WFS/v1.js)
|
||||
File: v1_0_0 (no auto-title, OpenLayers/Protocol/WFS/v1_0_0.js)
|
||||
File: v1_1_0 (no auto-title, OpenLayers/Protocol/WFS/v1_1_0.js)
|
||||
} # Group: WFS
|
||||
|
||||
File: Script (no auto-title, OpenLayers/Protocol/Script.js)
|
||||
File: SOS.DEFAULTS (no auto-title, OpenLayers/Protocol/SOS.js)
|
||||
File: SOS.v1_0_0 (no auto-title, OpenLayers/Protocol/SOS/v1_0_0.js)
|
||||
} # Group: Protocol
|
||||
|
||||
Group: Renderer {
|
||||
|
||||
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: SVG (no auto-title, OpenLayers/Renderer/SVG.js)
|
||||
File: VML (no auto-title, OpenLayers/Renderer/VML.js)
|
||||
} # Group: Renderer
|
||||
|
||||
Group: Request {
|
||||
|
||||
File: Request (no auto-title, OpenLayers/Request.js)
|
||||
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)
|
||||
|
||||
Group: Strategy {
|
||||
|
||||
File: Strategy (no auto-title, OpenLayers/Strategy.js)
|
||||
File: BBOX (no auto-title, OpenLayers/Strategy/BBOX.js)
|
||||
File: Cluster (no auto-title, OpenLayers/Strategy/Cluster.js)
|
||||
File: Filter (no auto-title, OpenLayers/Strategy/Filter.js)
|
||||
File: Fixed (no auto-title, OpenLayers/Strategy/Fixed.js)
|
||||
File: Paging (no auto-title, OpenLayers/Strategy/Paging.js)
|
||||
File: Refresh (no auto-title, OpenLayers/Strategy/Refresh.js)
|
||||
File: Save (no auto-title, OpenLayers/Strategy/Save.js)
|
||||
} # Group: Strategy
|
||||
|
||||
File: Style (no auto-title, OpenLayers/Style.js)
|
||||
File: Style2 (no auto-title, OpenLayers/Style2.js)
|
||||
File: StyleMap (no auto-title, OpenLayers/StyleMap.js)
|
||||
|
||||
Group: Symbolizer {
|
||||
|
||||
File: Symbolizer (no auto-title, OpenLayers/Symbolizer.js)
|
||||
File: Line (no auto-title, OpenLayers/Symbolizer/Line.js)
|
||||
File: Point (no auto-title, OpenLayers/Symbolizer/Point.js)
|
||||
File: Polygon (no auto-title, OpenLayers/Symbolizer/Polygon.js)
|
||||
File: Raster (no auto-title, OpenLayers/Symbolizer/Raster.js)
|
||||
File: Text (no auto-title, OpenLayers/Symbolizer/Text.js)
|
||||
} # Group: Symbolizer
|
||||
|
||||
Group: Tile {
|
||||
|
||||
File: Tile (no auto-title, OpenLayers/Tile.js)
|
||||
File: Image (no auto-title, OpenLayers/Tile/Image.js)
|
||||
File: Image.IFrame (no auto-title, OpenLayers/Tile/Image/IFrame.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 {
|
||||
|
||||
Index: Everything
|
||||
Class Index: Classes
|
||||
Constant Index: Constants
|
||||
Function Index: Functions
|
||||
Property Index: Properties
|
||||
File Index: Files
|
||||
Constructor Index: Constructor
|
||||
} # Group: Index
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
p {
|
||||
text-indent: 0; margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.MGroup {
|
||||
font-variant: normal;
|
||||
margin: 0.4em 0 0em 10px
|
||||
}
|
||||
|
||||
.MTitle {
|
||||
font-variant: normal;
|
||||
}
|
||||
|
||||
.CGroup .CTitle {
|
||||
font-variant: normal;
|
||||
}
|
||||
|
||||
.SGroup .SEntry {
|
||||
font-variant: normal;
|
||||
}
|
||||
@@ -1,102 +0,0 @@
|
||||
Format: 1.52
|
||||
|
||||
# This is the Natural Docs topics file for this project. If you change anything
|
||||
# here, it will apply to THIS PROJECT ONLY. If you'd like to change something
|
||||
# for all your projects, edit the Topics.txt in Natural Docs' Config directory
|
||||
# instead.
|
||||
|
||||
|
||||
# If you'd like to prevent keywords from being recognized by Natural Docs, you
|
||||
# can do it like this:
|
||||
# Ignore Keywords: [keyword], [keyword], ...
|
||||
#
|
||||
# Or you can use the list syntax like how they are defined:
|
||||
# Ignore Keywords:
|
||||
# [keyword]
|
||||
# [keyword], [plural keyword]
|
||||
# ...
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# SYNTAX:
|
||||
#
|
||||
# Topic Type: [name]
|
||||
# Alter Topic Type: [name]
|
||||
# Creates a new topic type or alters one from the main file. Each type gets
|
||||
# its own index and behavior settings. Its name can have letters, numbers,
|
||||
# spaces, and these charaters: - / . '
|
||||
#
|
||||
# Plural: [name]
|
||||
# Sets the plural name of the topic type, if different.
|
||||
#
|
||||
# Keywords:
|
||||
# [keyword]
|
||||
# [keyword], [plural keyword]
|
||||
# ...
|
||||
# Defines or adds to the list of keywords for the topic type. They may only
|
||||
# contain letters, numbers, and spaces and are not case sensitive. Plural
|
||||
# keywords are used for list topics. You can redefine keywords found in the
|
||||
# main topics file.
|
||||
#
|
||||
# Index: [yes|no]
|
||||
# Whether the topics get their own index. Defaults to yes. Everything is
|
||||
# included in the general index regardless of this setting.
|
||||
#
|
||||
# Scope: [normal|start|end|always global]
|
||||
# How the topics affects scope. Defaults to normal.
|
||||
# normal - Topics stay within the current scope.
|
||||
# start - Topics start a new scope for all the topics beneath it,
|
||||
# like class topics.
|
||||
# end - Topics reset the scope back to global for all the topics
|
||||
# beneath it.
|
||||
# always global - Topics are defined as global, but do not change the scope
|
||||
# for any other topics.
|
||||
#
|
||||
# Class Hierarchy: [yes|no]
|
||||
# Whether the topics are part of the class hierarchy. Defaults to no.
|
||||
#
|
||||
# Page Title If First: [yes|no]
|
||||
# Whether the topic's title becomes the page title if it's the first one in
|
||||
# a file. Defaults to no.
|
||||
#
|
||||
# Break Lists: [yes|no]
|
||||
# Whether list topics should be broken into individual topics in the output.
|
||||
# Defaults to no.
|
||||
#
|
||||
# Can Group With: [type], [type], ...
|
||||
# Defines a list of topic types that this one can possibly be grouped with.
|
||||
# Defaults to none.
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# The following topics are defined in the main file, if you'd like to alter
|
||||
# their behavior or add keywords:
|
||||
#
|
||||
# Generic, Class, Interface, Section, File, Group, Function, Variable,
|
||||
# Property, Type, Constant, Enumeration, Event, Delegate, Macro,
|
||||
# Database, Database Table, Database View, Database Index, Database
|
||||
# Cursor, Database Trigger, Cookie, Build Target
|
||||
|
||||
# If you add something that you think would be useful to other developers
|
||||
# and should be included in Natural Docs by default, please e-mail it to
|
||||
# topics [at] naturaldocs [dot] org.
|
||||
|
||||
|
||||
Topic Type: Constructor
|
||||
|
||||
Class Hierarchy: Yes
|
||||
Keywords:
|
||||
constructor
|
||||
initialize
|
||||
|
||||
|
||||
Alter Topic Type: Function
|
||||
|
||||
Add Keywords:
|
||||
apimethod
|
||||
apifunction
|
||||
|
||||
|
||||
Alter Topic Type: Property
|
||||
|
||||
Add Keywords:
|
||||
apiproperty
|
||||
File diff suppressed because one or more lines are too long
@@ -1,57 +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 KML Parser Example</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
function parseData(req) {
|
||||
g = new OpenLayers.Format.KML({extractStyles: true});
|
||||
html = "";
|
||||
features = g.read(req.responseText);
|
||||
for(var feat in features) {
|
||||
html += "Feature: Geometry: "+ features[feat].geometry+",";
|
||||
html += "<ul>";
|
||||
for (var j in features[feat].attributes) {
|
||||
html += "<li>Attribute "+j+":"+features[feat].attributes[j]+"</li>";
|
||||
}
|
||||
html += "</ul>";
|
||||
html += "<ul>";
|
||||
for (var j in features[feat].style) {
|
||||
html += "<li>Style "+j+":"+features[feat].style[j]+"</li>";
|
||||
}
|
||||
html += "</ul>"
|
||||
}
|
||||
document.getElementById('output').innerHTML = html;
|
||||
}
|
||||
function load() {
|
||||
OpenLayers.Request.GET({
|
||||
url: "kml/lines.kml",
|
||||
success: parseData
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="load()">
|
||||
<h1 id="title">KML Parser Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
KML, parsing, format
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrate the operation of the KML parser.
|
||||
</p>
|
||||
|
||||
<div id="output"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p>This script reads data from a KML file and parses out the
|
||||
coordinates, appending them to a HTML string with markup tags.
|
||||
This markup is dumped to an element in the page.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,202 +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 SLD based selection 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">
|
||||
.olControlSLDSelectBoxActive {
|
||||
cursor: crosshair;
|
||||
}
|
||||
.olControlSLDSelectPolygonActive {
|
||||
cursor: crosshair;
|
||||
}
|
||||
.olControlSLDSelectLineActive {
|
||||
cursor: crosshair;
|
||||
}
|
||||
.olControlSLDSelectPointActive {
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
var map, controls, layers;
|
||||
|
||||
function init(){
|
||||
OpenLayers.ProxyHost= "proxy.cgi?url=";
|
||||
map = new OpenLayers.Map('map', {allOverlays: true, controls: []});
|
||||
var url = "http://demo.opengeo.org/geoserver/wms";
|
||||
layers = {
|
||||
states: new OpenLayers.Layer.WMS("State boundary", url,
|
||||
{layers: 'topp:tasmania_state_boundaries', format: 'image/gif', transparent: 'TRUE'},
|
||||
{singleTile: true}),
|
||||
roads: new OpenLayers.Layer.WMS("Roads", url,
|
||||
{layers: 'topp:tasmania_roads', format: 'image/gif', transparent: 'TRUE'},
|
||||
{singleTile: true}),
|
||||
waterbodies: new OpenLayers.Layer.WMS("Water bodies", url,
|
||||
{layers: 'topp:tasmania_water_bodies', format: 'image/gif', transparent: 'TRUE'},
|
||||
{singleTile: true}),
|
||||
cities: new OpenLayers.Layer.WMS("Cities", url,
|
||||
{layers: 'topp:tasmania_cities', format: 'image/gif', transparent: 'TRUE'},
|
||||
{singleTile: true})
|
||||
};
|
||||
|
||||
for (var key in layers) {
|
||||
map.addLayer(layers[key]);
|
||||
}
|
||||
|
||||
map.setCenter(new OpenLayers.LonLat(146.65748632815,-42.230763671875), 7);
|
||||
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
|
||||
controls = {
|
||||
navigation: new OpenLayers.Control.Navigation(),
|
||||
box: new OpenLayers.Control.SLDSelect(
|
||||
OpenLayers.Handler.RegularPolygon,
|
||||
{
|
||||
displayClass: 'olControlSLDSelectBox',
|
||||
layers: [layers['waterbodies']],
|
||||
handlerOptions: {irregular: true}
|
||||
}
|
||||
),
|
||||
polygon: new OpenLayers.Control.SLDSelect(
|
||||
OpenLayers.Handler.Polygon,
|
||||
{
|
||||
displayClass: 'olControlSLDSelectPolygon',
|
||||
layers: [layers['waterbodies']]
|
||||
}
|
||||
),
|
||||
line: new OpenLayers.Control.SLDSelect(
|
||||
OpenLayers.Handler.Path,
|
||||
{
|
||||
displayClass: 'olControlSLDSelectLine',
|
||||
layers: [layers['waterbodies']]
|
||||
}
|
||||
),
|
||||
point: new OpenLayers.Control.SLDSelect(
|
||||
OpenLayers.Handler.Click,
|
||||
{
|
||||
displayClass: 'olControlSLDSelectPoint',
|
||||
layers: [layers['waterbodies']]
|
||||
}
|
||||
),
|
||||
circle: new OpenLayers.Control.SLDSelect(
|
||||
OpenLayers.Handler.RegularPolygon,
|
||||
{
|
||||
displayClass: 'olControlSLDSelectBox',
|
||||
layers: [layers['waterbodies']],
|
||||
handlerOptions: {sides: 30}
|
||||
}
|
||||
)
|
||||
};
|
||||
|
||||
for(var key in controls) {
|
||||
map.addControl(controls[key]);
|
||||
}
|
||||
}
|
||||
|
||||
function toggleControl(element) {
|
||||
for(var key in controls) {
|
||||
var control = controls[key];
|
||||
if(element.value == key && element.checked) {
|
||||
control.activate();
|
||||
} else {
|
||||
control.deactivate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function toggleSelectionLayer(element) {
|
||||
var selectLayers = [];
|
||||
var elements = element.value.split("_");
|
||||
for (var key in layers) {
|
||||
var layer = layers[key];
|
||||
for (var i=0, len=elements.length; i<len; i++) {
|
||||
var value = elements[i];
|
||||
if (value == key && element.checked) {
|
||||
selectLayers.push(layer);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var i=0, len=this.map.controls.length; i<len; i++) {
|
||||
var control = this.map.controls[i];
|
||||
if (control instanceof OpenLayers.Control.SLDSelect) {
|
||||
control.setLayers(selectLayers);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">SLD based selection on WMS layers</h1>
|
||||
|
||||
<div id="tags">
|
||||
sld, sldselect, styling, style
|
||||
</div>
|
||||
|
||||
<div id="shortdesc">Using Styled Layer Descriptors to make a selection on WMS layers</div>
|
||||
|
||||
<div id="map" style="width: 512px; height: 256px; border: 1px solid red;"></div>
|
||||
|
||||
<div id="docs">
|
||||
This example uses the OpenLayers.Control.SLDSelect to select features in a WMS
|
||||
layer. The features are highlighted using Styled Layer Descriptors (SLD). The
|
||||
control supports point, box, line and polygon selection modes by configuring the
|
||||
appriopriate handler.
|
||||
</div>
|
||||
|
||||
<div id="controls">
|
||||
<ul id="controlToggle"><b>Map Controls</b>
|
||||
<li>
|
||||
<input type="radio" name="control" value="navigation" id="noneToggle" onclick="toggleControl(this);" CHECKED>
|
||||
<label for="noneToggle">navigate</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="control" value="box" id="boxToggle" onclick="toggleControl(this);">
|
||||
<label for="boxToggle">SLD select with box</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="control" value="polygon" id="polygonToggle" onclick="toggleControl(this);">
|
||||
<label for="polygonToggle">SLD select with polygon</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="control" value="line" id="lineToggle" onclick="toggleControl(this);">
|
||||
<label for="lineToggle">SLD select with line</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="control" value="point" id="pointToggle" onclick="toggleControl(this);">
|
||||
<label for="pointToggle">SLD select with point</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="control" value="circle" id="circleToggle" onclick="toggleControl(this);">
|
||||
<label for="circleToggle">SLD select with circle</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="layers">
|
||||
<ul id="layerToggle"><b>Selection layer</b>
|
||||
<li>
|
||||
<input type="radio" name="layer" value="waterbodies" id="waterbodiesToggle" onclick="toggleSelectionLayer(this);" CHECKED>
|
||||
<label for="noneToggle">Water bodies</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="layer" value="cities" id="citiesToggle" onclick="toggleSelectionLayer(this);">
|
||||
<label for="citiesToggle">Cities</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="layer" value="roads" id="roadsToggle" onclick="toggleSelectionLayer(this);">
|
||||
<label for="roadsToggle">Roads</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="layer" value="roads_cities" id="roadsCitiesToggle" onclick="toggleSelectionLayer(this);">
|
||||
<label for="roadsCitiesToggle">Roads and cities</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,52 +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 WMSDescribeLayer Parser Example</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
function parseData(req) {
|
||||
format = new OpenLayers.Format.WMSDescribeLayer();
|
||||
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+",";
|
||||
html += "<ul>";
|
||||
html += "<li>owsURL: "+layerDescriptions[i].owsURL+"</li>";
|
||||
html += "<li>owsType: "+layerDescriptions[i].owsType+"</li>";
|
||||
html += "</ul>"
|
||||
}
|
||||
document.getElementById('output').innerHTML = html;
|
||||
}
|
||||
function load() {
|
||||
OpenLayers.Request.GET({
|
||||
url: "xml/wmsdescribelayer.xml",
|
||||
success: parseData
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="load()">
|
||||
<h1 id="title">WMSDescribeLayer Parser Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
wmsdescribelayer, parser, cleanup
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrate the operation of the WMSDescribeLayer parser.
|
||||
</p>
|
||||
|
||||
<div id="output"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p>This script reads data from a file and parses out the coordinates,
|
||||
appending them to a HTML string with markup tags. This markup is
|
||||
dumped to an element in the page.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,100 +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 Accelerometer Usage</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script type="text/javascript" src="browser.js"></script>
|
||||
|
||||
<style type="text/css">
|
||||
.olControlAttribution {
|
||||
bottom: 5px;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
function init() {
|
||||
if (isEventSupported('deviceorientation', window) || isEventSupported('mozorientation', window) || isEventSupported('devicemotion', window)) {
|
||||
if (window.DeviceOrientationEvent) {
|
||||
window.addEventListener("deviceorientation", function (event) {
|
||||
document.getElementById('resultDeviceOrientation').innerHTML = '';
|
||||
if (typeof(event.alpha) != 'undefined') {
|
||||
document.getElementById('resultDeviceOrientation').innerHTML = document.getElementById('resultDeviceOrientation').innerHTML + "Alpha: " + event.alpha + "<br>";
|
||||
document.getElementById('resultDeviceOrientation').innerHTML = document.getElementById('resultDeviceOrientation').innerHTML + "Beta: " + event.beta + "<br>";
|
||||
document.getElementById('resultDeviceOrientation').innerHTML = document.getElementById('resultDeviceOrientation').innerHTML + "Gamma: " + event.gamma + "<br>";
|
||||
}
|
||||
if (typeof(event.absolute) != 'undefined') {
|
||||
document.getElementById('resultDeviceOrientation').innerHTML = document.getElementById('resultDeviceOrientation').innerHTML + "Gamma: " + event.absolute + "<br>";
|
||||
}
|
||||
if (typeof(event.compassCalibrate) != 'undefined') {
|
||||
document.getElementById('resultDeviceOrientation').innerHTML = document.getElementById('resultDeviceOrientation').innerHTML + "Gamma: " + event.compassCalibrated + "<br>";
|
||||
}
|
||||
}, true);
|
||||
}
|
||||
if (window.DeviceMotionEvent) {
|
||||
window.addEventListener('devicemotion', function (event) {
|
||||
document.getElementById('resultDeviceMotion').innerHTML = '';
|
||||
if (typeof(event.accelerationIncludingGravity) != 'undefined') {
|
||||
document.getElementById('resultDeviceMotion').innerHTML = document.getElementById('resultDeviceMotion').innerHTML + "accelerationIncludingGravity.x: " + event.accelerationIncludingGravity.x + "<br>";
|
||||
document.getElementById('resultDeviceMotion').innerHTML = document.getElementById('resultDeviceMotion').innerHTML + "accelerationIncludingGravity.y: " + event.accelerationIncludingGravity.y + "<br>";
|
||||
document.getElementById('resultDeviceMotion').innerHTML = document.getElementById('resultDeviceMotion').innerHTML + "accelerationIncludingGravity.z: " + event.accelerationIncludingGravity.z + "<br>";
|
||||
}
|
||||
if (typeof(event.acceleration) != 'undefined') {
|
||||
document.getElementById('resultDeviceMotion').innerHTML = document.getElementById('resultDeviceMotion').innerHTML + "acceleration.x: " + event.acceleration.x + "<br>";
|
||||
document.getElementById('resultDeviceMotion').innerHTML = document.getElementById('resultDeviceMotion').innerHTML + "acceleration.y: " + event.acceleration.y + "<br>";
|
||||
document.getElementById('resultDeviceMotion').innerHTML = document.getElementById('resultDeviceMotion').innerHTML + "acceleration.z: " + event.acceleration.z + "<br>";
|
||||
}
|
||||
if (typeof(event.rotationRate) != 'undefined') {
|
||||
document.getElementById('resultDeviceMotion').innerHTML = document.getElementById('resultDeviceMotion').innerHTML + "rotationRate.alpha: " + event.rotationRate.alpha + "<br>";
|
||||
document.getElementById('resultDeviceMotion').innerHTML = document.getElementById('resultDeviceMotion').innerHTML + "rotationRate.beta: " + event.rotationRate.beta + "<br>";
|
||||
document.getElementById('resultDeviceMotion').innerHTML = document.getElementById('resultDeviceMotion').innerHTML + "rotationRate.gamma: " + event.rotationRate.gamma + "<br>";
|
||||
}
|
||||
}, true);
|
||||
}
|
||||
if (window.MozOrientation) {
|
||||
window.addEventListener("MozOrientation", function (orientation) {
|
||||
document.getElementById('resultMozOrientation').innerHTML = "orientation.x: " + orientation.x + "<br>";
|
||||
document.getElementById('resultMozOrientation').innerHTML = document.getElementById('resultMozOrientation').innerHTML + "orientation.y: " + orientation.y + "<br>";
|
||||
document.getElementById('resultMozOrientation').innerHTML = document.getElementById('resultMozOrientation').innerHTML + "orientation.z: " + orientation.z + "<br>";
|
||||
}, true);
|
||||
}
|
||||
} else {
|
||||
alert("Unfortunately, your brower doesn't support the orientation usage");
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Accelerometer</h1>
|
||||
|
||||
<p id="shortdesc">
|
||||
The goal of this script is to demonstrate the usage of accelerometer.
|
||||
</p>
|
||||
<p>
|
||||
The orientation specification can be found <a href="http://dev.w3.org/geo/api/spec-source-orientation.html">here</a>.
|
||||
</p>
|
||||
|
||||
<div id="tags">
|
||||
browser, vendor, mobile, orientation
|
||||
</div>
|
||||
|
||||
<h1>Device motion</h1>
|
||||
|
||||
<div id="resultDeviceMotion">
|
||||
|
||||
</div>
|
||||
<h1>Device orientation</h1>
|
||||
|
||||
<div id="resultDeviceOrientation">
|
||||
|
||||
</div>
|
||||
<h1>MOZ orientation</h1>
|
||||
|
||||
<div id="resultMozOrientation">
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</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);
|
||||
}
|
||||
@@ -1,167 +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 Accessible 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">
|
||||
table {
|
||||
border: 1 px solid white;
|
||||
padding: 0;
|
||||
}
|
||||
td {
|
||||
text-align: center;
|
||||
}
|
||||
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/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
var map = null;
|
||||
function init(){
|
||||
var options = {
|
||||
controls: [
|
||||
new OpenLayers.Control.KeyboardDefaults({
|
||||
observeElement: 'map'
|
||||
})
|
||||
]
|
||||
};
|
||||
map = new OpenLayers.Map('map', options);
|
||||
var wms = new OpenLayers.Layer.WMS(
|
||||
"OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0?",
|
||||
{layers: 'basic'}
|
||||
);
|
||||
map.addLayer(wms);
|
||||
map.zoomToMaxExtent();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Accessible Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
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.
|
||||
</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.pan(0, -map.getSize().h / 4);"
|
||||
accesskey="n">
|
||||
pan <em>n</em>orth
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="javascript: void map.pan(-map.getSize().w / 4, 0);"
|
||||
accesskey="w">
|
||||
pan <em>w</em>est
|
||||
</a>
|
||||
</td>
|
||||
<td id="map" class="smallmap" tabindex="0"></td>
|
||||
<td>
|
||||
<a href="javascript: void map.pan(map.getSize().w / 4, 0);"
|
||||
accesskey="e">
|
||||
pan <em>e</em>ast
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<a href="javascript: void map.pan(0, map.getSize().h / 4);"
|
||||
accesskey="s">
|
||||
pan <em>s</em>outh
|
||||
</a>
|
||||
</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<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>+ (zoom in)</li>
|
||||
<li>- (zoom out)</li>
|
||||
<li>up-arrow (pan north)</li>
|
||||
<li>down-arrow (pan south)</li>
|
||||
<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:
|
||||
<ul>
|
||||
<li>i (zoom in)</li>
|
||||
<li>o (zoom out)</li>
|
||||
<li>n (pan north)</li>
|
||||
<li>s (pan south)</li>
|
||||
<li>e (pan east)</li>
|
||||
<li>w (pan west)</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ol>
|
||||
<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.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,34 +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 All Overlays with Google and OSM</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.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="../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
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Using the Google and OSM layers as overlays.
|
||||
</p>
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs">
|
||||
<p>
|
||||
Using the allOverlays property on the map, the first layer added
|
||||
must initially be visible. This example demonstrates the use of
|
||||
a Google layer and an OSM layer treated as overlays.
|
||||
</p><p>
|
||||
See the <a href="all-overlays-google.js" target="_blank">
|
||||
all-overlays-google.js source</a> to see how this is done.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,19 +0,0 @@
|
||||
var map;
|
||||
|
||||
function init() {
|
||||
|
||||
map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
allOverlays: true
|
||||
});
|
||||
|
||||
var osm = new OpenLayers.Layer.OSM();
|
||||
var gmap = new OpenLayers.Layer.Google("Google Streets", {visibility: false});
|
||||
|
||||
// note that first layer must be visible
|
||||
map.addLayers([osm, gmap]);
|
||||
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.zoomToMaxExtent();
|
||||
|
||||
}
|
||||
@@ -1,76 +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>All Overlays 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 type="text/javascript">
|
||||
var map;
|
||||
function init() {
|
||||
map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
allOverlays: true,
|
||||
maxExtent: new OpenLayers.Bounds(
|
||||
1549471.9221, 6403610.94, 1550001.32545, 6404015.8
|
||||
)
|
||||
});
|
||||
|
||||
// give the features some style
|
||||
var styles = new OpenLayers.StyleMap({
|
||||
"default": {
|
||||
strokeWidth: 2
|
||||
},
|
||||
"select": {
|
||||
strokeColor: "#0099cc",
|
||||
strokeWidth: 4
|
||||
}
|
||||
});
|
||||
|
||||
// add rules from the above lookup table
|
||||
styles.addUniqueValueRules("default", "RP_TYPE", {
|
||||
10: {strokeColor: "#000000", strokeWidth: 2},
|
||||
12: {strokeColor: "#222222", strokeWidth: 2},
|
||||
14: {strokeColor: "#444444", strokeWidth: 2},
|
||||
16: {strokeColor: "#666666", strokeWidth: 2},
|
||||
18: {strokeColor: "#888888", strokeWidth: 2},
|
||||
19: {strokeColor: "#666666", strokeWidth: 1}
|
||||
});
|
||||
|
||||
var vectors = new OpenLayers.Layer.Vector("Lines", {
|
||||
strategies: [new OpenLayers.Strategy.Fixed()],
|
||||
protocol: new OpenLayers.Protocol.HTTP({
|
||||
url: "data/roads.json",
|
||||
format: new OpenLayers.Format.GeoJSON()
|
||||
}),
|
||||
styleMap: styles
|
||||
});
|
||||
|
||||
map.addLayer(vectors);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.zoomToMaxExtent();
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">OpenLayers Overlays Only Example</h1>
|
||||
<div id="tags">
|
||||
overlay, baselayer, light
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Demonstrates a map with overlays only.
|
||||
</p>
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs">
|
||||
To create a map that allows any draw order with all layer types
|
||||
and lets you set the visibility of any layer independently, set
|
||||
the allOverlays property on the map to true.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,29 +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">
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<title>AnchorPermalink Example</title>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="anchor-permalink.js"></script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">AnchorPermalink Example</h1>
|
||||
<div id="tags">
|
||||
anchor, permalink
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Place a permalink in the anchor of the url.
|
||||
</p>
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs">
|
||||
<p>
|
||||
See the <a href="anchor-permalink.js" target="_blank">anchor-permalink.js
|
||||
source</a> to see how this is done.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,13 +0,0 @@
|
||||
function init() {
|
||||
var map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
projection: new OpenLayers.Projection("EPSG:900913"),
|
||||
displayProjection: new OpenLayers.Projection("EPSG:4326"),
|
||||
layers: [
|
||||
new OpenLayers.Layer.OSM()
|
||||
]
|
||||
});
|
||||
if (!map.getCenter()) map.zoomToMaxExtent();
|
||||
|
||||
map.addControl(new OpenLayers.Control.Permalink({anchor: true}));
|
||||
}
|
||||
@@ -1,98 +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>Animated Panning of the Map via map.panTo</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 type="text/javascript">
|
||||
var map, layer, running = false;
|
||||
|
||||
OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
|
||||
defaultHandlerOptions: {
|
||||
'single': true,
|
||||
'delay': 200
|
||||
},
|
||||
|
||||
initialize: function(options) {
|
||||
this.handlerOptions = OpenLayers.Util.extend(
|
||||
{}, this.defaultHandlerOptions
|
||||
);
|
||||
OpenLayers.Control.prototype.initialize.apply(
|
||||
this, arguments
|
||||
);
|
||||
this.handler = new OpenLayers.Handler.Click(
|
||||
this, {
|
||||
'click': this.onClick
|
||||
}, this.handlerOptions
|
||||
);
|
||||
},
|
||||
|
||||
onClick: function(evt) {
|
||||
map.panTo(map.getLonLatFromPixel(evt.xy));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function init(){
|
||||
map = new OpenLayers.Map('map', {numZoomLevels: 2});
|
||||
layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} );
|
||||
|
||||
map.addLayer(layer);
|
||||
map.zoomToMaxExtent();
|
||||
var click = new OpenLayers.Control.Click();
|
||||
map.addControl(click);
|
||||
click.activate();
|
||||
map.addControl(new OpenLayers.Control.OverviewMap());
|
||||
|
||||
map2 = new OpenLayers.Map('map2', {'panMethod': null, numZoomLevels: 2} );
|
||||
layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} );
|
||||
|
||||
map2.addLayer(layer);
|
||||
map2.zoomToMaxExtent();
|
||||
}
|
||||
|
||||
function setCenterInterval() {
|
||||
if (!running) {
|
||||
setCenter();
|
||||
running = setInterval('setCenter()', 500);
|
||||
} else {
|
||||
clearInterval(running);
|
||||
running = false;
|
||||
}
|
||||
}
|
||||
|
||||
function setCenter() {
|
||||
var lon = Math.random() * 360 - 180;
|
||||
var lat = Math.random() * 180 - 90;
|
||||
var lonlat = new OpenLayers.LonLat(lon, lat);
|
||||
map.panTo(lonlat);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">map.panTo Example</h1>
|
||||
<div id="tags">
|
||||
panning, animation, effect, smooth, panMethod
|
||||
</div>
|
||||
<div id="shortdesc">Show animated panning effects in the map</div>
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs">
|
||||
<p>This is an example of transition effects. If the new random center is in the current extent, the map will pan smoothly. <br>
|
||||
The random selection will continue until you press it again. Additionally, you can single click in the map to pan smoothly
|
||||
to that area, or use the pan control to pan smoothly.
|
||||
</p>
|
||||
</div>
|
||||
<button onclick="setCenterInterval()">Start/stop random recenter</button>
|
||||
<div id="map2" class="smallmap"></div>
|
||||
<div>
|
||||
<p>To turn off Animated Panning, create a map with an panMethod set to
|
||||
null. </p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,670 +0,0 @@
|
||||
/*
|
||||
Animator.js 1.1.9
|
||||
|
||||
This library is released under the BSD license:
|
||||
|
||||
Copyright (c) 2006, Bernard Sumption. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer. 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. Neither the name BernieCode 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 COPYRIGHT HOLDERS AND CONTRIBUTORS "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 REGENTS OR CONTRIBUTORS 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.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// Applies a sequence of numbers between 0 and 1 to a number of subjects
|
||||
// construct - see setOptions for parameters
|
||||
function Animator(options) {
|
||||
this.setOptions(options);
|
||||
var _this = this;
|
||||
this.timerDelegate = function(){_this.onTimerEvent()};
|
||||
this.subjects = [];
|
||||
this.target = 0;
|
||||
this.state = 0;
|
||||
this.lastTime = null;
|
||||
};
|
||||
Animator.prototype = {
|
||||
// apply defaults
|
||||
setOptions: function(options) {
|
||||
this.options = Animator.applyDefaults({
|
||||
interval: 20, // time between animation frames
|
||||
duration: 400, // length of animation
|
||||
onComplete: function(){},
|
||||
onStep: function(){},
|
||||
transition: Animator.tx.easeInOut
|
||||
}, options);
|
||||
},
|
||||
// animate from the current state to provided value
|
||||
seekTo: function(to) {
|
||||
this.seekFromTo(this.state, to);
|
||||
},
|
||||
// animate from the current state to provided value
|
||||
seekFromTo: function(from, to) {
|
||||
this.target = Math.max(0, Math.min(1, to));
|
||||
this.state = Math.max(0, Math.min(1, from));
|
||||
this.lastTime = new Date().getTime();
|
||||
if (!this.intervalId) {
|
||||
this.intervalId = window.setInterval(this.timerDelegate, this.options.interval);
|
||||
}
|
||||
},
|
||||
// animate from the current state to provided value
|
||||
jumpTo: function(to) {
|
||||
this.target = this.state = Math.max(0, Math.min(1, to));
|
||||
this.propagate();
|
||||
},
|
||||
// seek to the opposite of the current target
|
||||
toggle: function() {
|
||||
this.seekTo(1 - this.target);
|
||||
},
|
||||
// add a function or an object with a method setState(state) that will be called with a number
|
||||
// between 0 and 1 on each frame of the animation
|
||||
addSubject: function(subject) {
|
||||
this.subjects[this.subjects.length] = subject;
|
||||
return this;
|
||||
},
|
||||
// remove all subjects
|
||||
clearSubjects: function() {
|
||||
this.subjects = [];
|
||||
},
|
||||
// forward the current state to the animation subjects
|
||||
propagate: function() {
|
||||
var value = this.options.transition(this.state);
|
||||
for (var i=0; i<this.subjects.length; i++) {
|
||||
if (this.subjects[i].setState) {
|
||||
this.subjects[i].setState(value);
|
||||
} else {
|
||||
this.subjects[i](value);
|
||||
}
|
||||
}
|
||||
},
|
||||
// called once per frame to update the current state
|
||||
onTimerEvent: function() {
|
||||
var now = new Date().getTime();
|
||||
var timePassed = now - this.lastTime;
|
||||
this.lastTime = now;
|
||||
var movement = (timePassed / this.options.duration) * (this.state < this.target ? 1 : -1);
|
||||
if (Math.abs(movement) >= Math.abs(this.state - this.target)) {
|
||||
this.state = this.target;
|
||||
} else {
|
||||
this.state += movement;
|
||||
}
|
||||
|
||||
try {
|
||||
this.propagate();
|
||||
} finally {
|
||||
this.options.onStep.call(this);
|
||||
if (this.target == this.state) {
|
||||
window.clearInterval(this.intervalId);
|
||||
this.intervalId = null;
|
||||
this.options.onComplete.call(this);
|
||||
}
|
||||
}
|
||||
},
|
||||
// shortcuts
|
||||
play: function() {this.seekFromTo(0, 1)},
|
||||
reverse: function() {this.seekFromTo(1, 0)},
|
||||
// return a string describing this Animator, for debugging
|
||||
inspect: function() {
|
||||
var str = "#<Animator:\n";
|
||||
for (var i=0; i<this.subjects.length; i++) {
|
||||
str += this.subjects[i].inspect();
|
||||
}
|
||||
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 [];
|
||||
if (!o.length) return [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('-');
|
||||
if (oStringList.length == 1) return oStringList[0];
|
||||
|
||||
var camelizedString = string.indexOf('-') == 0
|
||||
? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1)
|
||||
: oStringList[0];
|
||||
|
||||
for (var i = 1, len = oStringList.length; i < len; i++) {
|
||||
var s = oStringList[i];
|
||||
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) {
|
||||
return function(state) {
|
||||
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) {
|
||||
if (sustainLevel == null) sustainLevel = 0.5;
|
||||
return function(state) {
|
||||
if (state < attackEnd) {
|
||||
return state / attackEnd;
|
||||
}
|
||||
if (state < decayEnd) {
|
||||
return 1 - ((state - attackEnd) / (decayEnd - attackEnd) * (1 - sustainLevel));
|
||||
}
|
||||
if (state < sustainEnd) {
|
||||
return 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) {
|
||||
var fn = Animator.makeElastic(bounces);
|
||||
return function(state) {
|
||||
state = fn(state);
|
||||
return state <= 1 ? state : 2-state;
|
||||
}
|
||||
};
|
||||
|
||||
// pre-made transition functions to use with the 'transition' option
|
||||
Animator.tx = {
|
||||
easeInOut: function(pos){
|
||||
return ((-Math.cos(pos*Math.PI)/2) + 0.5);
|
||||
},
|
||||
linear: function(x) {
|
||||
return x;
|
||||
},
|
||||
easeIn: Animator.makeEaseIn(1.5),
|
||||
easeOut: Animator.makeEaseOut(1.5),
|
||||
strongEaseIn: Animator.makeEaseIn(2.5),
|
||||
strongEaseOut: Animator.makeEaseOut(2.5),
|
||||
elastic: Animator.makeElastic(1),
|
||||
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) {
|
||||
this.els = Animator.makeArray(els);
|
||||
if (property == 'opacity' && window.ActiveXObject) {
|
||||
this.property = 'filter';
|
||||
} else {
|
||||
this.property = Animator.camelize(property);
|
||||
}
|
||||
this.from = parseFloat(from);
|
||||
this.to = parseFloat(to);
|
||||
this.units = units != null ? units : 'px';
|
||||
}
|
||||
NumericalStyleSubject.prototype = {
|
||||
setState: function(state) {
|
||||
var style = this.getStyle(state);
|
||||
var visibility = (this.property == 'opacity' && state == 0) ? 'hidden' : '';
|
||||
var j=0;
|
||||
for (var i=0; i<this.els.length; i++) {
|
||||
try {
|
||||
this.els[i].style[this.property] = style;
|
||||
} catch (e) {
|
||||
// ignore fontWeight - intermediate numerical values cause exeptions in firefox
|
||||
if (this.property != 'fontWeight') throw e;
|
||||
}
|
||||
if (j++ > 20) return;
|
||||
}
|
||||
},
|
||||
getStyle: function(state) {
|
||||
state = this.from + ((this.to - this.from) * state);
|
||||
if (this.property == 'filter') return "alpha(opacity=" + Math.round(state*100) + ")";
|
||||
if (this.property == 'opacity') return state;
|
||||
return Math.round(state) + this.units;
|
||||
},
|
||||
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) {
|
||||
this.els = Animator.makeArray(els);
|
||||
this.property = Animator.camelize(property);
|
||||
this.to = this.expandColor(to);
|
||||
this.from = this.expandColor(from);
|
||||
this.origFrom = from;
|
||||
this.origTo = to;
|
||||
}
|
||||
|
||||
ColorStyleSubject.prototype = {
|
||||
// parse "#FFFF00" to [256, 256, 0]
|
||||
expandColor: function(color) {
|
||||
var hexColor, red, green, blue;
|
||||
hexColor = ColorStyleSubject.parseColor(color);
|
||||
if (hexColor) {
|
||||
red = parseInt(hexColor.slice(1, 3), 16);
|
||||
green = parseInt(hexColor.slice(3, 5), 16);
|
||||
blue = parseInt(hexColor.slice(5, 7), 16);
|
||||
return [red,green,blue]
|
||||
}
|
||||
if (window.DEBUG) {
|
||||
alert("Invalid colour: '" + color + "'");
|
||||
}
|
||||
},
|
||||
getValueForState: function(color, state) {
|
||||
return Math.round(this.from[color] + ((this.to[color] - this.from[color]) * state));
|
||||
},
|
||||
setState: function(state) {
|
||||
var color = '#'
|
||||
+ ColorStyleSubject.toColorPart(this.getValueForState(0, state))
|
||||
+ ColorStyleSubject.toColorPart(this.getValueForState(1, state))
|
||||
+ ColorStyleSubject.toColorPart(this.getValueForState(2, state));
|
||||
for (var i=0; i<this.els.length; i++) {
|
||||
this.els[i].style[this.property] = color;
|
||||
}
|
||||
},
|
||||
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) {
|
||||
var color = '#', match;
|
||||
if(match = ColorStyleSubject.parseColor.rgbRe.exec(string)) {
|
||||
var part;
|
||||
for (var i=1; i<=3; i++) {
|
||||
part = Math.max(0, Math.min(255, parseInt(match[i])));
|
||||
color += ColorStyleSubject.toColorPart(part);
|
||||
}
|
||||
return color;
|
||||
}
|
||||
if (match = ColorStyleSubject.parseColor.hexRe.exec(string)) {
|
||||
if(match[1].length == 3) {
|
||||
for (var i=0; i<3; i++) {
|
||||
color += match[1].charAt(i) + match[1].charAt(i);
|
||||
}
|
||||
return color;
|
||||
}
|
||||
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})$/;
|
||||
|
||||
// Animates discrete styles, i.e. ones that do not scale but have discrete values
|
||||
// that can't be interpolated
|
||||
function DiscreteStyleSubject(els, property, from, to, threshold) {
|
||||
this.els = Animator.makeArray(els);
|
||||
this.property = Animator.camelize(property);
|
||||
this.from = from;
|
||||
this.to = to;
|
||||
this.threshold = threshold || 0.5;
|
||||
}
|
||||
|
||||
DiscreteStyleSubject.prototype = {
|
||||
setState: function(state) {
|
||||
var j=0;
|
||||
for (var i=0; i<this.els.length; i++) {
|
||||
this.els[i].style[this.property] = state <= this.threshold ? this.from : this.to;
|
||||
}
|
||||
},
|
||||
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
|
||||
// is present, animate between the element's current style and style1
|
||||
function CSSStyleSubject(els, style1, style2) {
|
||||
els = Animator.makeArray(els);
|
||||
this.subjects = [];
|
||||
if (els.length == 0) return;
|
||||
var prop, toStyle, fromStyle;
|
||||
if (style2) {
|
||||
fromStyle = this.parseStyle(style1, els[0]);
|
||||
toStyle = this.parseStyle(style2, els[0]);
|
||||
} else {
|
||||
toStyle = this.parseStyle(style1, els[0]);
|
||||
fromStyle = {};
|
||||
for (prop in toStyle) {
|
||||
fromStyle[prop] = CSSStyleSubject.getStyle(els[0], prop);
|
||||
}
|
||||
}
|
||||
// remove unchanging properties
|
||||
var prop;
|
||||
for (prop in fromStyle) {
|
||||
if (fromStyle[prop] == toStyle[prop]) {
|
||||
delete fromStyle[prop];
|
||||
delete toStyle[prop];
|
||||
}
|
||||
}
|
||||
// discover the type (numerical or colour) of each style
|
||||
var prop, units, match, type, from, to;
|
||||
for (prop in fromStyle) {
|
||||
var fromProp = String(fromStyle[prop]);
|
||||
var toProp = String(toStyle[prop]);
|
||||
if (toStyle[prop] == null) {
|
||||
if (window.DEBUG) alert("No to style provided for '" + prop + '"');
|
||||
continue;
|
||||
}
|
||||
|
||||
if (from = ColorStyleSubject.parseColor(fromProp)) {
|
||||
to = ColorStyleSubject.parseColor(toProp);
|
||||
type = ColorStyleSubject;
|
||||
} else if (fromProp.match(CSSStyleSubject.numericalRe)
|
||||
&& toProp.match(CSSStyleSubject.numericalRe)) {
|
||||
from = parseFloat(fromProp);
|
||||
to = parseFloat(toProp);
|
||||
type = NumericalStyleSubject;
|
||||
match = CSSStyleSubject.numericalRe.exec(fromProp);
|
||||
var reResult = CSSStyleSubject.numericalRe.exec(toProp);
|
||||
if (match[1] != null) {
|
||||
units = match[1];
|
||||
} else if (reResult[1] != null) {
|
||||
units = reResult[1];
|
||||
} else {
|
||||
units = reResult;
|
||||
}
|
||||
} else if (fromProp.match(CSSStyleSubject.discreteRe)
|
||||
&& toProp.match(CSSStyleSubject.discreteRe)) {
|
||||
from = fromProp;
|
||||
to = toProp;
|
||||
type = DiscreteStyleSubject;
|
||||
units = 0; // hack - how to get an animator option down to here
|
||||
} else {
|
||||
if (window.DEBUG) {
|
||||
alert("Unrecognised format for value of "
|
||||
+ prop + ": '" + fromStyle[prop] + "'");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
this.subjects[this.subjects.length] = new type(els, prop, from, to, units);
|
||||
}
|
||||
}
|
||||
|
||||
CSSStyleSubject.prototype = {
|
||||
// parses "width: 400px; color: #FFBB2E" to {width: "400px", color: "#FFBB2E"}
|
||||
parseStyle: function(style, el) {
|
||||
var rtn = {};
|
||||
// if style is a rule set
|
||||
if (style.indexOf(":") != -1) {
|
||||
var styles = style.split(";");
|
||||
for (var i=0; i<styles.length; i++) {
|
||||
var parts = CSSStyleSubject.ruleRe.exec(styles[i]);
|
||||
if (parts) {
|
||||
rtn[parts[1]] = parts[2];
|
||||
}
|
||||
}
|
||||
}
|
||||
// else assume style is a class name
|
||||
else {
|
||||
var prop, value, oldClass;
|
||||
oldClass = el.className;
|
||||
el.className = style;
|
||||
for (var i=0; i<CSSStyleSubject.cssProperties.length; i++) {
|
||||
prop = CSSStyleSubject.cssProperties[i];
|
||||
value = CSSStyleSubject.getStyle(el, prop);
|
||||
if (value != null) {
|
||||
rtn[prop] = value;
|
||||
}
|
||||
}
|
||||
el.className = oldClass;
|
||||
}
|
||||
return rtn;
|
||||
|
||||
},
|
||||
setState: function(state) {
|
||||
for (var i=0; i<this.subjects.length; i++) {
|
||||
this.subjects[i].setState(state);
|
||||
}
|
||||
},
|
||||
inspect: function() {
|
||||
var str = "";
|
||||
for (var i=0; i<this.subjects.length; i++) {
|
||||
str += this.subjects[i].inspect();
|
||||
}
|
||||
return str;
|
||||
}
|
||||
};
|
||||
// get the current value of a css property,
|
||||
CSSStyleSubject.getStyle = function(el, property){
|
||||
var style;
|
||||
if(document.defaultView && document.defaultView.getComputedStyle){
|
||||
style = document.defaultView.getComputedStyle(el, "").getPropertyValue(property);
|
||||
if (style) {
|
||||
return style;
|
||||
}
|
||||
}
|
||||
property = Animator.camelize(property);
|
||||
if(el.currentStyle){
|
||||
style = el.currentStyle[property];
|
||||
}
|
||||
return style || el.style[property]
|
||||
};
|
||||
|
||||
|
||||
CSSStyleSubject.ruleRe = /^\s*([a-zA-Z\-]+)\s*:\s*(\S(.+\S)?)\s*$/;
|
||||
CSSStyleSubject.numericalRe = /^-?\d+(?:\.\d+)?(%|[a-zA-Z]{2})?$/;
|
||||
CSSStyleSubject.discreteRe = /^\w+$/;
|
||||
|
||||
// required because the style object of elements isn't enumerable in Safari
|
||||
/*
|
||||
CSSStyleSubject.cssProperties = ['background-color','border','border-color','border-spacing',
|
||||
'border-style','border-top','border-right','border-bottom','border-left','border-top-color',
|
||||
'border-right-color','border-bottom-color','border-left-color','border-top-width','border-right-width',
|
||||
'border-bottom-width','border-left-width','border-width','bottom','color','font-size','font-size-adjust',
|
||||
'font-stretch','font-style','height','left','letter-spacing','line-height','margin','margin-top',
|
||||
'margin-right','margin-bottom','margin-left','marker-offset','max-height','max-width','min-height',
|
||||
'min-width','orphans','outline','outline-color','outline-style','outline-width','overflow','padding',
|
||||
'padding-top','padding-right','padding-bottom','padding-left','quotes','right','size','text-indent',
|
||||
'top','width','word-spacing','z-index','opacity','outline-offset'];*/
|
||||
|
||||
|
||||
CSSStyleSubject.cssProperties = ['azimuth','background','background-attachment','background-color','background-image','background-position','background-repeat','border-collapse','border-color','border-spacing','border-style','border-top','border-top-color','border-right-color','border-bottom-color','border-left-color','border-top-style','border-right-style','border-bottom-style','border-left-style','border-top-width','border-right-width','border-bottom-width','border-left-width','border-width','bottom','clear','clip','color','content','cursor','direction','display','elevation','empty-cells','css-float','font','font-family','font-size','font-size-adjust','font-stretch','font-style','font-variant','font-weight','height','left','letter-spacing','line-height','list-style','list-style-image','list-style-position','list-style-type','margin','margin-top','margin-right','margin-bottom','margin-left','max-height','max-width','min-height','min-width','orphans','outline','outline-color','outline-style','outline-width','overflow','padding','padding-top','padding-right','padding-bottom','padding-left','pause','position','right','size','table-layout','text-align','text-decoration','text-indent','text-shadow','text-transform','top','vertical-align','visibility','white-space','width','word-spacing','z-index','opacity','outline-offset','overflow-x','overflow-y'];
|
||||
|
||||
|
||||
// chains several Animator objects together
|
||||
function AnimatorChain(animators, options) {
|
||||
this.animators = animators;
|
||||
this.setOptions(options);
|
||||
for (var i=0; i<this.animators.length; i++) {
|
||||
this.listenTo(this.animators[i]);
|
||||
}
|
||||
this.forwards = false;
|
||||
this.current = 0;
|
||||
}
|
||||
|
||||
AnimatorChain.prototype = {
|
||||
// apply defaults
|
||||
setOptions: function(options) {
|
||||
this.options = Animator.applyDefaults({
|
||||
// by default, each call to AnimatorChain.play() calls jumpTo(0) of each animator
|
||||
// before playing, which can cause flickering if you have multiple animators all
|
||||
// targeting the same element. Set this to false to avoid this.
|
||||
resetOnPlay: true
|
||||
}, options);
|
||||
},
|
||||
// play each animator in turn
|
||||
play: function() {
|
||||
this.forwards = true;
|
||||
this.current = -1;
|
||||
if (this.options.resetOnPlay) {
|
||||
for (var i=0; i<this.animators.length; i++) {
|
||||
this.animators[i].jumpTo(0);
|
||||
}
|
||||
}
|
||||
this.advance();
|
||||
},
|
||||
// play all animators backwards
|
||||
reverse: function() {
|
||||
this.forwards = false;
|
||||
this.current = this.animators.length;
|
||||
if (this.options.resetOnPlay) {
|
||||
for (var i=0; i<this.animators.length; i++) {
|
||||
this.animators[i].jumpTo(1);
|
||||
}
|
||||
}
|
||||
this.advance();
|
||||
},
|
||||
// if we have just play()'d, then call reverse(), and vice versa
|
||||
toggle: function() {
|
||||
if (this.forwards) {
|
||||
this.seekTo(0);
|
||||
} else {
|
||||
this.seekTo(1);
|
||||
}
|
||||
},
|
||||
// internal: install an event listener on an animator's onComplete option
|
||||
// to trigger the next animator
|
||||
listenTo: function(animator) {
|
||||
var oldOnComplete = animator.options.onComplete;
|
||||
var _this = this;
|
||||
animator.options.onComplete = function() {
|
||||
if (oldOnComplete) oldOnComplete.call(animator);
|
||||
_this.advance();
|
||||
}
|
||||
},
|
||||
// play the next animator
|
||||
advance: function() {
|
||||
if (this.forwards) {
|
||||
if (this.animators[this.current + 1] == null) return;
|
||||
this.current++;
|
||||
this.animators[this.current].play();
|
||||
} else {
|
||||
if (this.animators[this.current - 1] == null) return;
|
||||
this.current--;
|
||||
this.animators[this.current].reverse();
|
||||
}
|
||||
},
|
||||
// this function is provided for drop-in compatibility with Animator objects,
|
||||
// but only accepts 0 and 1 as target values
|
||||
seekTo: function(target) {
|
||||
if (target <= 0) {
|
||||
this.forwards = false;
|
||||
this.animators[this.current].seekTo(0);
|
||||
} else {
|
||||
this.forwards = true;
|
||||
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
|
||||
// clicked, the Animator and all before it seek to 0, and all Animators after it seek to 1. This can be used to
|
||||
// create the classic Accordion effect, hence the name.
|
||||
// see setOptions for arguments
|
||||
function Accordion(options) {
|
||||
this.setOptions(options);
|
||||
var selected = this.options.initialSection, current;
|
||||
if (this.options.rememberance) {
|
||||
current = document.location.hash.substring(1);
|
||||
}
|
||||
this.rememberanceTexts = [];
|
||||
this.ans = [];
|
||||
var _this = this;
|
||||
for (var i=0; i<this.options.sections.length; i++) {
|
||||
var el = this.options.sections[i];
|
||||
var an = new Animator(this.options.animatorOptions);
|
||||
var from = this.options.from + (this.options.shift * i);
|
||||
var to = this.options.to + (this.options.shift * i);
|
||||
an.addSubject(new NumericalStyleSubject(el, this.options.property, from, to, this.options.units));
|
||||
an.jumpTo(0);
|
||||
var activator = this.options.getActivator(el);
|
||||
activator.index = i;
|
||||
activator.onclick = function(){_this.show(this.index)};
|
||||
this.ans[this.ans.length] = an;
|
||||
this.rememberanceTexts[i] = activator.innerHTML.replace(/\s/g, "");
|
||||
if (this.rememberanceTexts[i] === current) {
|
||||
selected = i;
|
||||
}
|
||||
}
|
||||
this.show(selected);
|
||||
}
|
||||
|
||||
Accordion.prototype = {
|
||||
// apply defaults
|
||||
setOptions: function(options) {
|
||||
this.options = Object.extend({
|
||||
// REQUIRED: an array of elements to use as the accordion sections
|
||||
sections: null,
|
||||
// a function that locates an activator button element given a section element.
|
||||
// by default it takes a button id from the section's "activator" attibute
|
||||
getActivator: function(el) {return document.getElementById(el.getAttribute("activator"))},
|
||||
// shifts each animator's range, for example with options {from:0,to:100,shift:20}
|
||||
// the animators' ranges will be 0-100, 20-120, 40-140 etc.
|
||||
shift: 0,
|
||||
// the first page to show
|
||||
initialSection: 0,
|
||||
// if set to true, document.location.hash will be used to preserve the open section across page reloads
|
||||
rememberance: true,
|
||||
// constructor arguments to the Animator objects
|
||||
animatorOptions: {}
|
||||
}, options || {});
|
||||
},
|
||||
show: function(section) {
|
||||
for (var i=0; i<this.ans.length; i++) {
|
||||
this.ans[i].seekTo(i > section ? 1 : 0);
|
||||
}
|
||||
if (this.options.rememberance) {
|
||||
document.location.hash = this.rememberanceTexts[section];
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -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">
|
||||
<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 type="text/javascript">
|
||||
var map;
|
||||
var layer;
|
||||
|
||||
function init(){
|
||||
var mapOptions = {
|
||||
maxExtent: new OpenLayers.Bounds(-174,18.4,-63.5,71),
|
||||
maxResolution: 0.25,
|
||||
projection: "EPSG:4326"};
|
||||
map = new OpenLayers.Map( 'map', mapOptions );
|
||||
layer = new OpenLayers.Layer.ArcGIS93Rest( "ArcGIS Server Layer",
|
||||
"http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/export",
|
||||
{layers: "show:0,2"});
|
||||
map.addLayer(layer);
|
||||
|
||||
map.addControl( new OpenLayers.Control.MousePosition() );
|
||||
|
||||
map.setCenter(new OpenLayers.LonLat(-115, 45), 0);
|
||||
}
|
||||
|
||||
function enableFilter() {
|
||||
layer.setLayerFilter(2, "STATE_NAME LIKE '%" + document.getElementById('filterValueField').value + "%'");
|
||||
layer.redraw();
|
||||
}
|
||||
function disableFilter() {
|
||||
layer.setLayerFilter(2, null);
|
||||
layer.redraw();
|
||||
}
|
||||
function updateButton() {
|
||||
document.getElementById('filterButton').value = "Show '" +
|
||||
document.getElementById('filterValueField').value + "' States";
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">ArcGIS Server 9.3 Rest API Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
ESRI, ArcGIS, REST, filter
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Shows the basic use of openlayers using an ArcGIS Server 9.3 Rest API layer
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
This is an example of how to add an ArcGIS Server 9.3 Rest API layer to the OpenLayers window.
|
||||
</div>
|
||||
<input id="filterValueField" type="textfield" value="A"/>
|
||||
<input id="filterButton" type="button" onclick="enableFilter();" value="Filter States"/>
|
||||
<input type="button" onclick="disableFilter();" value="Show All States"/>
|
||||
<br>
|
||||
(Filter is case sensitive.)
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,221 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>OpenLayers ArcGIS Cache Example (MapServer Access)</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">
|
||||
<script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhR_wWLPFku8Ix9i2SXYRVK3e45q1BQUd_beF8dtzKET_EteAjPdGDwqpQ'></script>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="../lib/OpenLayers/Layer/ArcGISCache.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
var map,
|
||||
cacheLayer,
|
||||
testLayer,
|
||||
//This layer requires meta data about the ArcGIS service. Typically you should use a
|
||||
//JSONP call to get this dynamically. For this example, we are just going to hard-code
|
||||
//an example that we got from here (yes, it's very big):
|
||||
// http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer?f=json&pretty=true
|
||||
layerInfo = {
|
||||
"currentVersion" : 10.01,
|
||||
"serviceDescription" : "This worldwide street map presents highway-level data for the world and street-level data for the United States, Canada, Japan, Southern Africa, and a number of countries in Europe and elsewhere. This comprehensive street map includes highways, major roads, minor roads, railways, water features, administrative boundaries, cities, parks, and landmarks, overlaid on shaded relief imagery for added context. The street map was developed by ESRI using ESRI basemap data, AND road data, USGS elevation data, and UNEP-WCMC parks and protected areas for the world, and Tele Atlas Dynamap<61> and Multinet<65> street data for North America and Europe. Coverage for street-level data in Europe includes Andorra, Austria, Belgium, Czech Republic, Denmark, France, Germany, Great Britain, Greece, Hungary, Ireland, Italy, Luxembourg, Netherlands, Northern Ireland (Belfast only), Norway, Poland, Portugal, San Marino, Slovakia, Spain, Sweden, and Switzerland. Coverage for street-level data elsewhere in the world includes China (Hong Kong only), Colombia, Egypt (Cairo only), Indonesia (Jakarta only), Japan, Mexico (Mexico City only), Russia (Moscow and St. Petersburg only), South Africa, Thailand, and Turkey (Istanbul and Ankara only). For more information on this map, visit us \u003ca href=\"http://goto.arcgisonline.com/maps/World_Street_Map \" target=\"_new\"\u003eonline\u003c/a\u003e.",
|
||||
"mapName" : "Layers",
|
||||
"description" : "This worldwide street map presents highway-level data for the world and street-level data for the United States, Canada, Japan, Southern Africa, most countries in Europe, and several other countries. This comprehensive street map includes highways, major roads, minor roads, one-way arrow indicators, railways, water features, administrative boundaries, cities, parks, and landmarks, overlaid on shaded relief imagery for added context. The map also includes building footprints for selected areas in the United States and Europe and parcel boundaries for much of the lower 48 states.\n\nThe street map was developed by ESRI using ESRI basemap data, DeLorme base map layers, AND road data, USGS elevation data, UNEP-WCMC parks and protected areas for the world, Tele Atlas Dynamap<61> and Multinet<65> street data for North America and Europe, and First American parcel data for the United States. Coverage for street-level data in Europe includes Andorra, Austria, Belgium, Czech Republic, Denmark, France, Germany, Great Britain, Greece, Hungary, Ireland, Italy, Luxembourg, Netherlands, Norway, Poland, Portugal, San Marino, Slovakia, Spain, Sweden, and Switzerland. Coverage for street-level data elsewhere in the world includes China (Hong Kong only), Colombia, Egypt (Cairo only), Indonesia (Jakarta only), Japan, Mexico, Russia, South Africa, Thailand, and Turkey (Istanbul and Ankara only). For more information on this map, visit us online at http://goto.arcgisonline.com/maps/World_Street_Map\n",
|
||||
"copyrightText" : "Sources: ESRI, DeLorme, AND, Tele Atlas, First American, ESRI Japan, UNEP-WCMC, USGS, METI, ESRI Hong Kong, ESRI Thailand, Procalculo Prosis",
|
||||
"layers" : [
|
||||
{
|
||||
"id" : 0,
|
||||
"name" : "World Street Map",
|
||||
"parentLayerId" : -1,
|
||||
"defaultVisibility" : true,
|
||||
"subLayerIds" : null,
|
||||
"minScale" : 0,
|
||||
"maxScale" : 0
|
||||
}
|
||||
],
|
||||
"tables" : [
|
||||
|
||||
],
|
||||
"spatialReference" : {
|
||||
"wkid" : 102100
|
||||
},
|
||||
"singleFusedMapCache" : true,
|
||||
"tileInfo" : {
|
||||
"rows" : 256,
|
||||
"cols" : 256,
|
||||
"dpi" : 96,
|
||||
"format" : "JPEG",
|
||||
"compressionQuality" : 90,
|
||||
"origin" : {
|
||||
"x" : -20037508.342787,
|
||||
"y" : 20037508.342787
|
||||
},
|
||||
"spatialReference" : {
|
||||
"wkid" : 102100
|
||||
},
|
||||
"lods" : [
|
||||
{"level" : 0, "resolution" : 156543.033928, "scale" : 591657527.591555},
|
||||
{"level" : 1, "resolution" : 78271.5169639999, "scale" : 295828763.795777},
|
||||
{"level" : 2, "resolution" : 39135.7584820001, "scale" : 147914381.897889},
|
||||
{"level" : 3, "resolution" : 19567.8792409999, "scale" : 73957190.948944},
|
||||
{"level" : 4, "resolution" : 9783.93962049996, "scale" : 36978595.474472},
|
||||
{"level" : 5, "resolution" : 4891.96981024998, "scale" : 18489297.737236},
|
||||
{"level" : 6, "resolution" : 2445.98490512499, "scale" : 9244648.868618},
|
||||
{"level" : 7, "resolution" : 1222.99245256249, "scale" : 4622324.434309},
|
||||
{"level" : 8, "resolution" : 611.49622628138, "scale" : 2311162.217155},
|
||||
{"level" : 9, "resolution" : 305.748113140558, "scale" : 1155581.108577},
|
||||
{"level" : 10, "resolution" : 152.874056570411, "scale" : 577790.554289},
|
||||
{"level" : 11, "resolution" : 76.4370282850732, "scale" : 288895.277144},
|
||||
{"level" : 12, "resolution" : 38.2185141425366, "scale" : 144447.638572},
|
||||
{"level" : 13, "resolution" : 19.1092570712683, "scale" : 72223.819286},
|
||||
{"level" : 14, "resolution" : 9.55462853563415, "scale" : 36111.909643},
|
||||
{"level" : 15, "resolution" : 4.77731426794937, "scale" : 18055.954822},
|
||||
{"level" : 16, "resolution" : 2.38865713397468, "scale" : 9027.977411},
|
||||
{"level" : 17, "resolution" : 1.19432856685505, "scale" : 4513.988705}
|
||||
]
|
||||
},
|
||||
"initialExtent" : {
|
||||
"xmin" : -20037507.0671618,
|
||||
"ymin" : -20037507.0671618,
|
||||
"xmax" : 20037507.0671618,
|
||||
"ymax" : 20037507.0671619,
|
||||
"spatialReference" : {
|
||||
"wkid" : 102100
|
||||
}
|
||||
},
|
||||
"fullExtent" : {
|
||||
"xmin" : -20037507.0671618,
|
||||
"ymin" : -19971868.8804086,
|
||||
"xmax" : 20037507.0671618,
|
||||
"ymax" : 19971868.8804086,
|
||||
"spatialReference" : {
|
||||
"wkid" : 102100
|
||||
}
|
||||
},
|
||||
"units" : "esriMeters",
|
||||
"supportedImageFormatTypes" : "PNG24,PNG,JPG,DIB,TIFF,EMF,PS,PDF,GIF,SVG,SVGZ,AI,BMP",
|
||||
"documentInfo" : {
|
||||
"Title" : "World Street Map",
|
||||
"Author" : "ESRI",
|
||||
"Comments" : "",
|
||||
"Subject" : "streets, highways, major roads, railways, water features, administrative boundaries, cities, parks, protected areas, landmarks ",
|
||||
"Category" : "transportation(Transportation Networks) ",
|
||||
"Keywords" : "World, Global, 2009, Japan, UNEP-WCMC",
|
||||
"Credits" : ""
|
||||
},
|
||||
"capabilities" : "Map"
|
||||
};
|
||||
|
||||
function init(){
|
||||
//The max extent for spherical mercator
|
||||
var maxExtent = new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34);
|
||||
|
||||
//Max extent from layerInfo above
|
||||
var layerMaxExtent = new OpenLayers.Bounds(
|
||||
layerInfo.fullExtent.xmin,
|
||||
layerInfo.fullExtent.ymin,
|
||||
layerInfo.fullExtent.xmax,
|
||||
layerInfo.fullExtent.ymax
|
||||
);
|
||||
|
||||
var resolutions = [];
|
||||
for (var i=0; i<layerInfo.tileInfo.lods.length; i++) {
|
||||
resolutions.push(layerInfo.tileInfo.lods[i].resolution);
|
||||
}
|
||||
|
||||
map = new OpenLayers.Map('map', {
|
||||
maxExtent: maxExtent,
|
||||
StartBounds: layerMaxExtent,
|
||||
units: (layerInfo.units == "esriFeet") ? 'ft' : 'm',
|
||||
resolutions: resolutions,
|
||||
tileSize: new OpenLayers.Size(layerInfo.tileInfo.width, layerInfo.tileInfo.height),
|
||||
projection: 'EPSG:' + layerInfo.spatialReference.wkid
|
||||
});
|
||||
|
||||
|
||||
|
||||
cacheLayer = new OpenLayers.Layer.ArcGISCache( "AGSCache",
|
||||
"http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer", {
|
||||
isBaseLayer: true,
|
||||
|
||||
//From layerInfo above
|
||||
resolutions: resolutions,
|
||||
tileSize: new OpenLayers.Size(layerInfo.tileInfo.cols, layerInfo.tileInfo.rows),
|
||||
tileOrigin: new OpenLayers.LonLat(layerInfo.tileInfo.origin.x , layerInfo.tileInfo.origin.y),
|
||||
maxExtent: layerMaxExtent,
|
||||
projection: 'EPSG:' + layerInfo.spatialReference.wkid
|
||||
});
|
||||
|
||||
|
||||
// create Google Mercator layers
|
||||
testLayer = new OpenLayers.Layer.Google(
|
||||
"Google Streets",
|
||||
{'sphericalMercator': true}
|
||||
);
|
||||
|
||||
map.addLayers([testLayer, cacheLayer]);
|
||||
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.addControl( new OpenLayers.Control.MousePosition() );
|
||||
|
||||
map.zoomToExtent(new OpenLayers.Bounds(-8341644, 4711236, -8339198, 4712459));
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">OpenLayers ArcGIS Cache Example (MapServer Access)</h1>
|
||||
|
||||
<div id="tags">
|
||||
arcgis, arcgiscache, cache, tms
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrates the basic initialization of the ArcGIS Cache layer using a prebuilt configuration, and standard tile access.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p>This example demonstrates using the ArcGISCache layer for
|
||||
accessing ESRI's ArcGIS Server (AGS) Map Cache tiles through
|
||||
an AGS MapServer. Toggle the visibility of the AGS layer to
|
||||
demonstrate how the two maps are lined up correctly.</p>
|
||||
|
||||
<h2>Notes on this layer</h2>
|
||||
<p>A few attempts have been made at this kind of layer before. See
|
||||
<a href="http://trac.osgeo.org/openlayers/ticket/1967">here</a> and
|
||||
<a href="http://trac.osgeo.org/openlayers/browser/sandbox/tschaub/arcgiscache/lib/OpenLayers/Layer/ArcGISCache.js">here</a>.
|
||||
A problem the users encounter is that the tiles seem to "jump around".
|
||||
This is due to the fact that the max extent for the cached layer actually
|
||||
changes at each zoom level due to the way these caches are constructed.
|
||||
We have attempted to use the resolutions, tile size, and tile origin
|
||||
from the cache meta data to make the appropriate changes to the max extent
|
||||
of the tile to compensate for this behavior.</p>
|
||||
You will need to know:
|
||||
<ul>
|
||||
<li>Max Extent: The max extent of the layer</li>
|
||||
<li>Resolutions: An array of resolutions, one for each zoom level</li>
|
||||
<li>Tile Origin: The location of the tile origin for the cache in the upper left.</li>
|
||||
<li>Tile Size: The size of each tile in the cache. Commonly 256 x 256</li>
|
||||
</ul>
|
||||
<p>It's important that you set the correct values in your layer, and these
|
||||
values will differ from layer to layer. You can find these values for your
|
||||
layer in a metadata page in ArcGIS Server.
|
||||
(ie. <a href="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer">http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer</a>)</p>
|
||||
<ul>
|
||||
<li>Max Extent: Full Extent</li>
|
||||
<li>Resolutions: Tile Info -> Levels of Detail -> Resolution</li>
|
||||
<li>Tile Origin: Origin -> X,Y</li>
|
||||
<li>Tile Size: Tile Info -> Height,Width</li>
|
||||
</ul>
|
||||
|
||||
<h2> Other Examples </h2>
|
||||
<p>This is one of three examples for this layer. You can also configure this
|
||||
layer to use <a href="arcgiscache_direct.html">prebuilt tiles in a file store
|
||||
(not a live server).</a> It is also possible to let this
|
||||
<a href="arcgiscache_jsonp.html">layer 'auto-configure' itself using the
|
||||
capabilities json object from the server itself when using a live ArcGIS server.</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,108 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>ArcGIS Server Map Cache Example (Direct Access)</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">
|
||||
<script src="../lib/OpenLayers.js" type="text/javascript"></script>
|
||||
<script src="../lib/OpenLayers/Layer/ArcGISCache.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
/* First 4 variables extracted from conf.xml file */
|
||||
|
||||
/* Tile layers & map MUST have same projection */
|
||||
var proj='EPSG:26915';
|
||||
|
||||
|
||||
/* Layer can also accept serverResolutions array
|
||||
* to deal with situation in which layer resolution array & map resolution
|
||||
* array are out of sync*/
|
||||
var mapResolutions = [33.0729828126323,16.9333672000677,8.46668360003387,4.23334180001693,2.11667090000847,1.05833545000423];
|
||||
|
||||
/* For this example this next line is not really needed, 256x256 is default.
|
||||
* However, you would need to change this if your layer had different tile sizes */
|
||||
var tileSize = new OpenLayers.Size(256,256);
|
||||
|
||||
/* Tile Origin is required unless it is the same as the implicit map origin
|
||||
* which can be affected by several variables including maxExtent for map or base layer */
|
||||
var agsTileOrigin = new OpenLayers.LonLat(-5120900,9998100);
|
||||
|
||||
/* This can really be any valid bounds that the map would reasonably be within */
|
||||
/* var mapExtent = new OpenLayers.Bounds(293449.454286,4307691.661132,314827.830376,4323381.484178); */
|
||||
var mapExtent = new OpenLayers.Bounds(289310.8204,4300021.937,314710.8712,4325421.988);
|
||||
|
||||
var aerialsUrl = 'http://serverx.esri.com/arcgiscache/dgaerials/Layers/_alllayers';
|
||||
var roadsUrl = 'http://serverx.esri.com/arcgiscache/DG_County_roads_yesA_backgroundDark/Layers/_alllayers';
|
||||
|
||||
var map;
|
||||
function init(){
|
||||
map = new OpenLayers.Map('map', {
|
||||
maxExtent:mapExtent,
|
||||
controls: [
|
||||
new OpenLayers.Control.Navigation(),
|
||||
new OpenLayers.Control.LayerSwitcher(),
|
||||
new OpenLayers.Control.PanZoomBar(),
|
||||
new OpenLayers.Control.MousePosition()]
|
||||
});
|
||||
|
||||
var baseLayer = new OpenLayers.Layer.ArcGISCache('Aerials', aerialsUrl, {
|
||||
tileOrigin: agsTileOrigin,
|
||||
resolutions: mapResolutions,
|
||||
sphericalMercator: true,
|
||||
maxExtent: mapExtent,
|
||||
useArcGISServer: false,
|
||||
isBaseLayer: true,
|
||||
type: 'jpg',
|
||||
projection: proj
|
||||
});
|
||||
var overlayLayer = new OpenLayers.Layer.ArcGISCache('Roads', roadsUrl, {
|
||||
tileOrigin: agsTileOrigin,
|
||||
resolutions: mapResolutions,
|
||||
sphericalMercator: true,
|
||||
maxExtent: mapExtent,
|
||||
useArcGISServer: false,
|
||||
isBaseLayer: false,
|
||||
projection: proj
|
||||
});
|
||||
map.addLayers([baseLayer, overlayLayer]);
|
||||
|
||||
//map.zoomToExtent(new OpenLayers.Bounds(295892.34, 4308521.69, 312825.71, 4316988.37));
|
||||
map.zoomToExtent(new OpenLayers.Bounds(-8341644, 4711236, -8339198, 4712459));
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">ArcGIS Server Map Cache Example (Direct Access)</h1>
|
||||
|
||||
<div id="tags">
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrates the basic initialization of the ArcGIS Cache layer using a prebuilt configuration, and direct tile access from a file store.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p>This example demonstrates using the ArcGISCache layer for
|
||||
accessing ESRI's ArcGIS Server (AGS) Map Cache tiles directly
|
||||
via the folder structure and HTTP. Toggle the visibility of the AGS layer to
|
||||
demonstrate how the two maps are lined up correctly.</p>
|
||||
|
||||
<h2>Notes on this Layer</h2>
|
||||
<p>It's important that you set the correct values in your layer, and these
|
||||
values will differ between tile sets. You can find these values for your
|
||||
layer in conf.xml at the root of your cache.
|
||||
(ie. <a href="http://serverx.esri.com/arcgiscache/dgaerials/Layers/conf.xml">http://serverx.esri.com/arcgiscache/dgaerials/Layers/conf.xml</a>)</p>
|
||||
|
||||
<p>For fused map caches this is often http:<i>ServerName</i>/arcgiscache/<i>MapServiceName</i>/Layers <br>
|
||||
For individual layer caches this is often http:<i>ServerName</i>/arcgiscache/<i>LayerName</i>/Layers </p>
|
||||
|
||||
<h2> Other Examples </h2>
|
||||
<p>This is one of three examples for this layer. You can also configure this
|
||||
layer to use <a href="arcgiscache_ags.html">prebuilt tiles from a live server.</a> It is also
|
||||
possible to let this <a href="arcgiscache_jsonp.html">layer 'auto-configure' itself using the capabilities json object from the server itself when using a live ArcGIS server.</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,106 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>OpenLayers ArcGIS Cache Example (Autoconfigure with JSONP)</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">
|
||||
|
||||
<script src="../lib/OpenLayers.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);
|
||||
}
|
||||
|
||||
function initMap(layerInfo){
|
||||
/*
|
||||
* The initialize function in this layer has the ability to automatically configure
|
||||
* itself if given the JSON capabilities object from the ArcGIS map server.
|
||||
* This hugely simplifies setting up a new layer, and switching basemaps when using this technique.
|
||||
*
|
||||
* see the 'initialize' function in ArcGISCache.js, or
|
||||
* see the other two ArcGISCache.js examples for direct manual configuration options
|
||||
*
|
||||
*/
|
||||
var baseLayer = new OpenLayers.Layer.ArcGISCache("AGSCache", layerURL, {
|
||||
layerInfo: layerInfo
|
||||
});
|
||||
|
||||
/*
|
||||
* Make sure our baselayer and our map are synced up
|
||||
*/
|
||||
map = new OpenLayers.Map('map', {
|
||||
maxExtent: baseLayer.maxExtent,
|
||||
units: baseLayer.units,
|
||||
resolutions: baseLayer.resolutions,
|
||||
numZoomLevels: baseLayer.numZoomLevels,
|
||||
tileSize: baseLayer.tileSize,
|
||||
displayProjection: baseLayer.displayProjection
|
||||
});
|
||||
map.addLayers([baseLayer]);
|
||||
|
||||
|
||||
//overlay test layer
|
||||
//http://openlayers.org/dev/examples/web-mercator.html
|
||||
var wms = new OpenLayers.Layer.WMS("Highways",
|
||||
"http://sampleserver1.arcgisonline.com/arcgis/services/Specialty/ESRI_StateCityHighway_USA/MapServer/WMSServer",
|
||||
{layers: "2", format: "image/gif", transparent: "true"},
|
||||
{ isBaseLayer: false, wrapDateLine: false }
|
||||
);
|
||||
map.addLayers([wms]);
|
||||
|
||||
|
||||
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.addControl(new OpenLayers.Control.MousePosition() );
|
||||
//map.zoomToExtent(new OpenLayers.Bounds(-8341644, 4711236, -8339198, 4712459));
|
||||
map.zoomToExtent(new OpenLayers.Bounds(-8725663.6225564, 4683718.6735907, -8099491.4868444, 4996804.7414467));
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">OpenLayers ArcGIS Cache Example (Autoconfigure with JSONP)</h1>
|
||||
|
||||
<div id="tags">
|
||||
arcgis, arcgiscache, cache, tms, jsonp
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrates the basic initialization of the ArcGIS Cache layer by using the server capabilities object.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p>This example demonstrates using the ArcGISCache layer for
|
||||
accessing ESRI's ArcGIS Server (AGS) Map Cache tiles normally through
|
||||
a live AGS MapServer. Toggle the visibility of the overlay to
|
||||
demonstrate how the two layers are lined up correctly.</p>
|
||||
|
||||
<h2>Notes on this Layer</h2>
|
||||
<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,
|
||||
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
|
||||
server configuration using this technique before trying one of the other examples for this layer.
|
||||
</p>
|
||||
|
||||
<h2> Other Examples </h2>
|
||||
<p>This is one of three examples for this layer. You can also configure this
|
||||
layer to use <a href="arcgiscache_direct.html">prebuilt tiles in a file store (not a live server).</a>
|
||||
As well a retrieve <a href="arcgiscache_ags.html">tiles from a live server.</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,82 +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>ArcIMS Thematic 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 type="text/javascript">
|
||||
var lon = 0;
|
||||
var lat = 0;
|
||||
var zoom = 1;
|
||||
var map, layer;
|
||||
var query, renderer;
|
||||
|
||||
function init() {
|
||||
OpenLayers.ProxyHost = "proxy.cgi?url=";
|
||||
|
||||
map = new OpenLayers.Map('map');
|
||||
|
||||
query = {where: "FIPS_ID>100 AND FIPS_ID<200"};
|
||||
|
||||
renderer = {
|
||||
type: 'valuemap',
|
||||
lookupfield: 'FIPS_ID',
|
||||
ranges: [
|
||||
{ lower: 100, upper: 120, symbol: { type: 'simplepolygon', fillcolor: '255,0,0' } },
|
||||
{ lower: 120, upper: 140, symbol: { type: 'simplepolygon', fillcolor: '255,255,0' } },
|
||||
{ lower: 140, upper: 160, symbol: { type: 'simplepolygon', fillcolor: '0,255,0' } },
|
||||
{ lower: 160, upper: 180, symbol: { type: 'simplepolygon', fillcolor: '0,255,255' } },
|
||||
{ lower: 180, upper: 200, symbol: { type: 'simplepolygon', fillcolor: '0,0,255' } }
|
||||
]
|
||||
};
|
||||
|
||||
var options = {
|
||||
layers: [{
|
||||
id: "1",
|
||||
visible: true,
|
||||
query: query,
|
||||
renderer: renderer
|
||||
}],
|
||||
serviceName: "OpenLayers_Sample",
|
||||
singleTile: true,
|
||||
async: true
|
||||
};
|
||||
|
||||
layer = new OpenLayers.Layer.ArcIMS(
|
||||
"Global Sample Map",
|
||||
"http://sample.azavea.com/servlet/com.esri.esrimap.Esrimap",
|
||||
options
|
||||
);
|
||||
map.addLayer(layer);
|
||||
|
||||
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">ArcIMS Thematic Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
ESRI, ArcIMS, ArcXML, style, thematic, chloropleth, representation
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Shows the advanced use of OpenLayers using a thematic ArcIMS layer
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p>This is an example of how to add an ArcIMS layer to an OpenLayers map.</p>
|
||||
|
||||
<p>Following the ArcXML convention to create a thematic (or chloropleth) map,
|
||||
a layer definition is created with a query and a renderer to select portions
|
||||
of the map data, and change their representation in the generated map tiles.</p>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,57 +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>ArcIMS 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 type="text/javascript">
|
||||
var lon = 0;
|
||||
var lat = 0;
|
||||
var zoom = 1;
|
||||
var map, layer;
|
||||
|
||||
function init(){
|
||||
OpenLayers.ProxyHost = "proxy.cgi?url=";
|
||||
|
||||
map = new OpenLayers.Map( 'map' );
|
||||
|
||||
var options = {
|
||||
serviceName: "OpenLayers_Sample",
|
||||
async: true
|
||||
};
|
||||
|
||||
layer = new OpenLayers.Layer.ArcIMS( "Global Sample Map",
|
||||
"http://sample.azavea.com/servlet/com.esri.esrimap.Esrimap", options );
|
||||
map.addLayer(layer);
|
||||
|
||||
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
|
||||
map.addControl( new OpenLayers.Control.LayerSwitcher() );
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">ArcIMS Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
ESRI, ArcIMS
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Shows the basic use of OpenLayers using an ArcIMS layer
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
This is an example of how to add an ArcIMS layer to the OpenLayers window.
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,60 +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 Attribution 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 type="text/javascript">
|
||||
var map;
|
||||
function init(){
|
||||
map = new OpenLayers.Map('map');
|
||||
|
||||
var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0?", {layers: 'basic'},
|
||||
{'attribution': 'Provided by OSGeo'});
|
||||
|
||||
var jpl_wms = new OpenLayers.Layer.WMS( "NASA Global Mosaic",
|
||||
"http://t1.hypercube.telascience.org/cgi-bin/landsat7",
|
||||
{layers: "landsat7"},{attribution:"Provided by Telascience"});
|
||||
|
||||
var vector = new OpenLayers.Layer.Vector("Simple Geometry",
|
||||
{attribution:"Vector Attibution in 2nd arg"});
|
||||
|
||||
map.addLayers([ol_wms, jpl_wms, vector]);
|
||||
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
// OpenLayers.Control.Attribution is one of the default
|
||||
// controls - only needs to be added when the map instance is
|
||||
// created with the controls option
|
||||
//map.addControl(new OpenLayers.Control.Attribution());
|
||||
map.zoomToMaxExtent();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Attribution Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
copyright, watermark, logo, attribution, light
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Shows the use of the attribution layer option on a number of layer types.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p>This is an example of how to add an attribution block to the OpenLayers window. In order to use an
|
||||
attribution block, an attribution parameter must be set in each layer that requires attribution. In
|
||||
addition, an attribution control must be added to the map, though one is added to all OpenLayers Maps by default.
|
||||
Be aware that this is a layer <strong>option</strong>: the options hash goes in
|
||||
different places depending on the layer type you are using.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
83
examples/baseLayers.html
Normal file
83
examples/baseLayers.html
Normal file
@@ -0,0 +1,83 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<style type="text/css">
|
||||
#map {
|
||||
width: 100%;
|
||||
height: 512px;
|
||||
border: 1px solid black;
|
||||
background-color: blue;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- this gmaps key generated for http://openlayers.org/dev/ -->
|
||||
<script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAA9XNhd8q0UdwNC7YSO4YZghSPUCi5aRYVveCcVYxzezM4iaj_gxQ9t-UajFL70jfcpquH5l1IJ-Zyyw'></script>
|
||||
<!-- Localhost key -->
|
||||
<!-- <script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxTS6gjckBmeABOGXIUiOiZObZESPg'></script>-->
|
||||
<script type="text/javascript" src="http://clients.multimap.com/API/maps/1.1/metacarta_04"></script>
|
||||
<script src='http://dev.virtualearth.net/mapcontrol/v3/mapcontrol.js'></script>
|
||||
<script src="http://api.maps.yahoo.com/ajaxymap?v=3.0&appid=euzuro-openlayers"></script>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
var lon = 5;
|
||||
var lat = 40;
|
||||
var zoom = 5;
|
||||
var map, markers;
|
||||
var barcelona = new OpenLayers.LonLat(2.13134765625,
|
||||
41.37062534198901);
|
||||
var madrid = new OpenLayers.LonLat(-3.6968994140625,
|
||||
40.428314208984375);
|
||||
|
||||
function init(){
|
||||
map = new OpenLayers.Map( $('map') );
|
||||
|
||||
var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://labs.metacarta.com/wms/vmap0",
|
||||
{layers: 'basic'} );
|
||||
var google = new OpenLayers.Layer.Google( "Google Hybrid" , {type: G_HYBRID_MAP });
|
||||
var ve = new OpenLayers.Layer.VirtualEarth( "VE");
|
||||
var yahoo = new OpenLayers.Layer.Yahoo( "Yahoo");
|
||||
var mm = new OpenLayers.Layer.MultiMap( "MultiMap");
|
||||
|
||||
|
||||
map.addLayers([wms, google, ve, yahoo, mm]);
|
||||
|
||||
markers = new OpenLayers.Layer.Markers("markers");
|
||||
map.addLayer(markers);
|
||||
|
||||
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
|
||||
map.addControl( new OpenLayers.Control.LayerSwitcher() );
|
||||
map.addControl( new OpenLayers.Control.MousePosition() );
|
||||
|
||||
}
|
||||
|
||||
function add() {
|
||||
var url = 'http://boston.openguides.org/markers/AQUA.png';
|
||||
var sz = new OpenLayers.Size(10, 17);
|
||||
var calculateOffset = function(size) {
|
||||
return new OpenLayers.Pixel(-(size.w/2), -size.h);
|
||||
};
|
||||
var icon = new OpenLayers.Icon(url, sz, null, calculateOffset);
|
||||
marker = new OpenLayers.Marker(barcelona, icon);
|
||||
markers.addMarker(marker);
|
||||
|
||||
marker = new OpenLayers.Marker(madrid, icon.clone());
|
||||
markers.addMarker(marker);
|
||||
|
||||
}
|
||||
|
||||
function remove() {
|
||||
markers.removeMarker(marker);
|
||||
}
|
||||
|
||||
// -->
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1>OpenLayers With WMS, Google, VE Example</h1>
|
||||
<div id="map"></div>
|
||||
<div style="background-color:green" onclick="add()"> click to add a marker to the map</div>
|
||||
<div style="background-color:red" onclick="remove()"> click to remove the marker from the map</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,56 +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 Vector Behavior 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 type="text/javascript">
|
||||
var map;
|
||||
|
||||
function init(){
|
||||
map = new OpenLayers.Map('map');
|
||||
var wms = new OpenLayers.Layer.WMS(
|
||||
"OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0",
|
||||
{layers: 'basic'}
|
||||
);
|
||||
|
||||
var layer = new OpenLayers.Layer.Vector("GML", {
|
||||
strategies: [new OpenLayers.Strategy.Fixed()],
|
||||
protocol: new OpenLayers.Protocol.HTTP({
|
||||
url: "gml/polygon.xml",
|
||||
format: new OpenLayers.Format.GML()
|
||||
})
|
||||
});
|
||||
|
||||
map.addLayers([wms, layer]);
|
||||
map.zoomToExtent(new OpenLayers.Bounds(
|
||||
-3.92, 44.34, 4.87, 49.55
|
||||
));
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Vector Behavior Example (Fixed/HTTP/GML)</h1>
|
||||
<div id="tags">
|
||||
vector, strategy, strategies, protocoll, advanced, gml, http, fixed
|
||||
</div>
|
||||
<p id="shortdesc">
|
||||
Vector layer with a Fixed strategy, HTTP protocol, and GML format.
|
||||
</p>
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs">
|
||||
<p>The vector layer shown uses the Fixed strategy, the HTTP protocol,
|
||||
and the GML format.
|
||||
The Fixed strategy is a simple strategy that fetches features once
|
||||
and never re-requests new data.
|
||||
The HTTP protocol makes requests using HTTP verbs. It should be
|
||||
constructed with a url that corresponds to a collection of features
|
||||
(a resource on some server).
|
||||
The GML format is used to serialize features.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,43 +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>Basic Bing Tiles with a Subset of Resolutions 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">Bing Tiles with a Subset of Resolutions Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
bing tiles restrictedMinZoom numZoomLevels
|
||||
</div>
|
||||
|
||||
<div id="shortdesc">Use Bing with direct tile access</div>
|
||||
|
||||
<div id="map" class="smallmap" style="height: 350px;"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p>
|
||||
This example shows how to use the <code>maxResolution</code> and
|
||||
<code>numZoomLevels</code> layer properties to restrict
|
||||
the number of zoom levels displayed on the Bing layer.
|
||||
</p><p>
|
||||
See <a target="_blank" href="bing-tiles-restrictedzoom.js">bing-tiles-restrictedzoom.js</a>
|
||||
for the source code.
|
||||
</p>
|
||||
</div>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="bing-tiles-restrictedzoom.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,37 +0,0 @@
|
||||
// API key for http://openlayers.org. Please get your own at
|
||||
// http://bingmapsportal.com/ and use that instead.
|
||||
var apiKey = "AqTGBsziZHIJYYxgivLBf0hVdrAk9mWO5cQcb8Yux8sW5M8c8opEC2lZqKR1ZZXf";
|
||||
|
||||
var map = new OpenLayers.Map('map', {
|
||||
controls: [
|
||||
new OpenLayers.Control.Attribution(),
|
||||
new OpenLayers.Control.Navigation(),
|
||||
new OpenLayers.Control.PanZoomBar(),
|
||||
new OpenLayers.Control.LayerSwitcher()
|
||||
]
|
||||
});
|
||||
|
||||
var road3 = new OpenLayers.Layer.Bing({
|
||||
name: "Road tiles with 3 zoom levels",
|
||||
type: "Road",
|
||||
key: apiKey,
|
||||
maxResolution: 76.43702827453613,
|
||||
numZoomLevels: 3
|
||||
});
|
||||
var road5 = new OpenLayers.Layer.Bing({
|
||||
name: "Road tiles with 5 zoom levels",
|
||||
type: "Road",
|
||||
key: apiKey,
|
||||
numZoomLevels: 5
|
||||
});
|
||||
var road = new OpenLayers.Layer.Bing({
|
||||
name: "Road tiles with all zoom levels",
|
||||
type: "Road",
|
||||
key: apiKey
|
||||
});
|
||||
|
||||
map.addLayers([road3, road5, road]);
|
||||
map.setCenter(new OpenLayers.LonLat(-71.147, 42.472).transform(
|
||||
new OpenLayers.Projection("EPSG:4326"),
|
||||
map.getProjectionObject()
|
||||
), 1);
|
||||
@@ -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 Bing Tiles 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">Basic Bing Tiles Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
bing tiles, light
|
||||
</div>
|
||||
|
||||
<div id="shortdesc">Use Bing with direct tile access</div>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
<p>This example shows a very simple map with Bing layers that use
|
||||
direct tile access through Bing Maps REST Services.</p><p>See
|
||||
<a target="_blank" href="bing-tiles.js">bing-tiles.js</a> for the
|
||||
source code.</p>
|
||||
</div>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script src="bing-tiles.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,31 +0,0 @@
|
||||
// API key for http://openlayers.org. Please get your own at
|
||||
// http://bingmapsportal.com/ and use that instead.
|
||||
var apiKey = "AqTGBsziZHIJYYxgivLBf0hVdrAk9mWO5cQcb8Yux8sW5M8c8opEC2lZqKR1ZZXf";
|
||||
|
||||
var map = new OpenLayers.Map( 'map');
|
||||
|
||||
var road = new OpenLayers.Layer.Bing({
|
||||
key: apiKey,
|
||||
type: "Road",
|
||||
// custom metadata parameter to request the new map style - only useful
|
||||
// before May 1st, 2011
|
||||
metadataParams: {mapVersion: "v1"}
|
||||
});
|
||||
var aerial = new OpenLayers.Layer.Bing({
|
||||
key: apiKey,
|
||||
type: "Aerial"
|
||||
});
|
||||
var hybrid = new OpenLayers.Layer.Bing({
|
||||
key: apiKey,
|
||||
type: "AerialWithLabels",
|
||||
name: "Bing Aerial With Labels"
|
||||
});
|
||||
|
||||
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);
|
||||
@@ -1,64 +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 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="../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() {
|
||||
map = new OpenLayers.Map("map");
|
||||
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
|
||||
var road = new OpenLayers.Layer.Bing({
|
||||
name: "Road",
|
||||
key: apiKey,
|
||||
type: "Road"
|
||||
});
|
||||
var hybrid = new OpenLayers.Layer.Bing({
|
||||
name: "Hybrid",
|
||||
key: apiKey,
|
||||
type: "AerialWithLabels"
|
||||
});
|
||||
var aerial = new OpenLayers.Layer.Bing({
|
||||
name: "Aerial",
|
||||
key: apiKey,
|
||||
type: "Aerial"
|
||||
});
|
||||
|
||||
map.addLayers([road, hybrid, aerial]);
|
||||
|
||||
map.setCenter(new OpenLayers.LonLat(-110, 45), 3);
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Bing Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
Bing, Microsoft, Virtual Earth, light
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrates the use of Bing layers.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
<div id="docs"><p>This example demonstrates the ability to create layers
|
||||
using tiles from Bing maps.</p></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -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
|
||||
});
|
||||
@@ -1,59 +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 Boxes Vector 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 type="text/javascript">
|
||||
var box_extents = [
|
||||
[-10, 50, 5, 60],
|
||||
[-75, 41, -71, 44],
|
||||
[-122.6, 37.6, -122.3, 37.9],
|
||||
[10, 10, 20, 20]
|
||||
];
|
||||
var map;
|
||||
function init(){
|
||||
map = new OpenLayers.Map('map');
|
||||
|
||||
var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0?", {layers: 'basic'} );
|
||||
|
||||
var boxes = new OpenLayers.Layer.Vector( "Boxes" );
|
||||
|
||||
for (var i = 0; i < box_extents.length; i++) {
|
||||
ext = box_extents[i];
|
||||
bounds = OpenLayers.Bounds.fromArray(ext);
|
||||
|
||||
box = new OpenLayers.Feature.Vector(bounds.toGeometry());
|
||||
boxes.addFeatures(box);
|
||||
}
|
||||
|
||||
map.addLayers([ol_wms, boxes]);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
var sf = new OpenLayers.Control.SelectFeature(boxes);
|
||||
map.addControl(sf);
|
||||
sf.activate();
|
||||
map.zoomToMaxExtent();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Boxes Example Vector</h1>
|
||||
|
||||
<div id="tags">
|
||||
box, vector, annotation, light
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrate marker and box type annotations on a map.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,58 +1,49 @@
|
||||
<!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 Boxes 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 type="text/javascript">
|
||||
var box_extents = [
|
||||
[-10, 50, 5, 60],
|
||||
[-75, 41, -71, 44],
|
||||
[-122.6, 37.6, -122.3, 37.9],
|
||||
[10, 10, 20, 20]
|
||||
];
|
||||
var map;
|
||||
function init(){
|
||||
map = new OpenLayers.Map('map');
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<style type="text/css">
|
||||
#map {
|
||||
width: 512px;
|
||||
height: 512px;
|
||||
border: 1px solid black;
|
||||
}
|
||||
</style>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
box_extents = [
|
||||
[-10, 50, 5, 60],
|
||||
[-75, 41, -71, 44],
|
||||
[-122.6, 37.6, -122.3, 37.9],
|
||||
[10, 10, 20, 20]
|
||||
];
|
||||
|
||||
var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0?", {layers: 'basic'} );
|
||||
function init(){
|
||||
var map = new OpenLayers.Map('map');
|
||||
|
||||
var boxes = new OpenLayers.Layer.Boxes( "Boxes" );
|
||||
|
||||
for (var i = 0; i < box_extents.length; i++) {
|
||||
ext = box_extents[i];
|
||||
bounds = OpenLayers.Bounds.fromArray(ext);
|
||||
box = new OpenLayers.Marker.Box(bounds);
|
||||
box.events.register("click", box, function (e) {
|
||||
this.setBorder("yellow");
|
||||
});
|
||||
boxes.addMarker(box);
|
||||
}
|
||||
var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'} );
|
||||
|
||||
map.addLayers([ol_wms, boxes]);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.zoomToMaxExtent();
|
||||
var boxes = new OpenLayers.Layer.Boxes( "Boxes" );
|
||||
|
||||
for (var i = 0; i < box_extents.length; i++) {
|
||||
ext = box_extents[i];
|
||||
bounds = new OpenLayers.Bounds(ext[0], ext[1], ext[2], ext[3]);
|
||||
box = new OpenLayers.Marker.Box(bounds);
|
||||
box.events.register("click", box, function (e) {
|
||||
this.setBorder("yellow");
|
||||
});
|
||||
boxes.addMarker(box);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Boxes Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
box, annotation
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
Demonstrate marker and box type annotations on a map.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs"></div>
|
||||
</body>
|
||||
map.addLayers([ol_wms, boxes]);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.zoomToMaxExtent();
|
||||
}
|
||||
// -->
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1>OpenLayers Example</h1>
|
||||
<div id="map"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,152 +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 Browser Detection</title>
|
||||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script type="text/javascript" src="browser.js"></script>
|
||||
<style type="text/css">
|
||||
.olControlAttribution {
|
||||
bottom: 5px;
|
||||
}
|
||||
|
||||
.tester {
|
||||
margin: 3px;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
function init() {
|
||||
var result = document.getElementById('result');
|
||||
result.innerHTML = result.innerHTML + "Browser CodeName: " + navigator.appCodeName + '<br>';
|
||||
result.innerHTML = result.innerHTML + "Browser Name: " + navigator.appName + '<br>';
|
||||
result.innerHTML = result.innerHTML + "Browser Version: " + navigator.appVersion + '<br>';
|
||||
result.innerHTML = result.innerHTML + "Cookies Enabled: " + navigator.cookieEnabled + '<br>';
|
||||
result.innerHTML = result.innerHTML + "Platform: " + navigator.platform + '<br>';
|
||||
result.innerHTML = result.innerHTML + 'User agent: ' + navigator.userAgent + '<br>';
|
||||
divResult('mouse', 'click', null, result);
|
||||
divResult('mouse', 'dblclick', null, result);
|
||||
divResult('mouse', 'mousedown', null, result);
|
||||
divResult('mouse', 'mouseup', null, result);
|
||||
divResult('mouse', 'mouseover', null, result);
|
||||
divResult('mouse', 'mousemove', null, result);
|
||||
divResult('mouse', 'mouseout', null, result);
|
||||
|
||||
divResult('key', 'keypress', null, result);
|
||||
divResult('key', 'keydown', null, result);
|
||||
divResult('key', 'keyup', null, result);
|
||||
|
||||
divResult('HTML', 'load', null, result);
|
||||
divResult('HTML', 'unload', window, result);
|
||||
divResult('HTML', 'abort', null, result);
|
||||
divResult('HTML', 'error', null, result);
|
||||
|
||||
divResult('view', 'resize', window, result);
|
||||
divResult('view', 'scroll', null, result);
|
||||
|
||||
divResult('form', 'submit', null, result);
|
||||
divResult('form', 'reset', null, result);
|
||||
|
||||
divResult('form control', 'select', null, result);
|
||||
divResult('form control', 'change', null, result);
|
||||
|
||||
divResult('activation', 'focus', null, result);
|
||||
divResult('activation', 'blur', null, result);
|
||||
|
||||
divResult('touch', 'touchstart', null, result);
|
||||
divResult('touch', 'touchend', null, result);
|
||||
divResult('touch', 'touchmove', null, result);
|
||||
divResult('touch', 'touchcancel', null, result);
|
||||
|
||||
divResult('gesture', 'gesturestart', null, result);
|
||||
divResult('gesture', 'gesturechange', null, result);
|
||||
divResult('gesture', 'gestureend', null, result);
|
||||
|
||||
divResult('HTML5', 'hashchange', document.body, result);
|
||||
divResult('HTML5', 'online', document.body, result);
|
||||
divResult('HTML5', 'offline', document.body, result);
|
||||
divResult('HTML5', 'message', window, result);
|
||||
divResult('HTML5', 'undo', document.body, result);
|
||||
divResult('HTML5', 'redo', document.body, result);
|
||||
divResult('HTML5', 'storage', window, result);
|
||||
divResult('HTML5', 'popstate', window, result);
|
||||
divResult('HTML5', 'canplay', document.createElement('video'), result);
|
||||
divResult('HTML5', 'seeking', document.createElement('video'), result);
|
||||
divResult('HTML5', 'seekend', document.createElement('video'), result);
|
||||
|
||||
divResult('orientation', 'deviceorientation', window, result);
|
||||
divResult('orientation', 'mozorientation', window, result);
|
||||
divResult('orientation', 'devicemotion', window, result);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Browser detection</h1>
|
||||
|
||||
<div id="tags">
|
||||
browser, vendor, mobile, events, HTML5, gesture, touch
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
The goal of this script is to inform about the capacity of the browser used by the user.
|
||||
</p>
|
||||
|
||||
<div id="docs">
|
||||
<p>
|
||||
See the <a href="browser.js" target="_blank">
|
||||
browser.js source</a> to see how this is done.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<h1>Your browser information</h1>
|
||||
|
||||
<div id="result">
|
||||
</div>
|
||||
|
||||
<h1>Click or touch the red square to get information about the selected events</h1>
|
||||
|
||||
<div>
|
||||
<div class="tester">
|
||||
<INPUT TYPE=CHECKBOX ID="clickID" checked>click<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="dblclickID">dblclick<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="mousedownID">mousedown<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="mouseupID">mouseup<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="mouseoverID">mouseover<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="mousemoveID">mousemove<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="mouseoutID">mouseout<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="touchstartID">touchstart<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="touchendID">touchend<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="touchmoveID">touchmove<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="touchcancelID">touchcancel<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="gesturestartID">gesturestart<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="gesturechangeID">gesturechange<BR>
|
||||
<INPUT TYPE=CHECKBOX ID="gestureendID">gestureend<BR>
|
||||
</div>
|
||||
|
||||
<div style="height: 200px;width: 200px;" class="tester">
|
||||
<div id="box" style="height: 200px; width: 200px; background: none repeat scroll 0% 0% red; "
|
||||
onclick="click(event)"
|
||||
ondblclick="dblclick(event)"
|
||||
onmousedown="mousedown(event)"
|
||||
onmouseup="mouseup(event)"
|
||||
onmouseover="mouseover(event)"
|
||||
onmousemove="mousemove(event)"
|
||||
onmouseout="mouseout(event)"
|
||||
ontouchstart="touchstart(event)"
|
||||
ontouchend="touchend(event)"
|
||||
ontouchmove="touchmove(event)"
|
||||
ontouchcancel="touchcancel(event)"
|
||||
ongesturestart="gesturestart(event)"
|
||||
ongesturechange="gesturechange(event)"
|
||||
ongestureend="gestureend(event)">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="log" class="tester"></div>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,241 +0,0 @@
|
||||
var isEventSupported = (function(undef) {
|
||||
|
||||
var TAGNAMES = {
|
||||
'select':'input',
|
||||
'change':'input',
|
||||
'submit':'form',
|
||||
'reset':'form',
|
||||
'error':'img',
|
||||
'load':'img',
|
||||
'abort':'img'
|
||||
};
|
||||
|
||||
function isEventSupported(eventName, element) {
|
||||
element = element || document.createElement(TAGNAMES[eventName] || 'div');
|
||||
eventName = 'on' + eventName;
|
||||
|
||||
var isSupported = (eventName in element);
|
||||
|
||||
if (!isSupported) {
|
||||
// if it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
|
||||
if (!element.setAttribute) {
|
||||
element = document.createElement('div');
|
||||
}
|
||||
if (element.setAttribute && element.removeAttribute) {
|
||||
element.setAttribute(eventName, '');
|
||||
isSupported = typeof element[eventName] == 'function';
|
||||
|
||||
// if property was created, "remove it" (by setting value to `undefined`)
|
||||
if (typeof element[eventName] != 'undefined') {
|
||||
element[eventName] = undef;
|
||||
}
|
||||
element.removeAttribute(eventName);
|
||||
}
|
||||
}
|
||||
|
||||
element = null;
|
||||
return isSupported;
|
||||
}
|
||||
|
||||
return isEventSupported;
|
||||
})();
|
||||
|
||||
function divResult(category, name, element, div) {
|
||||
div.innerHTML = div.innerHTML + category + " " + name + ": ";
|
||||
div.innerHTML = div.innerHTML + (
|
||||
isEventSupported(name, element)
|
||||
? '<span style="background-color:green;color:white;">true</span></td>'
|
||||
: '<span style="background-color:red;color:white;">false</span></td>'
|
||||
);
|
||||
div.innerHTML = div.innerHTML + "<br>";
|
||||
}
|
||||
var counter = 1;
|
||||
|
||||
function log(title, detail) {
|
||||
var logDiv = document.getElementById("log");
|
||||
idString = "'id" + counter + "'";
|
||||
var newlink = document.createElement('a');
|
||||
newlink.setAttribute('href', "javascript:toggle_visibility(" + idString + ")");
|
||||
newlink.innerHTML = counter + ". " + title;
|
||||
var br1 = document.createElement('br');
|
||||
logDiv.appendChild(newlink);
|
||||
logDiv.appendChild(br1);
|
||||
|
||||
var childDiv = document.createElement('div');
|
||||
childDiv.setAttribute("id", idString.replace("'", "").replace("'", ""));
|
||||
childDiv.setAttribute("style", 'display: none; margin-left : 5px;');
|
||||
childDiv.innerHTML = detail;
|
||||
var br2 = document.createElement('br');
|
||||
logDiv.appendChild(childDiv);
|
||||
|
||||
counter = counter + 1;
|
||||
}
|
||||
|
||||
function inspect(obj) {
|
||||
if (typeof obj === "undefined") {
|
||||
return "undefined";
|
||||
}
|
||||
var _props = [];
|
||||
|
||||
for (var i in obj) {
|
||||
_props.push(i + " : " + obj[i]);
|
||||
}
|
||||
return " {" + _props.join(",<br>") + "} ";
|
||||
}
|
||||
|
||||
function click(e) {
|
||||
if (document.getElementById("clickID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
log(e.type, inspect(e));
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function dblclick(e) {
|
||||
if (document.getElementById("dblclickID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
log(e.type, inspect(e));
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function mousedown(e) {
|
||||
if (document.getElementById("mousedownID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
log(e.type, inspect(e));
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function mouseup(e) {
|
||||
if (document.getElementById("mouseupID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
log(e.type, inspect(e));
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function mouseover(e) {
|
||||
if (document.getElementById("mouseoverID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
log(e.type, inspect(e));
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function mousemove(e) {
|
||||
if (document.getElementById("mousemoveID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
log(e.type, inspect(e));
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function mouseout(e) {
|
||||
if (document.getElementById("mouseoutID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
log(e.type, inspect(e));
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function touchstart(e) {
|
||||
if (document.getElementById("touchstartID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
var result = inspect(e);
|
||||
for (var i = 0; i < e.touches.length; i++) {
|
||||
result = result + "<br> Touches nr." + i + " <br>" + inspect(e.touches[i]);
|
||||
}
|
||||
log(e.type, result);
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function touchend(e) {
|
||||
if (document.getElementById("touchendID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
var result = inspect(e);
|
||||
for (var i = 0; i < e.touches.length; i++) {
|
||||
result = result + "<br> Touches nr." + i + " <br>" + inspect(e.touches[i]);
|
||||
}
|
||||
log(e.type, result);
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function touchmove(e) {
|
||||
if (document.getElementById("touchmoveID").checked) {
|
||||
var targetEvent = e.touches.item(0);
|
||||
var box = document.getElementById("box");
|
||||
box.style.left = targetEvent.clientX + "px";
|
||||
box.style.top = targetEvent.clientY + "px";
|
||||
var result = inspect(e);
|
||||
for (var i = 0; i < e.touches.length; i++) {
|
||||
result = result + "<br> Touches nr." + i + " <br>" + inspect(e.touches[i]);
|
||||
}
|
||||
log(e.type, result);
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function touchcancel(e) {
|
||||
if (document.getElementById("touchcancelID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
var result = inspect(e);
|
||||
for (var i = 0; i < e.touches.length; i++) {
|
||||
result = result + "<br> Touches nr." + i + " <br>" + inspect(e.touches[i]);
|
||||
}
|
||||
log(e.type, result);
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function gesturestart(e) {
|
||||
if (document.getElementById("gesturestartID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
log(e.type, inspect(e));
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function gesturechange(e) {
|
||||
if (document.getElementById("gesturechangeID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
log(e.type, inspect(e));
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function gestureend(e) {
|
||||
if (document.getElementById("gestureendID").checked) {
|
||||
var box = document.getElementById("box");
|
||||
log(e.type, inspect(e));
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function toggle_visibility(id) {
|
||||
var e = document.getElementById(id);
|
||||
if (e.style.display == 'block') {
|
||||
e.style.display = 'none';
|
||||
} else {
|
||||
e.style.display = 'block';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,54 +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 Buffer 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 type="text/javascript">
|
||||
var lon = 0;
|
||||
var lat = 0;
|
||||
var zoom = 2;
|
||||
var map, layer;
|
||||
|
||||
function init(){
|
||||
map = new OpenLayers.Map( 'map' );
|
||||
layer = new OpenLayers.Layer.WMS( "0 buffer: OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0",
|
||||
{layers: 'basic'}, {'buffer':0} );
|
||||
map.addLayer(layer);
|
||||
layer = new OpenLayers.Layer.WMS( "1 buffer: OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0",
|
||||
{layers: 'basic'}, {'buffer':1} );
|
||||
map.addLayer(layer);
|
||||
layer = new OpenLayers.Layer.WMS( "4 buffer: OpenLayers WMS",
|
||||
"http://vmap0.tiles.osgeo.org/wms/vmap0",
|
||||
{layers: 'basic'}, {'buffer':4} );
|
||||
map.addLayer(layer);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<h1 id="title">Buffer Example</h1>
|
||||
|
||||
<div id="tags">
|
||||
buffer, performance, tile, light
|
||||
</div>
|
||||
|
||||
<p id="shortdesc">
|
||||
This example shows the use of the buffer layer option for any layer that inherits from OpenLayers.Layer.Grid.
|
||||
</p>
|
||||
|
||||
<div id="map" class="smallmap"></div>
|
||||
|
||||
<div id="docs">
|
||||
Use the buffer property to control how many tiles are included
|
||||
outside the visible map area. Default is 0.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user