diff --git a/src/ol/attribution.js b/src/ol/attribution.js
index 2f89291d68..4da28089f9 100644
--- a/src/ol/attribution.js
+++ b/src/ol/attribution.js
@@ -5,18 +5,19 @@ goog.require('ol.TileRange');
/**
- * Create a new attribution to be associated with a layer source.
+ * @classdesc
+ * An attribution for a layer source.
*
* Example:
*
* source: new ol.source.OSM({
* attributions: [
- * new ol.Attribution({
- * html: 'All maps © ' +
- * 'OpenCycleMap'
- * }),
- * ol.source.OSM.DATA_ATTRIBUTION
- * ],
+ * new ol.Attribution({
+ * html: 'All maps © ' +
+ * 'OpenCycleMap'
+ * }),
+ * ol.source.OSM.DATA_ATTRIBUTION
+ * ],
* ..
*
* @constructor
diff --git a/src/ol/collection.js b/src/ol/collection.js
index 1c64540447..60e1841d9c 100644
--- a/src/ol/collection.js
+++ b/src/ol/collection.js
@@ -65,7 +65,12 @@ ol.CollectionProperty = {
/**
- * A mutable MVC Array.
+ * @classdesc
+ * Adds methods to standard Array; changes (add/remove) to the Collection
+ * trigger events. Because a Collection is itself an {@link ol.Object}, it
+ * can be bound to any other Object or Collection such that a change in one
+ * will automatically be reflected in the other.
+ *
* @constructor
* @extends {ol.Object}
* @fires ol.CollectionEvent
diff --git a/src/ol/control/attributioncontrol.js b/src/ol/control/attributioncontrol.js
index d6aefde585..c07a01767f 100644
--- a/src/ol/control/attributioncontrol.js
+++ b/src/ol/control/attributioncontrol.js
@@ -13,10 +13,12 @@ goog.require('ol.css');
/**
- * Create a new attribution control to show all the attributions associated
- * with the layer sources in the map. A default map has this control included.
- * By default it will show in the bottom right portion of the map, but it can
+ * @classdesc
+ * Control to show all the attributions associated with the layer sources
+ * in the map. This control is one of the default controls included in maps.
+ * By default it will show in the bottom right portion of the map, but this can
* be changed by using a css selector for `.ol-attribution`.
+ *
* @constructor
* @extends {ol.control.Control}
* @param {olx.control.AttributionOptions=} opt_options Attribution options.
diff --git a/src/ol/control/control.js b/src/ol/control/control.js
index a26cfc1f0f..8dd45ba7aa 100644
--- a/src/ol/control/control.js
+++ b/src/ol/control/control.js
@@ -9,8 +9,12 @@ goog.require('ol.Object');
/**
- * Something to be painted over the map to provide a means for interaction
- * (buttons) or to show annotations (status bars).
+ * @classdesc
+ * Abstract parent class for controls.
+ * A control is a visible widget with a DOM element in a fixed position on the
+ * screen. They can involve user input (buttons), or be informational only;
+ * the position is determined using CSS. By default these are part of the map
+ * container, but can use any outside DOM element.
*
* @constructor
* @extends {ol.Object}
diff --git a/src/ol/control/controldefaults.js b/src/ol/control/controldefaults.js
index 9e66830fef..bb5ed5a5e3 100644
--- a/src/ol/control/controldefaults.js
+++ b/src/ol/control/controldefaults.js
@@ -8,12 +8,15 @@ goog.require('ol.control.Zoom');
/**
- * Set of default controls. Unless configured otherwise, this returns a
- * collection containing an instance of each of the following controls:
+ * @classdesc
+ * Set of controls included in maps by default. Unless configured otherwise,
+ * this returns a collection containing an instance of each of the following
+ * controls:
* * {@link ol.control.Zoom}
* * {@link ol.control.Rotate}
* * {@link ol.control.Attribution}
* * {@link ol.control.Logo}
+ *
* @param {olx.control.DefaultsOptions=} opt_options Defaults options.
* @return {ol.Collection} Controls.
* @todo api
diff --git a/src/ol/control/fullscreencontrol.js b/src/ol/control/fullscreencontrol.js
index 569a4c124d..41ea5f3b4d 100644
--- a/src/ol/control/fullscreencontrol.js
+++ b/src/ol/control/fullscreencontrol.js
@@ -15,6 +15,7 @@ goog.require('ol.pointer.PointerEventHandler');
/**
+ * @classdesc
* Provides a button that when clicked fills up the full screen with the map.
* When in full screen mode, a close button is shown to exit full screen mode.
* The [Fullscreen API](http://www.w3.org/TR/fullscreen/) is used to
diff --git a/src/ol/control/logocontrol.js b/src/ol/control/logocontrol.js
index 314b3f9d35..7c4a4220ee 100644
--- a/src/ol/control/logocontrol.js
+++ b/src/ol/control/logocontrol.js
@@ -10,10 +10,12 @@ goog.require('ol.css');
/**
+ * @classdesc
* Shows a logo for all the layer sources in the map that have a logo
* associated with them, such as Bing. This control is part of a default map.
* By default it will show in the bottom-left portion of the map, but it can
* be styled by using a css selector for `.ol-logo`.
+ *
* @constructor
* @extends {ol.control.Control}
* @param {olx.control.LogoOptions=} opt_options Logo options.
diff --git a/src/ol/control/mousepositioncontrol.js b/src/ol/control/mousepositioncontrol.js
index bcc18c76da..2fea773865 100644
--- a/src/ol/control/mousepositioncontrol.js
+++ b/src/ol/control/mousepositioncontrol.js
@@ -28,10 +28,11 @@ ol.control.MousePositionProperty = {
/**
- * Create a new control to show the position of the mouse in the map's
- * projection (or any other supplied projection). By default the control is
- * shown in the top right corner of the map but this can be changed by using
- * a css selector `.ol-mouse-position`.
+ * @classdesc
+ * A control to show the 2D coordinates of the mouse cursor. By default, these
+ * are in the view projection, but can be in any supported projection.
+ * By default the control is shown in the top right corner of the map, but this
+ * can be changed by using the css selector `.ol-mouse-position`.
*
* @constructor
* @extends {ol.control.Control}
diff --git a/src/ol/control/rotatecontrol.js b/src/ol/control/rotatecontrol.js
index 8596e6dbb3..8ab6246c68 100644
--- a/src/ol/control/rotatecontrol.js
+++ b/src/ol/control/rotatecontrol.js
@@ -17,8 +17,10 @@ goog.require('ol.pointer.PointerEventHandler');
/**
- * Create a new control with a button, to reset rotation to 0.
+ * @classdesc
+ * A button control to reset rotation to 0.
* To style this control use css selector `.ol-rotate`.
+ *
* @constructor
* @extends {ol.control.Control}
* @param {olx.control.RotateOptions=} opt_options Rotate options.
diff --git a/src/ol/control/scalelinecontrol.js b/src/ol/control/scalelinecontrol.js
index 79cae1f5a2..b1189aa834 100644
--- a/src/ol/control/scalelinecontrol.js
+++ b/src/ol/control/scalelinecontrol.js
@@ -42,9 +42,10 @@ ol.control.ScaleLineUnits = {
/**
- * Create a control to help users estimate distances on a map.
- * By default it will show in the bottom left portion of the map, but it can
- * be changed by using a css selector for `.ol-scale-line`.
+ * @classdesc
+ * A control displaying rough x-axis distances.
+ * By default it will show in the bottom left portion of the map, but this can
+ * be changed by using the css selector `.ol-scale-line`.
*
* @constructor
* @extends {ol.control.Control}
diff --git a/src/ol/control/zoomcontrol.js b/src/ol/control/zoomcontrol.js
index 4b8fe5154e..d861a147e6 100644
--- a/src/ol/control/zoomcontrol.js
+++ b/src/ol/control/zoomcontrol.js
@@ -17,9 +17,11 @@ goog.require('ol.pointer.PointerEventHandler');
/**
- * Create a new control with 2 buttons, one for zoom in and one for zoom out.
- * This control is part of the default controls of a map. To style this control
+ * @classdesc
+ * A control with 2 buttons, one for zoom in and one for zoom out.
+ * This control is one of the default controls of a map. To style this control
* use css selectors `.ol-zoom-in` and `.ol-zoom-out`.
+ *
* @constructor
* @extends {ol.control.Control}
* @param {olx.control.ZoomOptions=} opt_options Zoom options.
diff --git a/src/ol/control/zoomslidercontrol.js b/src/ol/control/zoomslidercontrol.js
index 42bb1c4d39..76a41113bf 100644
--- a/src/ol/control/zoomslidercontrol.js
+++ b/src/ol/control/zoomslidercontrol.js
@@ -23,6 +23,7 @@ goog.require('ol.easing');
/**
+ * @classdesc
* A slider type of control for zooming.
*
* Example:
diff --git a/src/ol/control/zoomtoextentcontrol.js b/src/ol/control/zoomtoextentcontrol.js
index 03aa7fbbea..1b9f9756e5 100644
--- a/src/ol/control/zoomtoextentcontrol.js
+++ b/src/ol/control/zoomtoextentcontrol.js
@@ -14,9 +14,10 @@ goog.require('ol.pointer.PointerEventHandler');
/**
- * Create a control that adds a button, which, when pressed, changes
- * the map view to a specific extent. To style this control use the
- * css selector `.ol-zoom-extent`.
+ * @classdesc
+ * A button control which, when pressed, changes the map view to a specific
+ * extent. To style this control use the css selector `.ol-zoom-extent`.
+ *
* @constructor
* @extends {ol.control.Control}
* @param {olx.control.ZoomToExtentOptions=} opt_options Options.
diff --git a/src/ol/deviceorientation.js b/src/ol/deviceorientation.js
index 8102590bbb..a9e06cc441 100644
--- a/src/ol/deviceorientation.js
+++ b/src/ol/deviceorientation.js
@@ -21,6 +21,7 @@ ol.DeviceOrientationProperty = {
/**
+ * @classdesc
* The ol.DeviceOrientation class provides access to DeviceOrientation
* information and events, see the [HTML 5 DeviceOrientation Specification](
* http://www.w3.org/TR/orientation-event/) for more details.
diff --git a/src/ol/dom/input.js b/src/ol/dom/input.js
index 7ddead3a90..f706f0c775 100644
--- a/src/ol/dom/input.js
+++ b/src/ol/dom/input.js
@@ -18,6 +18,7 @@ ol.dom.InputProperty = {
/**
+ * @classdesc
* Helper class for binding HTML input to an {@link ol.Object}.
*
* Example:
diff --git a/src/ol/feature.js b/src/ol/feature.js
index 553d0c39d5..aedcd12995 100644
--- a/src/ol/feature.js
+++ b/src/ol/feature.js
@@ -16,6 +16,12 @@ goog.require('ol.style.Style');
/**
+ * @classdesc
+ * A vector object for geographical features with a geometry and other
+ * attribute properties, similar to the features in vector file formats like
+ * GeoJSON.
+ * Features can be styled individually or use the style of their vector layer.
+ *
* @constructor
* @extends {ol.Object}
* @fires change Triggered when the geometry or style of the feature changes.
diff --git a/src/ol/featureoverlay.js b/src/ol/featureoverlay.js
index 5f035ead82..3aa6b1e045 100644
--- a/src/ol/featureoverlay.js
+++ b/src/ol/featureoverlay.js
@@ -15,6 +15,14 @@ goog.require('ol.style.ImageState');
/**
+ * @classdesc
+ * A mechanism for changing the style of a small number of features on a
+ * temporary basis, for example highlighting. This is necessary with the Canvas
+ * renderer, where, unlike in SVG, features cannot be individually referenced.
+ * See examples/vector-layers for an example: create a FeatureOverlay with a
+ * different style, copy the feature(s) you want rendered in this different
+ * style into it, and then remove them again when you're finished.
+ *
* @constructor
* @param {olx.FeatureOverlayOptions=} opt_options Options.
* @todo api
diff --git a/src/ol/format/featureformat.js b/src/ol/format/featureformat.js
index 06b3c4f12e..2cc7097383 100644
--- a/src/ol/format/featureformat.js
+++ b/src/ol/format/featureformat.js
@@ -5,7 +5,9 @@ goog.require('goog.functions');
/**
- * ol.format.Feature subclasses provide the ability to decode and encode
+ * @classdesc
+ * Abstract base class for feature formats.
+ * {ol.format.Feature} subclasses provide the ability to decode and encode
* {@link ol.Feature} objects from a variety of commonly used geospatial
* file formats. See the documentation for each format for more details.
*
diff --git a/src/ol/format/geojsonformat.js b/src/ol/format/geojsonformat.js
index c0785dbfaf..dba786bdca 100644
--- a/src/ol/format/geojsonformat.js
+++ b/src/ol/format/geojsonformat.js
@@ -21,7 +21,8 @@ goog.require('ol.proj');
/**
- * Provide access to features stored in the GeoJSON format.
+ * @classdesc
+ * Feature format for reading and writing data in the GeoJSON format.
*
* @constructor
* @extends {ol.format.JSONFeature}
diff --git a/src/ol/format/gmlformat.js b/src/ol/format/gmlformat.js
index 52266d79d2..b2d484e14f 100644
--- a/src/ol/format/gmlformat.js
+++ b/src/ol/format/gmlformat.js
@@ -24,6 +24,9 @@ goog.require('ol.xml');
/**
+ * @classdesc
+ * Feature format for reading and writing data in the GML format.
+ *
* @constructor
* @param {olx.format.GMLOptions=} opt_options
* Optional configuration object.
diff --git a/src/ol/format/gpxformat.js b/src/ol/format/gpxformat.js
index ad7081757a..393d4d1f74 100644
--- a/src/ol/format/gpxformat.js
+++ b/src/ol/format/gpxformat.js
@@ -17,6 +17,9 @@ goog.require('ol.xml');
/**
+ * @classdesc
+ * Feature format for reading and writing data in the GPX format.
+ *
* @constructor
* @extends {ol.format.XMLFeature}
* @todo api
diff --git a/src/ol/format/igcformat.js b/src/ol/format/igcformat.js
index 57d9aa4c62..2191e41ecd 100644
--- a/src/ol/format/igcformat.js
+++ b/src/ol/format/igcformat.js
@@ -22,6 +22,9 @@ ol.format.IGCZ = {
/**
+ * @classdesc
+ * Feature format for `*.igc` flight recording files.
+ *
* @constructor
* @extends {ol.format.TextFeature}
* @param {olx.format.IGCOptions=} opt_options Options.
diff --git a/src/ol/format/jsonfeatureformat.js b/src/ol/format/jsonfeatureformat.js
index 2b06156a79..5bad27e4b3 100644
--- a/src/ol/format/jsonfeatureformat.js
+++ b/src/ol/format/jsonfeatureformat.js
@@ -9,6 +9,9 @@ goog.require('ol.format.FormatType');
/**
+ * @classdesc
+ * Abstract base class for JSON feature formats.
+ *
* @constructor
* @extends {ol.format.Feature}
*/
diff --git a/src/ol/format/kmlformat.js b/src/ol/format/kmlformat.js
index af9351e789..39c409b381 100644
--- a/src/ol/format/kmlformat.js
+++ b/src/ol/format/kmlformat.js
@@ -51,6 +51,9 @@ ol.format.KMLGxTrackObject_;
/**
+ * @classdesc
+ * Feature format for reading and writing data in the KML format.
+ *
* @constructor
* @extends {ol.format.XMLFeature}
* @param {olx.format.KMLOptions=} opt_options Options.
diff --git a/src/ol/format/osmxmlformat.js b/src/ol/format/osmxmlformat.js
index 80655c0cdc..f8b3420040 100644
--- a/src/ol/format/osmxmlformat.js
+++ b/src/ol/format/osmxmlformat.js
@@ -16,6 +16,9 @@ goog.require('ol.xml');
/**
+ * @classdesc
+ * Feature format for reading and writing data in the OSMXML format.
+ *
* @constructor
* @extends {ol.format.XMLFeature}
* @todo api
diff --git a/src/ol/format/textfeatureformat.js b/src/ol/format/textfeatureformat.js
index eea4cb5322..c48514a8fe 100644
--- a/src/ol/format/textfeatureformat.js
+++ b/src/ol/format/textfeatureformat.js
@@ -7,6 +7,9 @@ goog.require('ol.format.FormatType');
/**
+ * @classdesc
+ * Abstract base class for text feature formats.
+ *
* @constructor
* @extends {ol.format.Feature}
*/
diff --git a/src/ol/format/topojsonformat.js b/src/ol/format/topojsonformat.js
index fc85c5e11f..98ac50cc2e 100644
--- a/src/ol/format/topojsonformat.js
+++ b/src/ol/format/topojsonformat.js
@@ -15,6 +15,9 @@ goog.require('ol.proj');
/**
+ * @classdesc
+ * Feature format for reading and writing data in the TopoJSON format.
+ *
* @constructor
* @extends {ol.format.JSONFeature}
* @param {olx.format.TopoJSONOptions=} opt_options Options.
diff --git a/src/ol/format/wfsformat.js b/src/ol/format/wfsformat.js
index 34c6bb9037..e3ad685b4c 100644
--- a/src/ol/format/wfsformat.js
+++ b/src/ol/format/wfsformat.js
@@ -13,6 +13,9 @@ goog.require('ol.xml');
/**
+ * @classdesc
+ * Feature format for reading and writing data in the WFS format.
+ *
* @constructor
* @param {olx.format.WFSOptions=} opt_options
* Optional configuration object.
diff --git a/src/ol/format/wmscapabilitiesformat.js b/src/ol/format/wmscapabilitiesformat.js
index 2f0aaf44d6..dc89d3acce 100644
--- a/src/ol/format/wmscapabilitiesformat.js
+++ b/src/ol/format/wmscapabilitiesformat.js
@@ -13,6 +13,9 @@ goog.require('ol.xml');
/**
+ * @classdesc
+ * Format for reading WMS capabilities data
+ *
* @constructor
* @extends {ol.format.XML}
* @todo api
diff --git a/src/ol/format/xmlfeatureformat.js b/src/ol/format/xmlfeatureformat.js
index 443484da42..4f6c4d9656 100644
--- a/src/ol/format/xmlfeatureformat.js
+++ b/src/ol/format/xmlfeatureformat.js
@@ -10,6 +10,9 @@ goog.require('ol.xml');
/**
+ * @classdesc
+ * Abstract base class for XML feature formats.
+ *
* @constructor
* @extends {ol.format.Feature}
*/
diff --git a/src/ol/format/xmlformat.js b/src/ol/format/xmlformat.js
index 28f1051273..111bf5f511 100644
--- a/src/ol/format/xmlformat.js
+++ b/src/ol/format/xmlformat.js
@@ -6,6 +6,9 @@ goog.require('ol.xml');
/**
+ * @classdesc
+ * Generic format for reading non-feature XML data
+ *
* @constructor
*/
ol.format.XML = function() {
diff --git a/src/ol/geolocation.js b/src/ol/geolocation.js
index 5e0387ab3b..1499412e4a 100644
--- a/src/ol/geolocation.js
+++ b/src/ol/geolocation.js
@@ -35,6 +35,7 @@ ol.GeolocationProperty = {
/**
+ * @classdesc
* Helper class for providing HTML5 Geolocation capabilities.
* The [Geolocation API](http://www.w3.org/TR/geolocation-API/)
* is used to locate a user's position.
diff --git a/src/ol/geom/circle.js b/src/ol/geom/circle.js
index 4b9d3bf2b5..37827b8849 100644
--- a/src/ol/geom/circle.js
+++ b/src/ol/geom/circle.js
@@ -9,6 +9,9 @@ goog.require('ol.geom.flat.deflate');
/**
+ * @classdesc
+ * Circle geometry.
+ *
* @constructor
* @extends {ol.geom.SimpleGeometry}
* @param {ol.geom.RawPoint} center Center.
diff --git a/src/ol/geom/geometry.js b/src/ol/geom/geometry.js
index a3390f2ac3..ce007e36ef 100644
--- a/src/ol/geom/geometry.js
+++ b/src/ol/geom/geometry.js
@@ -44,6 +44,9 @@ ol.geom.GeometryLayout = {
/**
+ * @classdesc
+ * Abstract base class for vector geometries.
+ *
* @constructor
* @extends {ol.Observable}
* @fires change Triggered when the geometry changes.
diff --git a/src/ol/geom/geometrycollection.js b/src/ol/geom/geometrycollection.js
index a1ea40b2a7..26aa3c6683 100644
--- a/src/ol/geom/geometrycollection.js
+++ b/src/ol/geom/geometrycollection.js
@@ -12,6 +12,9 @@ goog.require('ol.geom.GeometryType');
/**
+ * @classdesc
+ * An array of {@link ol.geom.Geometry} objects.
+ *
* @constructor
* @extends {ol.geom.Geometry}
* @param {Array.
=} opt_geometries Geometries.
diff --git a/src/ol/geom/linearring.js b/src/ol/geom/linearring.js
index a1f4d3e2d9..d542db3d4b 100644
--- a/src/ol/geom/linearring.js
+++ b/src/ol/geom/linearring.js
@@ -12,6 +12,9 @@ goog.require('ol.geom.flat.simplify');
/**
+ * @classdesc
+ * Linear ring geometry.
+ *
* @constructor
* @extends {ol.geom.SimpleGeometry}
* @param {ol.geom.RawLinearRing} coordinates Coordinates.
diff --git a/src/ol/geom/linestring.js b/src/ol/geom/linestring.js
index 8908784823..971776df9d 100644
--- a/src/ol/geom/linestring.js
+++ b/src/ol/geom/linestring.js
@@ -15,6 +15,9 @@ goog.require('ol.geom.flat.simplify');
/**
+ * @classdesc
+ * Linestring geometry.
+ *
* @constructor
* @extends {ol.geom.SimpleGeometry}
* @param {ol.geom.RawLineString} coordinates Coordinates.
diff --git a/src/ol/geom/multilinestring.js b/src/ol/geom/multilinestring.js
index d995034893..4fac9f888c 100644
--- a/src/ol/geom/multilinestring.js
+++ b/src/ol/geom/multilinestring.js
@@ -15,6 +15,9 @@ goog.require('ol.geom.flat.simplify');
/**
+ * @classdesc
+ * Multi-linestring geometry.
+ *
* @constructor
* @extends {ol.geom.SimpleGeometry}
* @param {ol.geom.RawMultiLineString} coordinates Coordinates.
diff --git a/src/ol/geom/multipoint.js b/src/ol/geom/multipoint.js
index c3a134d048..73267c60cc 100644
--- a/src/ol/geom/multipoint.js
+++ b/src/ol/geom/multipoint.js
@@ -13,6 +13,9 @@ goog.require('ol.math');
/**
+ * @classdesc
+ * Multi-point geometry.
+ *
* @constructor
* @extends {ol.geom.SimpleGeometry}
* @param {ol.geom.RawMultiPoint} coordinates Coordinates.
diff --git a/src/ol/geom/multipolygon.js b/src/ol/geom/multipolygon.js
index eadf8d7ea3..2515454375 100644
--- a/src/ol/geom/multipolygon.js
+++ b/src/ol/geom/multipolygon.js
@@ -20,6 +20,9 @@ goog.require('ol.geom.flat.simplify');
/**
+ * @classdesc
+ * Multi-polygon geometry.
+ *
* @constructor
* @extends {ol.geom.SimpleGeometry}
* @param {ol.geom.RawMultiPolygon} coordinates Coordinates.
diff --git a/src/ol/geom/point.js b/src/ol/geom/point.js
index 07347dbb6f..d2d628abe3 100644
--- a/src/ol/geom/point.js
+++ b/src/ol/geom/point.js
@@ -10,6 +10,9 @@ goog.require('ol.math');
/**
+ * @classdesc
+ * Point geometry.
+ *
* @constructor
* @extends {ol.geom.SimpleGeometry}
* @param {ol.geom.RawPoint} coordinates Coordinates.
diff --git a/src/ol/geom/polygon.js b/src/ol/geom/polygon.js
index be40bcc277..ee6c4b599f 100644
--- a/src/ol/geom/polygon.js
+++ b/src/ol/geom/polygon.js
@@ -20,6 +20,9 @@ goog.require('ol.geom.flat.simplify');
/**
+ * @classdesc
+ * Polygon geometry.
+ *
* @constructor
* @extends {ol.geom.SimpleGeometry}
* @param {ol.geom.RawPolygon} coordinates Coordinates.
diff --git a/src/ol/geom/simplegeometry.js b/src/ol/geom/simplegeometry.js
index ae61834ca7..e6708ee1fe 100644
--- a/src/ol/geom/simplegeometry.js
+++ b/src/ol/geom/simplegeometry.js
@@ -10,6 +10,9 @@ goog.require('ol.geom.flat.transform');
/**
+ * @classdesc
+ * Abstract base class for geometry objects
+ *
* @constructor
* @extends {ol.geom.Geometry}
* @todo api
diff --git a/src/ol/interaction/doubleclickzoominteraction.js b/src/ol/interaction/doubleclickzoominteraction.js
index d109f64994..57d94a62c4 100644
--- a/src/ol/interaction/doubleclickzoominteraction.js
+++ b/src/ol/interaction/doubleclickzoominteraction.js
@@ -10,6 +10,7 @@ goog.require('ol.interaction.Interaction');
/**
+ * @classdesc
* Allows the user to zoom by double-clicking on the map.
*
* @constructor
diff --git a/src/ol/interaction/draganddropinteraction.js b/src/ol/interaction/draganddropinteraction.js
index 35a2fc0ce8..9dc0d5faf1 100644
--- a/src/ol/interaction/draganddropinteraction.js
+++ b/src/ol/interaction/draganddropinteraction.js
@@ -16,6 +16,9 @@ goog.require('ol.proj');
/**
+ * @classdesc
+ * Handles input of vector data by drag and drop.
+ *
* @constructor
* @extends {ol.interaction.Interaction}
* @fires ol.interaction.DragAndDropEvent
diff --git a/src/ol/interaction/dragboxinteraction.js b/src/ol/interaction/dragboxinteraction.js
index c016f974b5..cea9b873e4 100644
--- a/src/ol/interaction/dragboxinteraction.js
+++ b/src/ol/interaction/dragboxinteraction.js
@@ -44,6 +44,7 @@ ol.DragBoxEventType = {
/**
+ * @classdesc
* Object representing a dragbox event.
*
* @param {string} type The event type.
@@ -69,6 +70,7 @@ goog.inherits(ol.DragBoxEvent, goog.events.Event);
/**
+ * @classdesc
* Allows the user to zoom the map by clicking and dragging on the map,
* normally combined with an {@link ol.events.condition} that limits
* it to when the shift key is held down.
diff --git a/src/ol/interaction/dragpaninteraction.js b/src/ol/interaction/dragpaninteraction.js
index 666ed0e4cd..962089f8be 100644
--- a/src/ol/interaction/dragpaninteraction.js
+++ b/src/ol/interaction/dragpaninteraction.js
@@ -14,7 +14,9 @@ goog.require('ol.interaction.Pointer');
/**
+ * @classdesc
* Allows the user to pan the map by dragging the map.
+ *
* @constructor
* @extends {ol.interaction.Pointer}
* @param {olx.interaction.DragPanOptions=} opt_options Options.
diff --git a/src/ol/interaction/dragrotateandzoominteraction.js b/src/ol/interaction/dragrotateandzoominteraction.js
index 9398710beb..1ab91ee565 100644
--- a/src/ol/interaction/dragrotateandzoominteraction.js
+++ b/src/ol/interaction/dragrotateandzoominteraction.js
@@ -15,6 +15,7 @@ goog.require('ol.interaction.Pointer');
/**
+ * @classdesc
* Allows the user to zoom and rotate the map by clicking and dragging
* on the map. By default, this interaction is limited to when the shift
* key is held down.
diff --git a/src/ol/interaction/dragrotateinteraction.js b/src/ol/interaction/dragrotateinteraction.js
index c45595040e..e04f84bba7 100644
--- a/src/ol/interaction/dragrotateinteraction.js
+++ b/src/ol/interaction/dragrotateinteraction.js
@@ -11,6 +11,7 @@ goog.require('ol.interaction.Pointer');
/**
+ * @classdesc
* Allows the user to rotate the map by clicking and dragging on the map,
* normally combined with an {@link ol.events.condition} that limits
* it to when the alt and shift keys are held down.
diff --git a/src/ol/interaction/dragzoominteraction.js b/src/ol/interaction/dragzoominteraction.js
index befa5d112e..4398d4f233 100644
--- a/src/ol/interaction/dragzoominteraction.js
+++ b/src/ol/interaction/dragzoominteraction.js
@@ -12,9 +12,11 @@ goog.require('ol.style.Style');
/**
+ * @classdesc
* Allows the user to zoom the map by clicking and dragging on the map,
* normally combined with an {@link ol.events.condition} that limits
* it to when the shift key is held down.
+ *
* @constructor
* @extends {ol.interaction.DragBox}
* @param {olx.interaction.DragZoomOptions=} opt_options Options.
diff --git a/src/ol/interaction/drawinteraction.js b/src/ol/interaction/drawinteraction.js
index f06df46bfd..e60f457dd5 100644
--- a/src/ol/interaction/drawinteraction.js
+++ b/src/ol/interaction/drawinteraction.js
@@ -66,7 +66,9 @@ goog.inherits(ol.DrawEvent, goog.events.Event);
/**
- * Interaction that allows drawing geometries
+ * @classdesc
+ * Interaction that allows drawing geometries.
+ *
* @constructor
* @extends {ol.interaction.Pointer}
* @fires ol.DrawEvent
diff --git a/src/ol/interaction/interaction.js b/src/ol/interaction/interaction.js
index 307b6e07d3..a46e1ce2ae 100644
--- a/src/ol/interaction/interaction.js
+++ b/src/ol/interaction/interaction.js
@@ -12,6 +12,13 @@ goog.require('ol.easing');
/**
+ * @classdesc
+ * User actions that change the state of the map. Some are similar to controls,
+ * but are not associated with a DOM element.
+ * For example, {@link ol.interaction.KeyboardZoom} is functionally the same as
+ * {@link ol.control.Zoom}, but triggered by a keyboard event not a button
+ * element event.
+ *
* @constructor
* @extends {ol.Observable}
*/
diff --git a/src/ol/interaction/interactiondefaults.js b/src/ol/interaction/interactiondefaults.js
index e98cf374ee..72a0b148b7 100644
--- a/src/ol/interaction/interactiondefaults.js
+++ b/src/ol/interaction/interactiondefaults.js
@@ -14,11 +14,11 @@ goog.require('ol.interaction.PinchZoom');
/**
- * This method is a convenience method to create a set of interactions
- * to be used with an {@link ol.Map}. Specific interactions can be excluded by
- * setting the appropriate option to false in the constructor options,
- * but the order of the interactions is fixed. If you want to specify a
- * different order for interactions, you will need to create your own
+ * @classdesc
+ * Set of interactions included in maps by default. Specific interactions can be
+ * excluded by setting the appropriate option to false in the constructor
+ * options, but the order of the interactions is fixed. If you want to specify
+ * a different order for interactions, you will need to create your own
* {@link ol.interaction.Interaction} instances and insert them into a
* {@link ol.Collection} in the order you want before creating your
* {@link ol.Map} instance. The default set of interactions, in sequence, is:
@@ -31,6 +31,7 @@ goog.require('ol.interaction.PinchZoom');
* * {@link ol.interaction.KeyboardZoom}
* * {@link ol.interaction.MouseWheelZoom}
* * {@link ol.interaction.DragZoom}
+ *
* @param {olx.interaction.DefaultsOptions=} opt_options Defaults options.
* @return {ol.Collection} A collection of interactions to be used with
* the ol.Map constructor's interactions option.
diff --git a/src/ol/interaction/keyboardpaninteraction.js b/src/ol/interaction/keyboardpaninteraction.js
index 2a2c4fac4c..6505d07b1a 100644
--- a/src/ol/interaction/keyboardpaninteraction.js
+++ b/src/ol/interaction/keyboardpaninteraction.js
@@ -16,6 +16,7 @@ goog.require('ol.interaction.Interaction');
/**
+ * @classdesc
* Allows the user to pan the map using keyboard arrows.
* Note that, although this interaction is by default included in maps,
* the keys can only be used when browser focus is on the element to which
@@ -25,6 +26,7 @@ goog.require('ol.interaction.Interaction');
* focus will have to be on, and returned to, this element if the keys are to
* function.
* See also {@link ol.interaction.KeyboardZoom}.
+ *
* @constructor
* @extends {ol.interaction.Interaction}
* @param {olx.interaction.KeyboardPanOptions=} opt_options Options.
diff --git a/src/ol/interaction/keyboardzoominteraction.js b/src/ol/interaction/keyboardzoominteraction.js
index 4087619fb8..1904917e98 100644
--- a/src/ol/interaction/keyboardzoominteraction.js
+++ b/src/ol/interaction/keyboardzoominteraction.js
@@ -11,6 +11,7 @@ goog.require('ol.interaction.Interaction');
/**
+ * @classdesc
* Allows the user to zoom the map using keyboard + and -.
* Note that, although this interaction is by default included in maps,
* the keys can only be used when browser focus is on the element to which
@@ -20,6 +21,7 @@ goog.require('ol.interaction.Interaction');
* focus will have to be on, and returned to, this element if the keys are to
* function.
* See also {@link ol.interaction.KeyboardPan}.
+ *
* @constructor
* @param {olx.interaction.KeyboardZoomOptions=} opt_options Options.
* @extends {ol.interaction.Interaction}
diff --git a/src/ol/interaction/modifyinteraction.js b/src/ol/interaction/modifyinteraction.js
index 2aff57d691..8a69cfb72c 100644
--- a/src/ol/interaction/modifyinteraction.js
+++ b/src/ol/interaction/modifyinteraction.js
@@ -37,6 +37,9 @@ ol.interaction.SegmentDataType;
/**
+ * @classdesc
+ * Interaction for modifying vector data.
+ *
* @constructor
* @extends {ol.interaction.Pointer}
* @param {olx.interaction.ModifyOptions} options Options.
diff --git a/src/ol/interaction/mousewheelzoominteraction.js b/src/ol/interaction/mousewheelzoominteraction.js
index 3ba6d97a59..631a6f4e25 100644
--- a/src/ol/interaction/mousewheelzoominteraction.js
+++ b/src/ol/interaction/mousewheelzoominteraction.js
@@ -13,7 +13,9 @@ goog.require('ol.interaction.Interaction');
/**
+ * @classdesc
* Allows the user to zoom the map by scrolling the mouse wheel.
+ *
* @constructor
* @extends {ol.interaction.Interaction}
* @param {olx.interaction.MouseWheelZoomOptions=} opt_options Options.
diff --git a/src/ol/interaction/pinchrotateinteraction.js b/src/ol/interaction/pinchrotateinteraction.js
index 30178accb1..7fcb20795f 100644
--- a/src/ol/interaction/pinchrotateinteraction.js
+++ b/src/ol/interaction/pinchrotateinteraction.js
@@ -13,8 +13,10 @@ goog.require('ol.interaction.Pointer');
/**
+ * @classdesc
* Allows the user to rotate the map by twisting with two fingers
* on a touch screen.
+ *
* @constructor
* @extends {ol.interaction.Pointer}
* @param {olx.interaction.PinchRotateOptions=} opt_options Options.
diff --git a/src/ol/interaction/pinchzoominteraction.js b/src/ol/interaction/pinchzoominteraction.js
index fc828b6ba6..52a86ec127 100644
--- a/src/ol/interaction/pinchzoominteraction.js
+++ b/src/ol/interaction/pinchzoominteraction.js
@@ -12,8 +12,10 @@ goog.require('ol.interaction.Pointer');
/**
+ * @classdesc
* Allows the user to zoom the map by pinching with two fingers
* on a touch screen.
+ *
* @constructor
* @extends {ol.interaction.Pointer}
* @param {olx.interaction.PinchZoomOptions=} opt_options Options.
diff --git a/src/ol/interaction/pointerinteraction.js b/src/ol/interaction/pointerinteraction.js
index 4f0744b078..9c5117a2dc 100644
--- a/src/ol/interaction/pointerinteraction.js
+++ b/src/ol/interaction/pointerinteraction.js
@@ -12,7 +12,9 @@ goog.require('ol.interaction.Interaction');
/**
- * Base class for pointer interactions.
+ * @classdesc
+ * Abstract base class for pointer interactions.
+ *
* @constructor
* @extends {ol.interaction.Interaction}
*/
diff --git a/src/ol/interaction/selectinteraction.js b/src/ol/interaction/selectinteraction.js
index 8c4f669f45..7697d8b9a1 100644
--- a/src/ol/interaction/selectinteraction.js
+++ b/src/ol/interaction/selectinteraction.js
@@ -15,6 +15,9 @@ goog.require('ol.interaction.Interaction');
/**
+ * @classdesc
+ * Handles selection of vector data.
+ *
* @constructor
* @extends {ol.interaction.Interaction}
* @param {olx.interaction.SelectOptions=} opt_options Options.
diff --git a/src/ol/layer/heatmaplayer.js b/src/ol/layer/heatmaplayer.js
index 141520319b..9b17e0f263 100644
--- a/src/ol/layer/heatmaplayer.js
+++ b/src/ol/layer/heatmaplayer.js
@@ -21,6 +21,9 @@ ol.layer.HeatmapLayerProperty = {
/**
+ * @classdesc
+ * Layer for rendering vector data as a heatmap.
+ *
* @constructor
* @extends {ol.layer.Vector}
* @fires ol.render.Event
diff --git a/src/ol/layer/imagelayer.js b/src/ol/layer/imagelayer.js
index 3bb117c739..1a99845ea9 100644
--- a/src/ol/layer/imagelayer.js
+++ b/src/ol/layer/imagelayer.js
@@ -5,6 +5,10 @@ goog.require('ol.layer.Layer');
/**
+ * @classdesc
+ * Server-rendered images that are available for arbitrary extents and
+ * resolutions.
+ *
* @constructor
* @extends {ol.layer.Layer}
* @fires ol.render.Event
diff --git a/src/ol/layer/layer.js b/src/ol/layer/layer.js
index 1d292f6931..e060ac2c5f 100644
--- a/src/ol/layer/layer.js
+++ b/src/ol/layer/layer.js
@@ -10,6 +10,11 @@ goog.require('ol.source.Source');
/**
+ * @classdesc
+ * Abstract base class. A visual representation of raster or vector map data.
+ * Layers group together those properties that pertain to how the data is to be
+ * displayed, irrespective of the source of that data.
+ *
* @constructor
* @extends {ol.layer.Base}
* @fires ol.render.Event
diff --git a/src/ol/layer/layerbase.js b/src/ol/layer/layerbase.js
index d05ca4ad13..4bf8a53119 100644
--- a/src/ol/layer/layerbase.js
+++ b/src/ol/layer/layerbase.js
@@ -41,7 +41,9 @@ ol.layer.LayerState;
/**
- * Base class for all layers.
+ * @classdesc
+ * Abstract base class for all layers.
+ *
* @constructor
* @extends {ol.Object}
* @param {olx.layer.BaseOptions} options Layer options.
diff --git a/src/ol/layer/layergroup.js b/src/ol/layer/layergroup.js
index 3be4cfab5c..26e31d94b7 100644
--- a/src/ol/layer/layergroup.js
+++ b/src/ol/layer/layergroup.js
@@ -25,6 +25,9 @@ ol.layer.GroupProperty = {
/**
+ * @classdesc
+ * A {@link ol.Collection} of layers that are handled together.
+ *
* @constructor
* @extends {ol.layer.Base}
* @fires change Triggered when the state of the source of any of the layers of
diff --git a/src/ol/layer/tilelayer.js b/src/ol/layer/tilelayer.js
index 1c1a816667..98ef732858 100644
--- a/src/ol/layer/tilelayer.js
+++ b/src/ol/layer/tilelayer.js
@@ -14,6 +14,10 @@ ol.layer.TileProperty = {
/**
+ * @classdesc
+ * For layer sources that provide pre-rendered, tiled images in grids that are
+ * organized by zoom levels for specific resolutions.
+ *
* @constructor
* @extends {ol.layer.Layer}
* @fires ol.render.Event
diff --git a/src/ol/layer/vectorlayer.js b/src/ol/layer/vectorlayer.js
index 5fbe2713b5..f413de79de 100644
--- a/src/ol/layer/vectorlayer.js
+++ b/src/ol/layer/vectorlayer.js
@@ -15,6 +15,8 @@ ol.layer.VectorProperty = {
/**
+ * @classdesc
+ * Vector data that is rendered client-side.
*
* @constructor
* @extends {ol.layer.Layer}
diff --git a/src/ol/object.js b/src/ol/object.js
index 4f6bdd38ba..4a8b34b38f 100644
--- a/src/ol/object.js
+++ b/src/ol/object.js
@@ -104,7 +104,17 @@ ol.ObjectAccessor.prototype.transform = function(from, to) {
/**
- * Base class implementing KVO (Key Value Observing).
+ * @classdesc
+ * Abstract base class from which all non-trivial classes inherit.
+ *
+ * It provides standardised get/set methods, and implements a form of
+ * Key Value Observing. Setting a value triggers a change event, and 2 objects
+ * can be bound together such that a change in one will automatically be
+ * reflected in the other.
+ *
+ * See {@link ol.dom.Input} for specific case of binding an object with an
+ * HTML element.
+ *
* @constructor
* @extends {ol.Observable}
* @param {Object.=} opt_values Values.
diff --git a/src/ol/observable.js b/src/ol/observable.js
index c921697314..6d68eb971e 100644
--- a/src/ol/observable.js
+++ b/src/ol/observable.js
@@ -7,9 +7,12 @@ goog.require('goog.events.EventType');
/**
+ * @classdesc
+ * Abstract base class.
* An event target providing convenient methods for listener registration
* and unregistration. A generic `change` event is always available through
* {@link ol.Observable#dispatchChangeEvent}.
+ *
* @constructor
* @extends {goog.events.EventTarget}
* @suppress {checkStructDictInheritance}
diff --git a/src/ol/overlay.js b/src/ol/overlay.js
index 2afe881d76..cce29a6e7d 100644
--- a/src/ol/overlay.js
+++ b/src/ol/overlay.js
@@ -46,7 +46,11 @@ ol.OverlayPositioning = {
/**
- * An element to show on top of the map, such as for a popup.
+ * @classdesc
+ * Like {@link ol.control.Control}, Overlays are visible widgets.
+ * Unlike Controls, they are not in a fixed position on the screen, but are tied
+ * to a geographical coordinate, so panning the map will move an Overlay but not
+ * a Control.
*
* Example:
*
diff --git a/src/ol/proj/epsg3857projection.js b/src/ol/proj/epsg3857projection.js
index e811a42ecc..9f8b4fd5f4 100644
--- a/src/ol/proj/epsg3857projection.js
+++ b/src/ol/proj/epsg3857projection.js
@@ -10,6 +10,9 @@ goog.require('ol.proj.Units');
/**
+ * @classdesc
+ * Projection object for web/spherical Mercator (EPSG:3857).
+ *
* @constructor
* @extends {ol.proj.Projection}
* @param {string} code Code.
diff --git a/src/ol/proj/epsg4326projection.js b/src/ol/proj/epsg4326projection.js
index c891790b14..ae5cb5e43e 100644
--- a/src/ol/proj/epsg4326projection.js
+++ b/src/ol/proj/epsg4326projection.js
@@ -7,6 +7,9 @@ goog.require('ol.proj.Units');
/**
+ * @classdesc
+ * Projection object for WGS84 geographic coordinates (EPSG:4326).
+ *
* @constructor
* @extends {ol.proj.Projection}
* @param {string} code Code.
diff --git a/src/ol/proj/proj.js b/src/ol/proj/proj.js
index bb0fc8e124..f8fb5651d9 100644
--- a/src/ol/proj/proj.js
+++ b/src/ol/proj/proj.js
@@ -57,6 +57,17 @@ ol.proj.METERS_PER_UNIT[ol.proj.Units.METERS] = 1;
/**
+ * @classdesc
+ * Class for coordinate transforms between coordinate systems. By default,
+ * OpenLayers ships with the ability to transform coordinates between
+ * geographic (EPSG:4326) and web or spherical mercator (EPSG:3857)
+ * coordinate reference systems.
+ *
+ * Additional transforms may be added by using the
+ * {@link http://proj4js.org/|proj4js} library. If the proj4js library is
+ * included, the method will work between any two coordinate
+ * reference systems with proj4js definitions.
+ *
* @constructor
* @param {olx.ProjectionOptions} options Projection options.
* @struct
diff --git a/src/ol/source/bingmapssource.js b/src/ol/source/bingmapssource.js
index f2aee053fd..fcdff37e86 100644
--- a/src/ol/source/bingmapssource.js
+++ b/src/ol/source/bingmapssource.js
@@ -17,6 +17,9 @@ goog.require('ol.tilegrid.XYZ');
/**
+ * @classdesc
+ * Layer source for Bing Maps tile data.
+ *
* @constructor
* @extends {ol.source.TileImage}
* @param {olx.source.BingMapsOptions} options Bing Maps options.
diff --git a/src/ol/source/geojsonsource.js b/src/ol/source/geojsonsource.js
index caa5b371dc..7f608c2d39 100644
--- a/src/ol/source/geojsonsource.js
+++ b/src/ol/source/geojsonsource.js
@@ -6,6 +6,9 @@ goog.require('ol.source.StaticVector');
/**
+ * @classdesc
+ * Static vector source in GeoJSON format
+ *
* @constructor
* @extends {ol.source.StaticVector}
* @fires ol.source.VectorEvent
diff --git a/src/ol/source/gpxsource.js b/src/ol/source/gpxsource.js
index cb9d6a012c..9ab36c3b8b 100644
--- a/src/ol/source/gpxsource.js
+++ b/src/ol/source/gpxsource.js
@@ -6,6 +6,9 @@ goog.require('ol.source.StaticVector');
/**
+ * @classdesc
+ * Static vector source in GPX format
+ *
* @constructor
* @extends {ol.source.StaticVector}
* @fires ol.source.VectorEvent
diff --git a/src/ol/source/igcsource.js b/src/ol/source/igcsource.js
index 12015841a5..90f6f4768f 100644
--- a/src/ol/source/igcsource.js
+++ b/src/ol/source/igcsource.js
@@ -6,6 +6,9 @@ goog.require('ol.source.StaticVector');
/**
+ * @classdesc
+ * Static vector source in IGC format
+ *
* @constructor
* @extends {ol.source.StaticVector}
* @fires ol.source.VectorEvent
diff --git a/src/ol/source/imagecanvassource.js b/src/ol/source/imagecanvassource.js
index 1104323d76..b5413867eb 100644
--- a/src/ol/source/imagecanvassource.js
+++ b/src/ol/source/imagecanvassource.js
@@ -8,6 +8,9 @@ goog.require('ol.source.Image');
/**
+ * @classdesc
+ * Base class for image sources where a canvas element is the image.
+ *
* @constructor
* @extends {ol.source.Image}
* @param {olx.source.ImageCanvasOptions} options
diff --git a/src/ol/source/imagesource.js b/src/ol/source/imagesource.js
index 33ffc78faa..6ad3dba0cb 100644
--- a/src/ol/source/imagesource.js
+++ b/src/ol/source/imagesource.js
@@ -22,6 +22,9 @@ ol.source.ImageOptions;
/**
+ * @classdesc
+ * Abstract base class for sources providing a single image.
+ *
* @constructor
* @extends {ol.source.Source}
* @param {ol.source.ImageOptions} options Single image source options.
diff --git a/src/ol/source/imagestaticsource.js b/src/ol/source/imagestaticsource.js
index 2023f54683..25baea1c23 100644
--- a/src/ol/source/imagestaticsource.js
+++ b/src/ol/source/imagestaticsource.js
@@ -8,6 +8,10 @@ goog.require('ol.source.Image');
/**
+ * @classdesc
+ * An image source for 'static', that is, non-georeferenced, images.
+ * See examples/static-image for example.
+ *
* @constructor
* @extends {ol.source.Image}
* @param {olx.source.ImageStaticOptions} options Options.
diff --git a/src/ol/source/imagevectorsource.js b/src/ol/source/imagevectorsource.js
index a0e8f13fb4..fb1375b62c 100644
--- a/src/ol/source/imagevectorsource.js
+++ b/src/ol/source/imagevectorsource.js
@@ -16,6 +16,7 @@ goog.require('ol.vec.Mat4');
/**
+ * @classdesc
* An image source whose images are canvas elements into which vector features
* read from a vector source (`ol.source.Vector`) are drawn. An
* `ol.source.ImageVector` object is to be used as the `source` of an image
diff --git a/src/ol/source/imagewmssource.js b/src/ol/source/imagewmssource.js
index cddef34393..d919061f1e 100644
--- a/src/ol/source/imagewmssource.js
+++ b/src/ol/source/imagewmssource.js
@@ -17,6 +17,9 @@ goog.require('ol.source.wms.ServerType');
/**
+ * @classdesc
+ * Source for WMS servers providing single, untiled images.
+ *
* @constructor
* @extends {ol.source.Image}
* @param {olx.source.ImageWMSOptions=} opt_options Options.
diff --git a/src/ol/source/kmlsource.js b/src/ol/source/kmlsource.js
index 2ad6d10c40..27b082e642 100644
--- a/src/ol/source/kmlsource.js
+++ b/src/ol/source/kmlsource.js
@@ -6,6 +6,9 @@ goog.require('ol.source.StaticVector');
/**
+ * @classdesc
+ * Static vector source in KML format
+ *
* @constructor
* @extends {ol.source.StaticVector}
* @fires ol.source.VectorEvent
diff --git a/src/ol/source/mapguidesource.js b/src/ol/source/mapguidesource.js
index b843fbe1e9..4c59052563 100644
--- a/src/ol/source/mapguidesource.js
+++ b/src/ol/source/mapguidesource.js
@@ -10,6 +10,9 @@ goog.require('ol.source.Image');
/**
+ * @classdesc
+ * Source for images from Mapguide servers
+ *
* @constructor
* @extends {ol.source.Image}
* @param {olx.source.MapGuideOptions} options Options.
diff --git a/src/ol/source/mapquestsource.js b/src/ol/source/mapquestsource.js
index 3705a00a5d..ffcf7d34d2 100644
--- a/src/ol/source/mapquestsource.js
+++ b/src/ol/source/mapquestsource.js
@@ -9,6 +9,9 @@ goog.require('ol.source.XYZ');
/**
+ * @classdesc
+ * Layer source for the MapQuest tile server.
+ *
* @constructor
* @extends {ol.source.XYZ}
* @param {olx.source.MapQuestOptions=} opt_options MapQuest options.
diff --git a/src/ol/source/osmsource.js b/src/ol/source/osmsource.js
index 9dac5d83cf..c8f269a1f1 100644
--- a/src/ol/source/osmsource.js
+++ b/src/ol/source/osmsource.js
@@ -7,6 +7,9 @@ goog.require('ol.source.XYZ');
/**
+ * @classdesc
+ * Layer source for the OpenStreetMap tile server.
+ *
* @constructor
* @extends {ol.source.XYZ}
* @param {olx.source.OSMOptions=} opt_options Open Street Map options.
diff --git a/src/ol/source/osmxmlsource.js b/src/ol/source/osmxmlsource.js
index 735af17fa1..5fac6b35df 100644
--- a/src/ol/source/osmxmlsource.js
+++ b/src/ol/source/osmxmlsource.js
@@ -6,6 +6,9 @@ goog.require('ol.source.StaticVector');
/**
+ * @classdesc
+ * Static vector source in OSMXML format
+ *
* @constructor
* @extends {ol.source.StaticVector}
* @fires ol.source.VectorEvent
diff --git a/src/ol/source/source.js b/src/ol/source/source.js
index e9435a2207..e2d2f32b13 100644
--- a/src/ol/source/source.js
+++ b/src/ol/source/source.js
@@ -33,6 +33,9 @@ ol.source.SourceOptions;
/**
+ * @classdesc
+ * Abstract base class for {@link ol.layer.Layer} sources.
+ *
* @constructor
* @extends {ol.Observable}
* @fires change Triggered when the state of the source changes.
diff --git a/src/ol/source/stamensource.js b/src/ol/source/stamensource.js
index 9f7e00aab0..4148c56588 100644
--- a/src/ol/source/stamensource.js
+++ b/src/ol/source/stamensource.js
@@ -79,6 +79,9 @@ ol.source.StamenProviderConfig = {
/**
+ * @classdesc
+ * Layer source for the Stamen tile server.
+ *
* @constructor
* @extends {ol.source.XYZ}
* @param {olx.source.StamenOptions} options Stamen options.
diff --git a/src/ol/source/tileimagesource.js b/src/ol/source/tileimagesource.js
index 13f73ff660..e66c4115fd 100644
--- a/src/ol/source/tileimagesource.js
+++ b/src/ol/source/tileimagesource.js
@@ -14,6 +14,9 @@ goog.require('ol.source.Tile');
/**
+ * @classdesc
+ * Base class for sources providing images divided into a tile grid.
+ *
* @constructor
* @extends {ol.source.Tile}
* @param {olx.source.TileImageOptions} options Image tile options.
diff --git a/src/ol/source/tilejsonsource.js b/src/ol/source/tilejsonsource.js
index ffbda97f91..079f854970 100644
--- a/src/ol/source/tilejsonsource.js
+++ b/src/ol/source/tilejsonsource.js
@@ -22,6 +22,9 @@ goog.require('ol.tilegrid.XYZ');
/**
+ * @classdesc
+ * Layer source for tile data in TileJSON format.
+ *
* @constructor
* @extends {ol.source.TileImage}
* @param {olx.source.TileJSONOptions} options TileJSON options.
diff --git a/src/ol/source/tilesource.js b/src/ol/source/tilesource.js
index d030568e6c..fea407a0d0 100644
--- a/src/ol/source/tilesource.js
+++ b/src/ol/source/tilesource.js
@@ -24,6 +24,9 @@ ol.source.TileOptions;
/**
+ * @classdesc
+ * Abstract base class for sources providing images divided into a tile grid.
+ *
* @constructor
* @extends {ol.source.Source}
* @param {ol.source.TileOptions} options Tile source options.
diff --git a/src/ol/source/tilewmssource.js b/src/ol/source/tilewmssource.js
index e5f39a3b9b..7877c95511 100644
--- a/src/ol/source/tilewmssource.js
+++ b/src/ol/source/tilewmssource.js
@@ -21,6 +21,9 @@ goog.require('ol.source.wms.ServerType');
/**
+ * @classdesc
+ * Layer source for tile data from WMS servers.
+ *
* @constructor
* @extends {ol.source.TileImage}
* @param {olx.source.TileWMSOptions=} opt_options Tile WMS options.
diff --git a/src/ol/source/topojsonsource.js b/src/ol/source/topojsonsource.js
index 1a67265eb5..d4726a9377 100644
--- a/src/ol/source/topojsonsource.js
+++ b/src/ol/source/topojsonsource.js
@@ -6,6 +6,9 @@ goog.require('ol.source.StaticVector');
/**
+ * @classdesc
+ * Static vector source in TopoJSON format
+ *
* @constructor
* @extends {ol.source.StaticVector}
* @fires ol.source.VectorEvent
diff --git a/src/ol/source/vectorsource.js b/src/ol/source/vectorsource.js
index 03b4ffb3b6..245e1ea005 100644
--- a/src/ol/source/vectorsource.js
+++ b/src/ol/source/vectorsource.js
@@ -39,6 +39,9 @@ ol.source.VectorEventType = {
/**
+ * @classdesc
+ * Base class for vector sources.
+ *
* @constructor
* @extends {ol.source.Source}
* @fires ol.source.VectorEvent
diff --git a/src/ol/source/wmtssource.js b/src/ol/source/wmtssource.js
index 37684a67a0..975039994a 100644
--- a/src/ol/source/wmtssource.js
+++ b/src/ol/source/wmtssource.js
@@ -26,6 +26,9 @@ ol.source.WMTSRequestEncoding = {
/**
+ * @classdesc
+ * Layer source for tile data from WMTS servers.
+ *
* @constructor
* @extends {ol.source.TileImage}
* @param {olx.source.WMTSOptions} options WMTS options.
diff --git a/src/ol/source/xyzsource.js b/src/ol/source/xyzsource.js
index 6e365e0662..db1591482b 100644
--- a/src/ol/source/xyzsource.js
+++ b/src/ol/source/xyzsource.js
@@ -9,6 +9,9 @@ goog.require('ol.tilegrid.XYZ');
/**
+ * @classdesc
+ * Layer source for tile data with URLs in a set XYZ format.
+ *
* @constructor
* @extends {ol.source.TileImage}
* @param {olx.source.XYZOptions} options XYZ options.
diff --git a/src/ol/source/zoomifysource.js b/src/ol/source/zoomifysource.js
index 1545f1061b..a642286d83 100644
--- a/src/ol/source/zoomifysource.js
+++ b/src/ol/source/zoomifysource.js
@@ -23,6 +23,9 @@ ol.source.ZoomifyTierSizeCalculation = {
/**
+ * @classdesc
+ * Layer source for tile data in Zoomify format.
+ *
* @constructor
* @extends {ol.source.TileImage}
* @param {olx.source.ZoomifyOptions=} opt_options Options.
diff --git a/src/ol/style/circlestyle.js b/src/ol/style/circlestyle.js
index 564dbd5edd..380a61bc45 100644
--- a/src/ol/style/circlestyle.js
+++ b/src/ol/style/circlestyle.js
@@ -12,6 +12,9 @@ goog.require('ol.style.Stroke');
/**
+ * @classdesc
+ * Set circle style for vector features.
+ *
* @constructor
* @param {olx.style.CircleOptions=} opt_options Options.
* @extends {ol.style.Image}
diff --git a/src/ol/style/fillstyle.js b/src/ol/style/fillstyle.js
index f480d17893..9d58472c1e 100644
--- a/src/ol/style/fillstyle.js
+++ b/src/ol/style/fillstyle.js
@@ -5,6 +5,9 @@ goog.require('ol.color');
/**
+ * @classdesc
+ * Set fill style for vector features.
+ *
* @constructor
* @param {olx.style.FillOptions=} opt_options Options.
* @todo api
diff --git a/src/ol/style/iconstyle.js b/src/ol/style/iconstyle.js
index 6de655a9b4..bfbd60e04a 100644
--- a/src/ol/style/iconstyle.js
+++ b/src/ol/style/iconstyle.js
@@ -35,6 +35,9 @@ ol.style.IconAnchorUnits = {
/**
+ * @classdesc
+ * Set icon style for vector features.
+ *
* @constructor
* @param {olx.style.IconOptions=} opt_options Options.
* @extends {ol.style.Image}
diff --git a/src/ol/style/imagestyle.js b/src/ol/style/imagestyle.js
index 787f308f4e..edc3214f71 100644
--- a/src/ol/style/imagestyle.js
+++ b/src/ol/style/imagestyle.js
@@ -26,6 +26,9 @@ ol.style.ImageOptions;
/**
+ * @classdesc
+ * Set image style for vector features.
+ *
* @constructor
* @param {ol.style.ImageOptions} options Options.
*/
diff --git a/src/ol/style/strokestyle.js b/src/ol/style/strokestyle.js
index 861a155c93..ecb18b2940 100644
--- a/src/ol/style/strokestyle.js
+++ b/src/ol/style/strokestyle.js
@@ -5,6 +5,9 @@ goog.require('ol.color');
/**
+ * @classdesc
+ * Set stroke style for vector features.
+ *
* @constructor
* @param {olx.style.StrokeOptions=} opt_options Options.
* @todo api
diff --git a/src/ol/style/style.js b/src/ol/style/style.js
index c6bc585fcc..1b89d1378a 100644
--- a/src/ol/style/style.js
+++ b/src/ol/style/style.js
@@ -6,6 +6,9 @@ goog.require('ol.style.Image');
/**
+ * @classdesc
+ * Base class for vector feature rendering styles.
+ *
* @constructor
* @param {olx.style.StyleOptions=} opt_options Style options.
* @todo api
diff --git a/src/ol/style/textstyle.js b/src/ol/style/textstyle.js
index 2ff02394b3..4037074ae6 100644
--- a/src/ol/style/textstyle.js
+++ b/src/ol/style/textstyle.js
@@ -3,6 +3,9 @@ goog.provide('ol.style.Text');
/**
+ * @classdesc
+ * Set text style for vector features.
+ *
* @constructor
* @param {olx.style.TextOptions=} opt_options Options.
* @todo api
diff --git a/src/ol/tilegrid/tilegrid.js b/src/ol/tilegrid/tilegrid.js
index 5e626aeff3..dccaae5723 100644
--- a/src/ol/tilegrid/tilegrid.js
+++ b/src/ol/tilegrid/tilegrid.js
@@ -15,6 +15,10 @@ goog.require('ol.proj.Units');
/**
+ * @classdesc
+ * Base class for setting the grid pattern for sources accessing tiled-image
+ * servers.
+ *
* @constructor
* @param {olx.tilegrid.TileGridOptions} options Tile grid options.
* @struct
diff --git a/src/ol/tilegrid/wmtstilegrid.js b/src/ol/tilegrid/wmtstilegrid.js
index 903ba96483..9e28151d29 100644
--- a/src/ol/tilegrid/wmtstilegrid.js
+++ b/src/ol/tilegrid/wmtstilegrid.js
@@ -8,6 +8,9 @@ goog.require('ol.tilegrid.TileGrid');
/**
+ * @classdesc
+ * Set the grid pattern for sources accessing WMTS tiled-image servers.
+ *
* @constructor
* @extends {ol.tilegrid.TileGrid}
* @param {olx.tilegrid.WMTSOptions} options WMTS options.
diff --git a/src/ol/tilegrid/xyztilegrid.js b/src/ol/tilegrid/xyztilegrid.js
index a60a5bfdb9..8168bf4ba4 100644
--- a/src/ol/tilegrid/xyztilegrid.js
+++ b/src/ol/tilegrid/xyztilegrid.js
@@ -11,6 +11,9 @@ goog.require('ol.tilegrid.TileGrid');
/**
+ * @classdesc
+ * Set the grid pattern for sources accessing XYZ tiled-image servers.
+ *
* @constructor
* @extends {ol.tilegrid.TileGrid}
* @param {olx.tilegrid.XYZOptions} options XYZ options.
diff --git a/src/ol/tilegrid/zoomifytilegrid.js b/src/ol/tilegrid/zoomifytilegrid.js
index 43e5469282..036acdc2ff 100644
--- a/src/ol/tilegrid/zoomifytilegrid.js
+++ b/src/ol/tilegrid/zoomifytilegrid.js
@@ -8,6 +8,9 @@ goog.require('ol.tilegrid.TileGrid');
/**
+ * @classdesc
+ * Set the grid pattern for sources accessing Zoomify tiled-image servers.
+ *
* @constructor
* @extends {ol.tilegrid.TileGrid}
* @param {olx.tilegrid.ZoomifyOptions=} opt_options Options.
diff --git a/src/ol/view.js b/src/ol/view.js
index ffee86ba59..c0ae01df2e 100644
--- a/src/ol/view.js
+++ b/src/ol/view.js
@@ -18,6 +18,15 @@ ol.ViewHint = {
/**
+ * @classdesc
+ * Abstract base class for views.
+ * Maps can be viewed from different perspectives: 2D or 3D, or at different
+ * angles. To enable this, properties determining projection, position, angle or
+ * rotation cannot be part of the map itself, but of the particular view of that
+ * map. This is similar to the concept of Camera in Google Earth or KML.
+ *
+ * Only {@link ol.View2D} is currently implemented.
+ *
* @constructor
* @implements {ol.IView}
* @extends {ol.Object}