Create gmap example for a 2D/3D transition like Google Map.
Gmap: Limiting the WMS overlay max zoom level to 15

Limiting could save network resources.
Gmap example, loading of 3D GPX

51 meters are added to the Z coordinate in order to fix the gap between
the geoid and the ellipsoid reference of heights. A few more meters are
added to prevent the line segments to be hidden by the terrain.
Gmap: Use olcs synchronizer.
Gmap: use signed angle computation and angle to zenith.
Gmap: Using reprojected png WMS
Gmap: 2D / 3D tilting à la google map

- Bottom center is fixed;
- Cycling amongst three tilt levels (zenith, small, large);
- Back to zenith when camera direction does not intersect globe;
- Failure when bottom center does not intersect globe.

Limitations:
- when tilting, intersecting a mountain change the rotation pivot;
- not using requestAnimationFrame yet.
Gmap: stacked 3D transition.
Gmap: add POI layer.
Gmap: Add two POI examples.
Gmap: Use fredj (tiled) service for gmap example.
Gmap: Use transparent canvas for low zoom levels (need Cesium hack).

diff --git a/Source/Scene/WebMapServiceImageryProvider.js b/Source/Scene/WebMapServiceImageryProvider.js
index 3fd36ed..dab6b75 100644
--- a/Source/Scene/WebMapServiceImageryProvider.js
+++ b/Source/Scene/WebMapServiceImageryProvider.js
@@ -147,6 +147,7 @@ define([
         this._tileHeight = defaultValue(options.tileHeight, 256);
         this._minimumLevel = defaultValue(options.minimumLevel, 0);
         this._maximumLevel = options.maximumLevel; // undefined means no limit
+        this._minimumRetrievingLevel = defaultValue(options.minimumRetrievingLevel, 0);

         this._rectangle = defaultValue(options.rectangle, Rectangle.MAX_VALUE);
         this._tilingScheme = defined(options.tilingScheme) ? options.tilingScheme : new GeographicTilingScheme();
@@ -392,6 +393,16 @@ define([
         return undefined;
     };

+    var transparentCanvas = function() {
+      var canvas = document.createElement('canvas');
+      var ctx = canvas.getContext('2d');
+      ctx.width = 256;
+      ctx.height = 256;
+      ctx.fillStyle = 'rgba(255, 0, 0, 0)';
+      ctx.fillRect(0, 0, 255, 255);
+      return canvas;
+    }();
+
     /**
      * Requests the image for a given tile.  This function should
      * not be called before {@link WebMapServiceImageryProvider#ready} returns true.
@@ -413,6 +424,10 @@ define([
         }
         //>>includeEnd('debug');

+        if (level < this._minimumRetrievingLevel) {
+          return transparentCanvas;
+        }
+
         var url = buildImageUrl(this, x, y, level);
         return ImageryProvider.loadImage(this, url);
     };
Gmap: use 3D warmup.
Gmap: Always switch to 2D when going back to zenith.
Gmap: use the maproxy grid in 2D.
Gmap: view ol extent.
Gmap: auto warm up after 2.5s.
Moved Swiss projection specific code to its own file.
Gmap: using transition functions from core
Improve camera elevation and map resolution computations.

Previous distance was wrong. For example, once loaded, I got 500m for the visible
meters between (canvas height) in spite of 3km.