diff --git a/examples/mobile-wmts-vienna.css b/examples/mobile-wmts-vienna.css index 48e83d8372..82af86790b 100644 --- a/examples/mobile-wmts-vienna.css +++ b/examples/mobile-wmts-vienna.css @@ -30,12 +30,27 @@ html, body, #map { perspective: 1000; } +/* Tile fade animation */ .olLayerGrid .olTileImage { -webkit-transition: opacity 0.2s linear; -moz-transition: opacity 0.2s linear; -o-transition: opacity 0.2s linear; transition: opacity 0.2s linear; } + +/* Zoom Box */ +.olHandlerBoxZoomBox { + border: 2px solid red; + position: absolute; + background-color: white; + opacity: 0.50; + font-size: 1px; + filter: alpha(opacity=50); +} +.olDrawBox { + cursor: crosshair; +} + div.olControlAttribution { position: absolute; font-size: 10px; diff --git a/examples/mobile-wmts-vienna.js b/examples/mobile-wmts-vienna.js index ded4d00f83..ca28f1e1e9 100644 --- a/examples/mobile-wmts-vienna.js +++ b/examples/mobile-wmts-vienna.js @@ -46,49 +46,53 @@ var map; // Geolocate control for the Locate button - the locationupdated handler // draws a cross at the location and a circle showing the accuracy radius. - zoomPanel.addControls([ - new OpenLayers.Control.Geolocate({ - type: OpenLayers.Control.TYPE_TOGGLE, - geolocationOptions: { - enableHighAccuracy: false, - maximumAge: 0, - timeout: 7000 + var geolocate = new OpenLayers.Control.Geolocate({ + type: OpenLayers.Control.TYPE_TOGGLE, + bind: false, + watch: true, + geolocationOptions: { + enableHighAccuracy: false, + maximumAge: 0, + timeout: 7000 + }, + eventListeners: { + activate: function() { + map.addLayer(vector); }, - eventListeners: { - activate: function() { - map.addLayer(vector); - }, - deactivate: function() { - map.removeLayer(vector); - vector.removeAllFeatures(); - }, - locationupdated: function(e) { - vector.removeAllFeatures(); - vector.addFeatures([ - new OpenLayers.Feature.Vector(e.point, null, { - graphicName: 'cross', + deactivate: function() { + map.removeLayer(vector); + vector.removeAllFeatures(); + }, + locationupdated: function(e) { + vector.removeAllFeatures(); + vector.addFeatures([ + new OpenLayers.Feature.Vector(e.point, null, { + graphicName: 'cross', + strokeColor: '#f00', + strokeWidth: 2, + fillOpacity: 0, + pointRadius: 10 + }), + new OpenLayers.Feature.Vector( + OpenLayers.Geometry.Polygon.createRegularPolygon( + new OpenLayers.Geometry.Point(e.point.x, e.point.y), + e.position.coords.accuracy / 2, 50, 0 + ), null, { + fillOpacity: 0.1, + fillColor: '#000', strokeColor: '#f00', - strokeWidth: 2, - fillOpacity: 0, - pointRadius: 10 - }), - new OpenLayers.Feature.Vector( - OpenLayers.Geometry.Polygon.createRegularPolygon( - new OpenLayers.Geometry.Point(e.point.x, e.point.y), - e.position.coords.accuracy / 2, 50, 0 - ), null, { - fillOpacity: 0.1, - fillColor: '#000', - strokeColor: '#f00', - strokeOpacity: 0.6 - } - ) - ]); - map.zoomToExtent(vector.getDataExtent()); - } + strokeOpacity: 0.6 + } + ) + ]); + map.zoomToExtent(vector.getDataExtent()); } - }) - ]); + } + }) + zoomPanel.addControls([geolocate]); + + // Fallback layer when outside Vienna + var osm = new OpenLayers.Layer.OSM(); // Map with navigation controls optimized for touch devices map = new OpenLayers.Map({ @@ -96,17 +100,11 @@ var map; theme: null, projection: "EPSG:3857", units: "m", - restrictedExtent: [1799448.394855, 6124949.747770, 1848250.442089, 6162571.828177], maxResolution: 38.21851413574219, numZoomLevels: 8, tileManager: new OpenLayers.TileManager(), controls: [ - new OpenLayers.Control.Navigation({ - dragPanOptions: { - enableKinetic: true - }, - zoomBoxEnabled: false - }), + new OpenLayers.Control.Navigation(), new OpenLayers.Control.Attribution(), zoomPanel, layerPanel @@ -116,6 +114,13 @@ var map; // update anchor for permalinks var ctr = map.getCenter(); window.location.hash = "x="+ctr.lon+"&y="+ctr.lat+"&z="+map.getZoom(); + // switch to OSM when outside Vienna + if (!map.getExtent().intersectsBounds(fmzk.tileFullExtent)) { + if (map.baseLayer !== osm) { + map.addLayer(osm); + map.setBaseLayer(osm); + } + } } } }); @@ -130,8 +135,7 @@ var map; zoomOffset: 12, requestEncoding: "REST", matrixSet: "google3857", - attribution: 'Datenquelle: Stadt Wien - data.wien.gv.at', - transitionEffect: "resize" + attribution: 'Datenquelle: Stadt Wien - data.wien.gv.at' }; // The WMTS layers we're going to add