[OpenLayers-Commits] r11337 - in sandbox/bartvde/sencha/openlayers:
. examples examples/img lib lib/OpenLayers
lib/OpenLayers/Control lib/OpenLayers/Handler
lib/OpenLayers/Layer tests tests/BaseTypes tests/Control
tests/Handler tests/Layer tools
commits-20090109 at openlayers.org
commits-20090109 at openlayers.org
Wed Feb 23 10:46:23 EST 2011
Author: bartvde
Date: 2011-02-23 07:46:23 -0800 (Wed, 23 Feb 2011)
New Revision: 11337
Added:
sandbox/bartvde/sencha/openlayers/examples/browser.html
sandbox/bartvde/sencha/openlayers/examples/browser.js
sandbox/bartvde/sencha/openlayers/examples/geolocation.html
sandbox/bartvde/sencha/openlayers/examples/geolocation.js
sandbox/bartvde/sencha/openlayers/examples/img/
sandbox/bartvde/sencha/openlayers/examples/img/marker_shadow.png
sandbox/bartvde/sencha/openlayers/examples/img/mobile-zoombar.png
sandbox/bartvde/sencha/openlayers/examples/img/popupMatrix.jpg
sandbox/bartvde/sencha/openlayers/examples/img/small.jpg
sandbox/bartvde/sencha/openlayers/examples/img/thinlong.jpg
sandbox/bartvde/sencha/openlayers/examples/img/widelong.jpg
sandbox/bartvde/sencha/openlayers/examples/img/wideshort.jpg
sandbox/bartvde/sencha/openlayers/examples/kinetic.html
sandbox/bartvde/sencha/openlayers/examples/kinetic.js
sandbox/bartvde/sencha/openlayers/examples/mobile-navigation.html
sandbox/bartvde/sencha/openlayers/examples/mobile-navigation.js
sandbox/bartvde/sencha/openlayers/examples/style.mobile.css
sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/Geolocate.js
sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Kinetic.js
sandbox/bartvde/sencha/openlayers/tests/Control/Geolocate.html
sandbox/bartvde/sencha/openlayers/tests/Kinetic.html
Removed:
sandbox/bartvde/sencha/openlayers/examples/img/marker_shadow.png
sandbox/bartvde/sencha/openlayers/examples/img/mobile-zoombar.png
sandbox/bartvde/sencha/openlayers/examples/img/popupMatrix.jpg
sandbox/bartvde/sencha/openlayers/examples/img/small.jpg
sandbox/bartvde/sencha/openlayers/examples/img/thinlong.jpg
sandbox/bartvde/sencha/openlayers/examples/img/widelong.jpg
sandbox/bartvde/sencha/openlayers/examples/img/wideshort.jpg
sandbox/bartvde/sencha/openlayers/examples/marker_shadow.png
sandbox/bartvde/sencha/openlayers/examples/mobile-touchnavigation-control.html
sandbox/bartvde/sencha/openlayers/examples/popupMatrix.jpg
sandbox/bartvde/sencha/openlayers/examples/small.jpg
sandbox/bartvde/sencha/openlayers/examples/thinlong.jpg
sandbox/bartvde/sencha/openlayers/examples/widelong.jpg
sandbox/bartvde/sencha/openlayers/examples/wideshort.jpg
Modified:
sandbox/bartvde/sencha/openlayers/
sandbox/bartvde/sencha/openlayers/examples/controls.html
sandbox/bartvde/sencha/openlayers/examples/example-list.html
sandbox/bartvde/sencha/openlayers/examples/marker-shadow.html
sandbox/bartvde/sencha/openlayers/examples/mobile-jq.html
sandbox/bartvde/sencha/openlayers/examples/mobile-sencha.html
sandbox/bartvde/sencha/openlayers/examples/mobile.html
sandbox/bartvde/sencha/openlayers/examples/mobile.js
sandbox/bartvde/sencha/openlayers/examples/popupMatrix.html
sandbox/bartvde/sencha/openlayers/examples/style.css
sandbox/bartvde/sencha/openlayers/lib/OpenLayers.js
sandbox/bartvde/sencha/openlayers/lib/OpenLayers/BaseTypes.js
sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/DragPan.js
sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/PanZoomBar.js
sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/TouchNavigation.js
sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Handler/Click.js
sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Layer/Grid.js
sandbox/bartvde/sencha/openlayers/tests/BaseTypes/Bounds.html
sandbox/bartvde/sencha/openlayers/tests/BaseTypes/LonLat.html
sandbox/bartvde/sencha/openlayers/tests/BaseTypes/Pixel.html
sandbox/bartvde/sencha/openlayers/tests/Control/PanZoom.html
sandbox/bartvde/sencha/openlayers/tests/Control/PanZoomBar.html
sandbox/bartvde/sencha/openlayers/tests/Control/Scale.html
sandbox/bartvde/sencha/openlayers/tests/Control/TouchNavigation.html
sandbox/bartvde/sencha/openlayers/tests/Events.html
sandbox/bartvde/sencha/openlayers/tests/Handler/Click.html
sandbox/bartvde/sencha/openlayers/tests/Handler/Drag.html
sandbox/bartvde/sencha/openlayers/tests/Layer/EventPane.html
sandbox/bartvde/sencha/openlayers/tests/Layer/Grid.html
sandbox/bartvde/sencha/openlayers/tests/list-tests.html
sandbox/bartvde/sencha/openlayers/tests/run-tests.html
sandbox/bartvde/sencha/openlayers/tools/exampleparser.py
Log:
merge sandbox with trunk
Property changes on: sandbox/bartvde/sencha/openlayers
___________________________________________________________________
Modified: svn:mergeinfo
- /sandbox/roberthl/openlayers:9745-9748
/trunk/openlayers:11179-11209
+ /sandbox/roberthl/openlayers:9745-9748
/trunk/openlayers:11179-11209,11211-11335
Copied: sandbox/bartvde/sencha/openlayers/examples/browser.html (from rev 11335, trunk/openlayers/examples/browser.html)
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/browser.html (rev 0)
+++ sandbox/bartvde/sencha/openlayers/examples/browser.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <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;
+ }
+ </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>
+</body>
+</html>
Copied: sandbox/bartvde/sencha/openlayers/examples/browser.js (from rev 11335, trunk/openlayers/examples/browser.js)
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/browser.js (rev 0)
+++ sandbox/bartvde/sencha/openlayers/examples/browser.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,52 @@
+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>";
+}
+
Modified: sandbox/bartvde/sencha/openlayers/examples/controls.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/controls.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/examples/controls.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -27,23 +27,29 @@
});
- var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
+ var ol_wms = new OpenLayers.Layer.WMS(
+ "OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0",
- {layers: 'basic'} );
- var jpl_wms = new OpenLayers.Layer.WMS( "NASA Global Mosaic",
- "http://t1.hypercube.telascience.org/cgi-bin/landsat7",
- {layers: "landsat7"});
- var dm_wms = new OpenLayers.Layer.WMS( "DM Solutions Demo",
+ {layers: 'basic'}
+ );
+
+ var gwc = new OpenLayers.Layer.WMS(
+ "Global Imagery",
+ "http://maps.opengeo.org/geowebcache/service/wms",
+ {layers: "bluemarble"},
+ {tileOrigin: new OpenLayers.LonLat(-180, -90)}
+ );
+ var dm_wms = new OpenLayers.Layer.WMS(
+ "DM Solutions Demo",
"http://www2.dmsolutions.ca/cgi-bin/mswms_gmap",
{layers: "bathymetry,land_fn,park,drain_fn,drainage," +
"prov_bound,fedlimit,rail,road,popplace",
- transparent: "true", format: "image/png" });
+ transparent: "true", format: "image/png"},
+ {visibility: false}
+ );
- jpl_wms.setVisibility(false);
- dm_wms.setVisibility(false);
-
- map.addLayers([ol_wms, jpl_wms, dm_wms]);
- if (!map.getCenter()) map.zoomToMaxExtent();
+ map.addLayers([ol_wms, gwc, dm_wms]);
+ map.zoomToMaxExtent();
}
</script>
</head>
@@ -58,8 +64,8 @@
Attach zooming, panning, layer switcher, overview map, and permalink map controls to an OpenLayers window.
</p>
- <a style="float:right" href="" id="permalink">Permalink</a>
<div id="map" class="smallmap"></div>
+ <a href="#" id="permalink">Permalink</a>
<div id="docs"></div>
</body>
Modified: sandbox/bartvde/sencha/openlayers/examples/example-list.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/example-list.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/examples/example-list.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -14,14 +14,24 @@
<link rel="stylesheet" href="style.css" type="text/css" />
<style type="text/css">
html, body {
- height: 100%;
- overflow: hidden;
margin: 0;
padding: 0;
line-height: 1.25em;
}
+ #logo {
+ text-shadow: 2px 2px 3px gray;
+ color: white;
+ vertical-align: middle;
+ position: absolute;
+ top: 5px;
+ left: 5px;
+ font-size: 34px;
+ font-family: "Trebuchet MS",Helvetica,Arial,sans-serif;
+ }
+ #logo img {
+ vertical-align: middle;
+ }
.ex_container{
- border-bottom: 1px solid #cccccc;
}
.ex_container a {
text-decoration: none;
@@ -57,20 +67,18 @@
display: none;
}
#toc {
- width: 30%;
+ width: 100%;
height: 100%;
}
#filter {
+ position: fixed;
+ text-align: center;
top: 0px;
- height: 50px;
- padding: 10px 1em 10px 1em;
+ background: #9D9FA1;
+ width: 100%;
+ padding: 1.3em 0;
}
#examples {
- border-top: 1px solid #cccccc;
- position: absolute;
- width: 30%;
- top: 70px;
- bottom: 0px;
overflow: auto;
list-style: none;
margin: 0;
@@ -80,12 +88,21 @@
list-style: none;
margin: 0;
padding: 0;
+ margin-top: 4em;
}
#examples ul li {
- display: block;
- margin: 0;
+ display: inline;
+ float: left;
+ width: 350px;
+ margin: 10px 0 0 10px;
padding: 0;
+ border: 1px solid #ddd;
+ border-radius: 3px;
}
+ #examples .mainlink {
+ height: 8em;
+ overflow: hidden;
+ }
#exwin {
position: absolute;
top: 0;
@@ -96,6 +113,26 @@
border-left: 1px solid #cccccc;
margin: 0;
}
+ @media only screen and (max-width: 600px) {
+ #examples ul {
+ margin-top: 100px;
+ }
+ #filter {
+ padding-top: 50px;
+ }
+ #examples ul li {
+ margin-left: 0;
+ border-radius: 0;
+ border-width: 1px 0;
+ width: 100%;
+ }
+ #examples .mainlink {
+ height: auto;
+ }
+ #examples .ex_tags, #examples .ex_filename {
+ display: none;
+ }
+ }
</style>
<script type="text/javascript" src="Jugl.js"></script>
<script type="text/javascript" src="example-list.js"></script>
@@ -133,7 +170,7 @@
for(var i=0; i<words.length; ++i) {
var word = words[i].toLowerCase()
var dict = info.index[word];
- if(dict) {
+ var updateScores = function() {
for(exIndex in dict) {
var count = dict[exIndex];
if(scores[exIndex]) {
@@ -148,6 +185,18 @@
}
}
}
+ if(dict) {
+ updateScores();
+ } else {
+ var r;
+ for (idx in info.index) {
+ r = new RegExp(word);
+ if (r.test(idx)) {
+ dict = info.index[idx];
+ updateScores();
+ }
+ }
+ }
}
examples = [];
for(var j in scores) {
@@ -201,10 +250,10 @@
}
}
window.onload = function() {
+ //document.getElementById('keywords').focus();
template = new jugl.Template("template");
target = document.getElementById("examples");
listExamples(info.examples);
- document.getElementById("exwin").src = "../examples/example.html";
document.getElementById("keywords").onkeyup = inputChange
parseQuery();
};
@@ -213,20 +262,24 @@
<body>
<div id="toc">
<div id="filter">
+ <div id="logo">
+ <img src="http://www.openlayers.org/images/OpenLayers.trac.png"
+ />
+ OpenLayers
+ </div>
<p>
- <label for="keywords">Filter by keywords</label><br />
- <input type="text" id="keywords" />
- <span id="count"></span><br />
+ <input autofocus placeholder="filter by keywords..." type="text" id="keywords" />
+ <span id="count"></span>
<a href="javascript:void showAll();">show all</a>
</p>
</div>
<div id="examples"></div>
</div>
- <iframe id="exwin" name="exwin" frameborder="0"></iframe>
<div style="display: none;">
<ul id="template">
<li class="ex_container" jugl:repeat="example examples">
- <a jugl:attributes="href example.link" target="exwin">
+ <a jugl:attributes="href example.link" class="mainlink"
+ target="_blank">
<h5 class="ex_title">
<span jugl:replace="example.title">title</span><br />
<span class="ex_filename" jugl:content="'(' + example.example + ')'">filename</span>
Copied: sandbox/bartvde/sencha/openlayers/examples/geolocation.html (from rev 11335, trunk/openlayers/examples/geolocation.html)
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/geolocation.html (rev 0)
+++ sandbox/bartvde/sencha/openlayers/examples/geolocation.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <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 Geolocation</title>
+
+ <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
+ <link rel="stylesheet" href="style.css" type="text/css">
+ <style>
+ .olControlAttribution {
+ bottom: 3px;
+ }
+ </style>
+ </head>
+ <body>
+ <h1 id="title">Geolocation Example</h1>
+
+ <div id="tags">
+ geolocation, geolocate, mobile
+ </div>
+
+ <p id="shortdesc">
+ Track current position and display it with its accuracy.
+ </p>
+
+ <div id="map" class="smallmap"></div>
+ <button id="locate">Locate me!</button>
+ <input type="checkbox" name="track" id="track">
+ <label for="track">Track my position</label>
+ <div id="docs">
+ <p>
+ View the <a href="geolocation.js" target="_blank">geolocation.js source</a>
+ to see how this is done.
+ </p>
+ </div>
+ <script src="../lib/OpenLayers.js"></script>
+ <script src="geolocation.js"></script>
+ </body>
+</html>
Copied: sandbox/bartvde/sencha/openlayers/examples/geolocation.js (from rev 11335, trunk/openlayers/examples/geolocation.js)
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/geolocation.js (rev 0)
+++ sandbox/bartvde/sencha/openlayers/examples/geolocation.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,103 @@
+var style = {
+ fillColor: '#000',
+ fillOpacity: 0.1,
+ strokeWidth: 0
+}
+
+var map = new OpenLayers.Map('map');
+var layer = new OpenLayers.Layer.OSM( "Simple OSM Map");
+var vector = new OpenLayers.Layer.Vector('vector');
+map.addLayers([layer, vector]);
+
+map.setCenter(
+ new OpenLayers.LonLat(-71.147, 42.472).transform(
+ new OpenLayers.Projection("EPSG:4326"),
+ map.getProjectionObject()
+ ), 12
+);
+
+var pulsate = function(feature) {
+ var point = feature.geometry.getCentroid(),
+ bounds = feature.geometry.getBounds(),
+ radius = Math.abs((bounds.right - bounds.left)/2),
+ count = 0,
+ grow = 'up';
+
+ var resize = function(){
+ if (count>16) clearInterval(window.resizeInterval);
+ var interval = radius * 0.03;
+ var ratio = interval/radius;
+ switch(count) {
+ case 4:
+ case 12:
+ grow = 'down'; break;
+ case 8:
+ grow = 'up'; break;
+ }
+ if (grow!=='up') {
+ ratio = - Math.abs(ratio);
+ }
+ feature.geometry.resize(1+ratio, point);
+ vector.drawFeature(feature);
+ count++;
+ }
+ window.resizeInterval = window.setInterval(resize, 50, point, radius);
+};
+
+var geolocate = new OpenLayers.Control.Geolocate({
+ geolocationOptions: {
+ enableHighAccuracy: false,
+ maximumAge: 0,
+ timeout: 7000
+ }
+});
+map.addControl(geolocate);
+geolocate.events.register("locationupdated",this,function(e) {
+ vector.removeAllFeatures();
+ var circle = new OpenLayers.Feature.Vector(
+ OpenLayers.Geometry.Polygon.createRegularPolygon(
+ new OpenLayers.Geometry.Point(e.point.x, e.point.y),
+ e.position.coords.accuracy/2,
+ 40,
+ 0
+ ),
+ {},
+ style
+ );
+ vector.addFeatures([
+ new OpenLayers.Feature.Vector(
+ e.point,
+ {},
+ {
+ graphicName: 'cross',
+ strokeColor: '#f00',
+ strokeWidth: 2,
+ fillOpacity: 0,
+ pointRadius: 10
+ }
+ ),
+ circle
+ ]);
+ map.zoomToExtent(vector.getDataExtent());
+ pulsate(circle);
+});
+geolocate.events.register("locationfailed",this,function() {
+ OpenLayers.Console.log('Location detection failed');
+});
+
+$('locate').onclick = function() {
+ vector.removeAllFeatures();
+ geolocate.deactivate();
+ $('track').checked = false;
+ geolocate.watch = false;
+ geolocate.activate();
+};
+$('track').onclick = function() {
+ vector.removeAllFeatures();
+ geolocate.deactivate();
+ if (this.checked) {
+ geolocate.watch = true;
+ geolocate.activate();
+ }
+};
+$('track').checked = false;
Deleted: sandbox/bartvde/sencha/openlayers/examples/img/marker_shadow.png
===================================================================
(Binary files differ)
Copied: sandbox/bartvde/sencha/openlayers/examples/img/marker_shadow.png (from rev 11335, trunk/openlayers/examples/img/marker_shadow.png)
===================================================================
(Binary files differ)
Deleted: sandbox/bartvde/sencha/openlayers/examples/img/mobile-zoombar.png
===================================================================
--- trunk/openlayers/examples/img/mobile-zoombar.png 2011-02-23 15:32:32 UTC (rev 11335)
+++ sandbox/bartvde/sencha/openlayers/examples/img/mobile-zoombar.png 2011-02-23 15:46:23 UTC (rev 11337)
@@ -1,27 +0,0 @@
-PNG
-
-
-IHDR $ l sBIT|d pHYs ¯ ¯^ tEXtSoftware www.inkscape.orgî< -IDAThí{Te¾Ç?ï»/Ü6÷« fjZ)N*áÊ0q¼¶\ÙÊÕLu3+s¦9x#M0
-5ó¬$DEAH(rÚ(°A`ßÞóÇÆ»½1Mç,¿ÿíçúÙÏýù½ÏO$¾HVzb20¤@Ø]Tp øôÙ´üjÊ¿Y Aø(¤Å@4 ¿Éò
- at .k%éõ]·H>Ó <vÝH:âôzÎ- Â\ú¤³Un£µ0`©$Í0Þ4 |à²tàéÛcÑ0>'Io6õ
-Ô ß!ë*côÏ¡Dk²Î¹Ó0ë¥ëìÈ<fîX7ÙÓÓuZdé2ólÿ07b»>ûnh!ÓwƺnA¤ëÞ}-FÜÜVaÍÍ:L¦¾þ(Ó%éõ]+nß×¹\$#c
-Ï>ûUøîÝ?2cÆWèõ¦>(-v ð7O×sóÛ ¹SV6ßn\HÈÎïÓ` عQö æIÉ"0ánÜ bçâ4@Ä|¹W$§ëpeWÎÎ
-÷±Í¤ê6ÏȾx{;Úi¸vMßSu|Øí¢¡P:Àã÷ï©VNNO=ÁÐý v¸»;Ü6þ¸»;ô¦G »¡û@½©G +WÚÙ²¥ä¶U¶iÓ®\ië1M³@°;tçÔ©ìæQ«·PVÖhÞÔÔAo·®^÷0IÆÆðæfÛ°®8Ý<7£ÿ¬1t7t¨7Ý2Pe¥¯¿.· ß¿ÿÍ·Ôë´ïIr¹UFÓÖãæÙk·0L\¾ÜúK°Ñÿ1t§t¨7õyP;;+HHeÖ¬0BC½psSâì,ÚÚô44´S^ÞÈçHM-¦½ÝЧòozÚGDøñùçO3r¤¢(ÐØØÁ¹sW óæ/ÎÒÜÜAP/tÃÛÛ I(,¬çWrâÄåÛìÊÎS5ªMM|öÙ¿IN. ¶Ö<ÝWG` Äįmò%! ¸º*9r¤=ÔÔ´ôÔã1#²²ùû Ñ´Åòå9·ßÎ%2Ò¸¸!Vy++µüö·;Ñju¼õÖ÷DFúSQ±ÄÄ°[Z³æ ÒÓ§`2Iüã§yãì]ûr¹u#³gïãÓO'àím½j?^KJJQQøùãèÑ6oÌêÕãºAìý<pÕª.}uëNE||G øù9sð`
Uú¼¼5+;ÏYÅåæV±xq$hµz""ü@óæ
-cåÊqlÛvyóÐÚª'3ó<[·àëëÄ%L2£QâÚ5W¯¶#I[Í[o=FÓFII¢(êÅÄ
-õdþüáÖ¿JÉk¯ERZÚÀ3
-V at V:(HEEÅ4vRRþÍ;ï±ù«W'2ÒÚÚÔê U=Û@KÃùrút=áá>ÔÔ´PXXÏ¡C(2¦OaÂÎî|ÿººVû@yy/¢Vû1lØF¾ÿþÂÂRÑh¬o *ÒÒ¹Lü%EE?áêª$<ÜGG92@JJ,ï¿ôôÐju]]!¨ªzÑ£Ó¸t©ggõõ(.ÖðØci¶]6fL ï¾;ººkøúºpòäeÆíÏ7ß\´ÒéLøú:âÉwßU¢Ó©ªÒrñbååM¸¹9п¿+{÷Yå$xðAwÝ8r¤½ÞD}}¯¼2¬¬
-d2ÉÉO¢Ñ´²WW±±Y¸p..
-nÛ³§iÓØìØñ ¡mÜöí¥Ì9èè ÒÒ¢'%e¢%x½9#"üØ´éz~/þóQ
-;§Ò¿¿«UÁÇÕ¨"8Ø: ´ô
-DEÙZy©¦_?rrgóæÉlÜxääÔê d2¡())Qùë_Z2gdüÀGÀÇÇ¢¢ÙlÛö£G÷ÀdÈÎ.gêÔî[é¹ç¶
-1Â;§áä$§¥EOhè6n,æòEÁÒr"@BB(õõ6»ìì±c5lÝú;øôÓ§hlì !!Ô.СCÄÆ>À%ddL¡¦æ²²âÈÍbúô¯ðòr´µZ
-
-m 9ÀàÁ´´ØZ¶òók1ÂÖV=ÉÉ
üýï
DFú3vl&=È147/A§3b0H&F OOGJaaÞìÞý#ËæÒ%óÁ?,ÌÛÆØ~îÜUõîòósÆ`0±aÃÓ,\xÐrH×ëM´¶êquUÒØh¾ÔQPPÇ_#??°°Tär¹\@&ÉJ'N$òòËmþ¤V«ÃÕÕ¨²RKXwW98ÈøüóÿÅßß
}û¦àbIÜܬÃÍÍÖØÐÜl.¸©©6êê®QSÓBe¥y puUÚiZʤR)X¹2ÀÁAÖd2I("Ó¦eSÅéÓ³Y°`8`6*¨T¶S¿¥E³³Ân¥×··9JÁ¬YaÎÅÇÇ´´áYÖÞn$ À£Qâ/9ÊøñÛ5ërsgàbצ#IÐÞnÀÙÙö:°= ßüÆLäÕW#ËbÞ¼xz:¡Ó»´ZÕZSZz
m|öÙi<=ùöÛæÌ G©ìúøçááÑ(ÑÚj;åxx8XîlJ¥ñãÙ¸q{öÄS_ßJTT'OOCxðÓO×ÎA]\¬aÔ¨ ((¨£¬¬W_=IJejV¯O^^5¹¹Õ45é8{Öz§¾®¡C½¨¬Ôò?D;1c(.Ö]N~~-ÑÑýW¹sâD]Ð_0iÒÄÇ?Ä®]ç- Ǧ Ã+9|¸'¢£xüñþ¼üòHT\¼¸ÀÈËËAxøaoÖ¯/â
öÒÜlÞh×ÀµVi}}Ùµë\Ðöí?°iÓd6o(î³²fÌaíÚSÌMYY?õ#J¥ÊJ-?Ø -[¦¦¦¦
÷ß?n§Vû³}{©å÷c1%6o>Ód0(,¬ã¡<IN~G
- 9¹öí»`·[&OijÏfqñ¢Í§wFðcÏ2ðÜ<Ø'/ãêªdű,Z4S§ê,+·e·;÷ îî|òÉIyļ¼äæVÛ½WEErí¢¢lâö`Ⱥd·hÑH¶l)aÊÁÌ
!**AX²ä,i, at EE?qòäeÞ}wññ»io7Ä5OÒ¯UÁ3g%-í¬ÝKJ
-'-í¬IÆÉIÎÃQ«xç(fÏÞÇðá¾äåUWc0ujrNÝy&þX³æIxÀ
-WW% ¡lÛf$/½Fjj±UبQýÈÌC¥R²gOyï½h
-¸¸,ë2nüQ[ÛÂ/~ÍС^?Ë[yóÍÂÂRÑëäç'ráÂ|Ú9ÒÏÆ~=}zµµ47w0wî0ÒÓ§PW·õëc;63¾bÕª|þùÏÈßØíÞ\?þx<KªIM-æ÷¿ßo ÷÷w¦´t.ëÖB`ìØ DѼU®®JZZtèõ&¬`ÿþ8p?þñ1ä,\ø
-))±Ì?÷Þ;ÆþkÓÊÝ^¥W¬ÃÛoáøñZx"övS(/obùró LÀÁÁ|¸íµHbbILü¦Íòí^`ïÞxÔê-ìÞGD?|e˾³WmÏwû¤¤pÖ¯Å`0yðp_}tÖO
-rçøñDbb¶[Þ~~Îäç'òí·Ì9¹\dÎý¤¥uÿý¤Wc¿¿3qDEÒØØÎ
-ŬYS at U0ïSyy3Ùºµ5k
-,ùöàðáçðövÂÑQNAAÏ<³«WäMcÆæÃÇéL& Ñ´Q^Þ££''9ÙÙåôëg>øzáåeþæZPp
RPPw3ÕôÝ,ìì¬`Îp¦MÌ A¸àè(Çh4¡ÓhnîàÌÒÓKÉÌ<Ï+í})þÙ©ïî9ã} Þt¨7ÝêM÷zÓ} Þt¨7Ýs@½~ÀëîuÌè¿HMÄìÙÜ -[JHJÚ×ããÝhÞÞNh4¯Þëòõ]gs»Q÷ÜíݸAZ³û̽¢¨î.¶©©ªÛVÛ÷ßWÑÔÔãS°j¹Ù±Èþ¸6LLô¥Ý·°·¢¢"M//Ñ
K¬~¤·¥Æ_,!Q}6f/§»-è³ÅNÿ/[»È¯¯\IZ~µsÖÞ].<_><úË}ÈnUÒ1Iz#
-¬VjñÍ»c]·Èìs7ºNX{£WÞÏö²K¿"ÍÎ:-²2»é¹ó*6{áY»Úìöf8c4w¶¥Øó¾ÿ§Ik°{ÄÔؽáxkvg]ÿ¿=yíÑ IEND®B`
\ No newline at end of file
Copied: sandbox/bartvde/sencha/openlayers/examples/img/mobile-zoombar.png (from rev 11335, trunk/openlayers/examples/img/mobile-zoombar.png)
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/img/mobile-zoombar.png (rev 0)
+++ sandbox/bartvde/sencha/openlayers/examples/img/mobile-zoombar.png 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,27 @@
+PNG
+
+
+IHDR $ l sBIT|d pHYs ¯ ¯^ tEXtSoftware www.inkscape.orgî< -IDAThí{Te¾Ç?ï»/Ü6÷« fjZ)N*áÊ0q¼¶\ÙÊÕLu3+s¦9x#M0
+5ó¬$DEAH(rÚ(°A`ßÞóÇÆ»½1Mç,¿ÿíçúÙÏýù½ÏO$¾HVzb20¤@Ø]Tp øôÙ´üjÊ¿Y Aø(¤Å@4 ¿Éò
+ at .k%éõ]·H>Ó <vÝH:âôzÎ- Â\ú¤³Un£µ0`©$Í0Þ4 |à²tàéÛcÑ0>'Io6õ
+Ô ß!ë*côÏ¡Dk²Î¹Ó0ë¥ëìÈ<fîX7ÙÓÓuZdé2ólÿ07b»>ûnh!ÓwƺnA¤ëÞ}-FÜÜVaÍÍ:L¦¾þ(Ó%éõ]+nß×¹\$#c
+Ï>ûUøîÝ?2cÆWèõ¦>(-v ð7O×sóÛ ¹SV6ßn\HÈÎïÓ` عQö æIÉ"0ánÜ bçâ4@Ä|¹W$§ëpeWÎÎ
+÷±Í¤ê6ÏȾx{;Úi¸vMßSu|Øí¢¡P:Àã÷ï©VNNO=ÁÐý v¸»;Ü6þ¸»;ô¦G »¡û@½©G +WÚÙ²¥ä¶U¶iÓ®\ië1M³@°;tçÔ©ìæQ«·PVÖhÞÔÔAo·®^÷0IÆÆðæfÛ°®8Ý<7£ÿ¬1t7t¨7Ý2Pe¥¯¿.· ß¿ÿÍ·Ôë´ïIr¹UFÓÖãæÙk·0L\¾ÜúK°Ñÿ1t§t¨7õyP;;+HHeÖ¬0BC½psSâì,ÚÚô44´S^ÞÈçHM-¦½ÝЧòozÚGDøñùçO3r¤¢(ÐØØÁ¹sW óæ/ÎÒÜÜAP/tÃÛÛ I(,¬çWrâÄåÛìÊÎS5ªMM|öÙ¿IN. ¶Ö<ÝWG` Äįmò%! ¸º*9r¤=ÔÔ´ôÔã1#²²ùû Ñ´Åòå9·ßÎ%2Ò¸¸!Vy++µüö·;Ñju¼õÖ÷DFúSQ±ÄÄ°[Z³æ ÒÓ§`2Iüã§yãì]ûr¹u#³gïãÓO'àím½j?^KJJQQøùãèÑ6oÌêÕãºAìý<pÕª.}uëNE||G øù9sð`
Uú¼¼5+;ÏYÅåæV±xq$hµz""ü@óæ
+cåÊqlÛvyóÐÚª'3ó<[·àëëÄ%L2£QâÚ5W¯¶#I[Í[o=FÓFII¢(êÅÄ
+õdþüáÖ¿JÉk¯ERZÚÀ3
+V at V:(HEEÅ4vRRþÍ;ï±ù«W'2ÒÚÚÔê U=Û@KÃùrút=áá>ÔÔ´PXXÏ¡C(2¦OaÂÎî|ÿººVû@yy/¢Vû1lØF¾ÿþÂÂRÑh¬o *ÒÒ¹Lü%EE?áêª$<ÜGG92@JJ,ï¿ôôÐju]]!¨ªzÑ£Ó¸t©ggõõ(.ÖðØci¶]6fL ï¾;ººkøúºpòäeÆíÏ7ß\´ÒéLøú:âÉwßU¢Ó©ªÒrñbååM¸¹9п¿+{÷Yå$xðAwÝ8r¤½ÞD}}¯¼2¬¬
-d2ÉÉO¢Ñ´²WW±±Y¸p..
+nÛ³§iÓØìØñ ¡mÜöí¥Ì9èè ÒÒ¢'%e¢%x½9#"üØ´éz~/þóQ
+;§Ò¿¿«UÁÇÕ¨"8Ø: ´ô
+DEÙZy©¦_?rrgóæÉlÜxääÔê d2¡())Qùë_Z2gdüÀGÀÇÇ¢¢ÙlÛö£G÷ÀdÈÎ.gêÔî[é¹ç¶
+1Â;§áä$§¥EOhè6n,æòEÁÒr"@BB(õõ6»ìì±c5lÝú;øôÓ§hlì !!Ô.СCÄÆ>À%ddL¡¦æ²²âÈÍbúô¯ðòr´µZ
+
+m 9ÀàÁ´´ØZ¶òók1ÂÖV=ÉÉ
üýï
DFú3vl&=È147/A§3b0H&F OOGJaaÞìÞý#ËæÒ%óÁ?,ÌÛÆØ~îÜUõîòósÆ`0±aÃÓ,\xÐrH×ëM´¶êquUÒØh¾ÔQPPÇ_#??°°Tär¹\@&ÉJ'N$òòËmþ¤V«ÃÕÕ¨²RKXwW98ÈøüóÿÅßß
}û¦àbIÜܬÃÍÍÖØÐÜl.¸©©6êê®QSÓBe¥y puUÚiZʤR)X¹2ÀÁAÖd2I("Ó¦eSÅéÓ³Y°`8`6*¨T¶S¿¥E³³Ân¥×··9JÁ¬YaÎÅÇÇ´´áYÖÞn$ À£Qâ/9ÊøñÛ5ërsgàbצ#IÐÞnÀÙÙö:°= ßüÆLäÕW#ËbÞ¼xz:¡Ó»´ZÕZSZz
m|öÙi<=ùöÛæÌ G©ìúøçááÑ(ÑÚj;åxx8XîlJ¥ñãÙ¸q{öÄS_ßJTT'OOCxðÓO×ÎA]\¬aÔ¨ ((¨£¬¬W_=IJejV¯O^^5¹¹Õ45é8{Öz§¾®¡C½¨¬Ôò?D;1c(.Ö]N~~-ÑÑýW¹sâD]Ð_0iÒÄÇ?Ä®]ç- Ǧ Ã+9|¸'¢£xüñþ¼üòHT\¼¸ÀÈËËAxøaoÖ¯/â
öÒÜlÞh×ÀµVi}}Ùµë\Ðöí?°iÓd6o(î³²fÌaíÚSÌMYY?õ#J¥ÊJ-?Ø -[¦¦¦¦
÷ß?n§Vû³}{©å÷c1%6o>Ód0(,¬ã¡<IN~G
+ 9¹öí»`·[&OijÏfqñ¢Í§wFðcÏ2ðÜ<Ø'/ãêªdű,Z4S§ê,+·e·;÷ îî|òÉIyļ¼äæVÛ½WEErí¢¢lâö`Ⱥd·hÑH¶l)aÊÁÌ
!**AX²ä,i, at EE?qòäeÞ}wññ»io7Ä5OÒ¯UÁ3g%-í¬ÝKJ
+'-í¬IÆÉIÎÃQ«xç(fÏÞÇðá¾äåUWc0ujrNÝy&þX³æIxÀ
+WW% ¡lÛf$/½Fjj±UبQýÈÌC¥R²gOyï½h
+¸¸,ë2nüQ[ÛÂ/~ÍС^?Ë[yóÍÂÂRÑëäç'ráÂ|Ú9ÒÏÆ~=}zµµ47w0wî0ÒÓ§PW·õëc;63¾bÕª|þùÏÈßØíÞ\?þx<KªIM-æ÷¿ßo ÷÷w¦´t.ëÖB`ìØ DѼU®®JZZtèõ&¬`ÿþ8p?þñ1ä,\ø
+))±Ì?÷Þ;ÆþkÓÊÝ^¥W¬ÃÛoáøñZx"övS(/obùró LÀÁÁ|¸íµHbbILü¦Íòí^`ïÞxÔê-ìÞGD?|e˾³WmÏwû¤¤pÖ¯Å`0yðp_}tÖO
+rçøñDbb¶[Þ~~Îäç'òí·Ì9¹\dÎý¤¥uÿý¤Wc¿¿3qDEÒØØÎ
+ŬYS at U0ïSyy3Ùºµ5k
+,ùöàðáçðövÂÑQNAAÏ<³«WäMcÆæÃÇéL& Ñ´Q^Þ££''9ÙÙåôëg>øzáåeþæZPp
RPPw3ÕôÝ,ìì¬`Îp¦MÌ A¸àè(Çh4¡ÓhnîàÌÒÓKÉÌ<Ï+í})þÙ©ïî9ã} Þt¨7ÝêM÷zÓ} Þt¨7Ýs@½~ÀëîuÌè¿HMÄìÙÜ -[JHJÚ×ããÝhÞÞNh4¯Þëòõ]gs»Q÷ÜíݸAZ³û̽¢¨î.¶©©ªÛVÛ÷ßWÑÔÔãS°j¹Ù±Èþ¸6LLô¥Ý·°·¢¢"M//Ñ
K¬~¤·¥Æ_,!Q}6f/§»-è³ÅNÿ/[»È¯¯\IZ~µsÖÞ].<_><úË}ÈnUÒ1Iz#
+¬VjñÍ»c]·Èìs7ºNX{£WÞÏö²K¿"ÍÎ:-²2»é¹ó*6{áY»Úìöf8c4w¶¥Øó¾ÿ§Ik°{ÄÔؽáxkvg]ÿ¿=yíÑ IEND®B`
\ No newline at end of file
Deleted: sandbox/bartvde/sencha/openlayers/examples/img/popupMatrix.jpg
===================================================================
(Binary files differ)
Copied: sandbox/bartvde/sencha/openlayers/examples/img/popupMatrix.jpg (from rev 11335, trunk/openlayers/examples/img/popupMatrix.jpg)
===================================================================
(Binary files differ)
Deleted: sandbox/bartvde/sencha/openlayers/examples/img/small.jpg
===================================================================
(Binary files differ)
Copied: sandbox/bartvde/sencha/openlayers/examples/img/small.jpg (from rev 11335, trunk/openlayers/examples/img/small.jpg)
===================================================================
(Binary files differ)
Deleted: sandbox/bartvde/sencha/openlayers/examples/img/thinlong.jpg
===================================================================
(Binary files differ)
Copied: sandbox/bartvde/sencha/openlayers/examples/img/thinlong.jpg (from rev 11335, trunk/openlayers/examples/img/thinlong.jpg)
===================================================================
(Binary files differ)
Deleted: sandbox/bartvde/sencha/openlayers/examples/img/widelong.jpg
===================================================================
(Binary files differ)
Copied: sandbox/bartvde/sencha/openlayers/examples/img/widelong.jpg (from rev 11335, trunk/openlayers/examples/img/widelong.jpg)
===================================================================
(Binary files differ)
Deleted: sandbox/bartvde/sencha/openlayers/examples/img/wideshort.jpg
===================================================================
(Binary files differ)
Copied: sandbox/bartvde/sencha/openlayers/examples/img/wideshort.jpg (from rev 11335, trunk/openlayers/examples/img/wideshort.jpg)
===================================================================
(Binary files differ)
Copied: sandbox/bartvde/sencha/openlayers/examples/kinetic.html (from rev 11335, trunk/openlayers/examples/kinetic.html)
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/kinetic.html (rev 0)
+++ sandbox/bartvde/sencha/openlayers/examples/kinetic.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>OpenLayers Kinetic Dragging Example</title>
+ <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">
+ </head>
+ <body>
+ <h1 id="title">Kinetic Dragging Example</h1>
+
+ <div id="tags">
+ kinetic, dragging
+ </div>
+
+ <p id="shortdesc">
+ Demonstrates Kinetic Dragging.
+ </p>
+
+ <div id="map" class="smallmap"></div>
+
+ <div id="docs">
+ <p>
+ OpenLayers Kinetic Dragging inspired from <a href="http://www.tile5.org">Tile5</a>, and
+ <a href="http://code.google.com/p/kineticscrolling/">kineticscrolling</a> for Google Maps API V3.
+ </p><p>
+ As shown in this example Kinetic Dragging is enabled by setting
+ <code>enableKinetic</code> to true in the config object provided to the
+ <code>Control.DragPan</code> constructor. When using
+ <code>Control.Navigation</code> or <code>Control.TouchNavigation</code>
+ providing options to the underlying <code>Control.DragPan</code>
+ instance is done through the <code>dragPanOptions</code> config
+ property.
+ </p><p>
+ View the <a href="kinetic.js" target="_blank">kinetic.js source</a>
+ to see how this is done.
+ </p>
+ </div>
+ <script src="../lib/OpenLayers.js"></script>
+ <script src="kinetic.js"></script>
+ </body>
+</html>
Copied: sandbox/bartvde/sencha/openlayers/examples/kinetic.js (from rev 11335, trunk/openlayers/examples/kinetic.js)
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/kinetic.js (rev 0)
+++ sandbox/bartvde/sencha/openlayers/examples/kinetic.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,28 @@
+var map = new OpenLayers.Map({
+ div: "map",
+ resolutions: [0.087890625, 0.0439453125, 0.02197265625, 0.010986328125],
+ panDuration: 100,
+ controls: [
+ new OpenLayers.Control.Navigation(
+ {dragPanOptions: {enableKinetic: true}}
+ )
+ ]
+});
+var layer = new OpenLayers.Layer.TileCache("TileCache Layer",
+ ["http://c0.tilecache.osgeo.org/wms-c/cache/",
+ "http://c1.tilecache.osgeo.org/wms-c/cache/",
+ "http://c2.tilecache.osgeo.org/wms-c/cache/",
+ "http://c3.tilecache.osgeo.org/wms-c/cache/",
+ "http://c4.tilecache.osgeo.org/wms-c/cache/"],
+ "basic",
+ {
+ serverResolutions: [0.703125, 0.3515625, 0.17578125, 0.087890625,
+ 0.0439453125, 0.02197265625, 0.010986328125,
+ 0.0054931640625, 0.00274658203125, 0.001373291015625,
+ 0.0006866455078125, 0.00034332275390625, 0.000171661376953125,
+ 0.0000858306884765625, 0.00004291534423828125, 0.000021457672119140625],
+ buffer: 4
+ }
+);
+map.addLayer(layer);
+map.setCenter(new OpenLayers.LonLat(0, 0), 0);
\ No newline at end of file
Modified: sandbox/bartvde/sencha/openlayers/examples/marker-shadow.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/marker-shadow.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/examples/marker-shadow.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -39,7 +39,7 @@
styleMap: new OpenLayers.StyleMap({
// Set the external graphic and background graphic images.
externalGraphic: "../img/marker-gold.png",
- backgroundGraphic: "./marker_shadow.png",
+ backgroundGraphic: "./img/marker_shadow.png",
// Makes sure the background graphic is placed correctly relative
// to the external graphic.
Deleted: sandbox/bartvde/sencha/openlayers/examples/marker_shadow.png
===================================================================
(Binary files differ)
Modified: sandbox/bartvde/sencha/openlayers/examples/mobile-jq.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/mobile-jq.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/examples/mobile-jq.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -9,7 +9,7 @@
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.css">
<script src="http://code.jquery.com/jquery-1.5.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.js"></script>
- <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
+ <link rel="stylesheet" href="style.mobile.css" type="text/css">
<script src="../lib/OpenLayers.js"></script>
<script src="mobile.js"></script>
<style>
@@ -37,6 +37,9 @@
bottom: 5px;
right: 5px;
}
+ #title, #tags, #shortdesc {
+ display: none;
+ }
</style>
<script>
$(document).ready(function() {
@@ -101,6 +104,13 @@
</script>
</head>
<body>
+ <h1 id="title">OpenLayers with jQuery Mobile</h1>
+ <div id="tags">
+ mobile, jquery
+ </div>
+ <p id="shortdesc">
+ Using jQuery Mobile to display an OpenLayers map.
+ </p>
<div data-role="page">
<div data-role="header">
<input id="west" type="button" data-icon="arrow-l" value="west">
Copied: sandbox/bartvde/sencha/openlayers/examples/mobile-navigation.html (from rev 11335, trunk/openlayers/examples/mobile-navigation.html)
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/mobile-navigation.html (rev 0)
+++ sandbox/bartvde/sencha/openlayers/examples/mobile-navigation.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <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>Mobile Navigation Example</title>
+ <link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
+ <link rel="stylesheet" href="style.mobile.css" type="text/css" />
+ <link rel="stylesheet" href="style.css" type="text/css" />
+ <script type="text/javascript" src="../lib/OpenLayers.js"></script>
+ <script type="text/javascript" src="mobile-navigation.js"></script>
+ </head>
+ <body onload="init()">
+ <h1 id="title">Mobile Navigation</h1>
+
+ <div id="tags">
+ mobile, touch, drag, move, zoom, navigate
+ </div>
+
+ <div id="shortdesc">Demonstrate map navigation on mobile</div>
+
+ <div id="map" class="smallmap"></div>
+ <div id="docs">
+
+ <p>
+ This example demonstates what OpenLayers provides for map
+ navigation on mobile.
+ </p>
+
+ <p>
+ The TouchNavigation control allows to pan the map with touch
+ gestures on the screen – "touchstart", "touchmove",
+ "touchend" sequences. It also allows to zoom in with double taps,
+ and to zoom out with two-finger single taps. The latter is only
+ available on devices supporting multi-touch. Note that in most
+ devices Android doesn't support multi-touch in the browser.
+ </p>
+
+ <p>
+ The ZoomPanel control provides + and - buttons for zooming in and
+ out. These buttons should work on any device, and the zoom out
+ button is especially needed for devices that don't support
+ multi-touch.
+ </p>
+ <p>
+ See the <a href="mobile-navigation.js" target="_blank">mobile-navigation.js
+ source</a> to see how this is done.
+ </p>
+ </div>
+ </body>
+</html>
Copied: sandbox/bartvde/sencha/openlayers/examples/mobile-navigation.js (from rev 11335, trunk/openlayers/examples/mobile-navigation.js)
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/mobile-navigation.js (rev 0)
+++ sandbox/bartvde/sencha/openlayers/examples/mobile-navigation.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,17 @@
+var map, layer;
+function init() {
+ map = new OpenLayers.Map('map', { controls: [
+ new OpenLayers.Control.TouchNavigation({
+ dragPanOptions: {
+ interval: 0, // non-zero kills performance on some mobile phones
+ enableKinetic: true
+ }
+ }),
+ new OpenLayers.Control.ZoomPanel()
+ ] });
+ layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
+ "http://vmap0.tiles.osgeo.org/wms/vmap0",
+ {layers: 'basic'} );
+ map.addLayer(layer);
+ map.setCenter(new OpenLayers.LonLat(5, 40), 2);
+}
Modified: sandbox/bartvde/sencha/openlayers/examples/mobile-sencha.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/mobile-sencha.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/examples/mobile-sencha.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -6,7 +6,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>OpenLayers with Sencha Touch</title>
<script src="../lib/OpenLayers.js"></script>
- <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
+ <link rel="stylesheet" href="style.mobile.css" type="text/css">
<link rel="stylesheet" href="http://dev.sencha.com/deploy/touch/resources/css/sencha-touch.css">
<script src="http://dev.sencha.com/deploy/touch/sencha-touch.js"></script>
<script src="mobile.js"></script>
@@ -20,6 +20,9 @@
bottom: 5px;
right: 5px;
}
+ #title, #tags, #shortdesc {
+ display: none;
+ }
</style>
<script>
@@ -121,5 +124,13 @@
});
</script>
</head>
- <body></body>
+ <body>
+ <h1 id="title">OpenLayers with Sencha Touch</h1>
+ <div id="tags">
+ mobile, sencha touch
+ </div>
+ <p id="shortdesc">
+ Using Sencha Touch to display an OpenLayers map.
+ </p>
+ </body>
</html>
Deleted: sandbox/bartvde/sencha/openlayers/examples/mobile-touchnavigation-control.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/mobile-touchnavigation-control.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/examples/mobile-touchnavigation-control.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <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 TouchNavigation Control</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;
- function init() {
- map = new OpenLayers.Map( 'map', { controls: [
- new OpenLayers.Control.TouchNavigation({
- dragPanOptions: {
- interval: 0 // non-zero kills performance on some mobile phones
- }
- })
- ] });
- layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
- "http://vmap0.tiles.osgeo.org/wms/vmap0",
- {layers: 'basic'} );
- map.addLayer(layer);
- map.setCenter(new OpenLayers.LonLat(5, 40), 2);
- }
- </script>
- </head>
- <body onload="init()">
- <h1 id="title">TouchNavigation Control</h1>
-
- <div id="tags">
- mobile, touch, drag, move, zoom, navigate
- </div>
-
- <div id="shortdesc">Demonstrate TouchNavigation Control features</div>
-
- <div id="map" class="smallmap"></div>
- <div id="docs">
- This example demonstrates a couple features of the TouchNavigation
- control. The TouchNavigation control controls most map dragging,
- movement, zooming, etc, optimized for mobile devices.
- </div>
- </body>
-</html>
Modified: sandbox/bartvde/sencha/openlayers/examples/mobile.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/mobile.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/examples/mobile.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -4,7 +4,7 @@
<title>OpenLayers Mobile</title>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0;">
<meta name="apple-mobile-web-app-capable" content="yes">
- <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
+ <link rel="stylesheet" href="style.mobile.css" type="text/css">
<script src="../lib/OpenLayers.js"></script>
<script src="mobile.js"></script>
<style>
@@ -23,9 +23,19 @@
bottom: 5px;
right: 5px;
}
+ #title, #tags, #shortdesc {
+ display: none;
+ }
</style>
</head>
<body>
+ <h1 id="title">Basic Mobile Example</h1>
+ <div id="tags">
+ mobile
+ </div>
+ <p id="shortdesc">
+ A basic full-screen map for mobile devices.
+ </p>
<div id="map"></div>
<script>
init();
Modified: sandbox/bartvde/sencha/openlayers/examples/mobile.js
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/mobile.js 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/examples/mobile.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -19,7 +19,12 @@
-20037508.34, -20037508.34, 20037508.34, 20037508.34
),
controls: [
- new OpenLayers.Control.Navigation(),
+ new OpenLayers.Control.TouchNavigation({
+ dragPanOptions: {
+ interval: 0, // non-zero kills performance on some mobile phones
+ enableKinetic: true
+ }
+ }),
new OpenLayers.Control.Attribution(),
new OpenLayers.Control.DrawFeature(
vector, OpenLayers.Handler.Point, {id: "point-control"}
@@ -30,7 +35,8 @@
new OpenLayers.Control.DrawFeature(
vector, OpenLayers.Handler.Polygon, {id: "poly-control"}
),
- new OpenLayers.Control.ModifyFeature(vector, {id: "mod-control"})
+ new OpenLayers.Control.ModifyFeature(vector, {id: "mod-control"}),
+ new OpenLayers.Control.ZoomPanel()
],
layers: [new OpenLayers.Layer.OSM(), vector],
center: new OpenLayers.LonLat(0, 0),
Modified: sandbox/bartvde/sencha/openlayers/examples/popupMatrix.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/popupMatrix.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/examples/popupMatrix.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -83,7 +83,7 @@
layer = new OpenLayers.Layer.Image(
"popupMatrix",
- "popupMatrix.jpg",
+ "img/popupMatrix.jpg",
new OpenLayers.Bounds(-82.5,-71.5,97.5,67.5),
new OpenLayers.Size(1024,768)
);
@@ -109,52 +109,52 @@
//anchored popup small contents no autosize
ll = new OpenLayers.LonLat(-55,20);
popupClass = OpenLayers.Popup.Anchored;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML);
//anchored popup small contents no autosize closebox
var ll = new OpenLayers.LonLat(-50,20);
popupClass = OpenLayers.Popup.Anchored;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
//anchored popup small contents autosize
ll = new OpenLayers.LonLat(-40,20);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML);
//anchored popup small contents autosize closebox
ll = new OpenLayers.LonLat(-35,20);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
//anchored popup small contents autosize minsize
ll = new OpenLayers.LonLat(-25,20);
popupClass = AutoSizeAnchoredMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML);
//anchored popup small contents autosize minsize closebox
ll = new OpenLayers.LonLat(-20,20);
popupClass = AutoSizeAnchoredMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
//anchored popup small contents autosize maxsize
ll = new OpenLayers.LonLat(-10,20);
popupClass = AutoSizeAnchoredMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML);
//anchored popup small contents autosize maxsize closebox
ll = new OpenLayers.LonLat(-5,20);
popupClass = AutoSizeAnchoredMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
@@ -186,39 +186,39 @@
//anchored popup wide short fixed contents autosize
ll = new OpenLayers.LonLat(35,20);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="wideshort.jpg"></img>';
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML);
//anchored popup wide short fixed contents autosize closebox
ll = new OpenLayers.LonLat(40,20);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="wideshort.jpg"></img>';
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
//anchored popup thin long fixed contents autosize
ll = new OpenLayers.LonLat(50,20);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="thinlong.jpg"></img>';
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML);
//anchored popup thin long fixed contents autosize closebox
ll = new OpenLayers.LonLat(55,20);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="thinlong.jpg"></img>';
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
//anchored popup wide long fixed contents autosize
ll = new OpenLayers.LonLat(65,20);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML);
//anchored popup wide long fixed contents autosize closebox
ll = new OpenLayers.LonLat(70,20);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true);
//
@@ -228,52 +228,52 @@
//anchored popup small contents no autosize overflow
var ll = new OpenLayers.LonLat(-55,15);
popupClass = OpenLayers.Popup.Anchored;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored popup small contents no autosize closebox overflow
var ll = new OpenLayers.LonLat(-50,15);
popupClass = OpenLayers.Popup.Anchored;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored popup small contents autosize overflow
ll = new OpenLayers.LonLat(-40,15);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored popup small contents autosize closebox overflow
ll = new OpenLayers.LonLat(-35,15);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored popup small contents autosize minsize overflow
ll = new OpenLayers.LonLat(-25,15);
popupClass = AutoSizeAnchoredMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored popup small contents autosize minsize closebox overflow
ll = new OpenLayers.LonLat(-20,15);
popupClass = AutoSizeAnchoredMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored popup small contents autosize maxsize overflow
ll = new OpenLayers.LonLat(-10,15);
popupClass = AutoSizeAnchoredMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored popup small contents autosize maxsize closebox overflow
ll = new OpenLayers.LonLat(-5,15);
popupClass = AutoSizeAnchoredMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
@@ -305,39 +305,39 @@
//anchored popup wide short fixed contents autosize overflow
ll = new OpenLayers.LonLat(35,15);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="wideshort.jpg"></img>'
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored popup wide short fixed contents autosize closebox overflow
ll = new OpenLayers.LonLat(40,15);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="wideshort.jpg"></img>'
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored popup thin long fixed contents autosize overflow
ll = new OpenLayers.LonLat(50,15);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="thinlong.jpg"></img>'
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored popup thin long fixed contents autosize closebox overflow
ll = new OpenLayers.LonLat(55,15);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="thinlong.jpg"></img>'
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored popup wide long fixed contents autosize overflow
ll = new OpenLayers.LonLat(65,15);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored popup wide long fixed contents autosize closebox overflow
ll = new OpenLayers.LonLat(70,15);
popupClass = AutoSizeAnchored;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true, true);
@@ -348,52 +348,52 @@
//anchored bubble popup small contents no autosize
var ll = new OpenLayers.LonLat(-55,5);
popupClass = OpenLayers.Popup.AnchoredBubble;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false);
//anchored bubble popup small contents no autosize closebox
var ll = new OpenLayers.LonLat(-50,5);
popupClass = OpenLayers.Popup.AnchoredBubble;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
//anchored bubble popup small contents autosize
ll = new OpenLayers.LonLat(-40,5);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false);
//anchored bubble popup small contents autosize closebox
ll = new OpenLayers.LonLat(-35,5);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
//anchored bubble popup small contents autosize minsize
ll = new OpenLayers.LonLat(-25,5);
popupClass = AutoSizeAnchoredBubbleMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false);
//anchored bubble popup small contents autosize minsize closebox
ll = new OpenLayers.LonLat(-20,5);
popupClass = AutoSizeAnchoredBubbleMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
//anchored bubble popup small contents autosize maxsize
ll = new OpenLayers.LonLat(-10,5);
popupClass = AutoSizeAnchoredBubbleMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false);
//anchored bubble popup small contents autosize maxsize closebox
ll = new OpenLayers.LonLat(-5,5);
popupClass = AutoSizeAnchoredBubbleMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
@@ -426,39 +426,39 @@
//anchored bubble popup wide short fixed contents autosize
ll = new OpenLayers.LonLat(35,5);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="wideshort.jpg"></img>'
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML);
//anchored bubble popup wide short fixed contents autosize closebox
ll = new OpenLayers.LonLat(40,5);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="wideshort.jpg"></img>'
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true);
//anchored bubble popup thin long fixed contents autosize
ll = new OpenLayers.LonLat(50,5);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="thinlong.jpg"></img>'
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML);
//anchored bubble popup thin long fixed contents autosize closebox
ll = new OpenLayers.LonLat(55,5);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="thinlong.jpg"></img>'
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true);
//anchored bubble popup wide long fixed contents autosize
ll = new OpenLayers.LonLat(65,5);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML);
//anchored bubble popup wide long fixed contents autosize closebox
ll = new OpenLayers.LonLat(70,5);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true);
//
@@ -468,52 +468,52 @@
//anchored bubble popup small contents no autosize
var ll = new OpenLayers.LonLat(-55,0);
popupClass = OpenLayers.Popup.AnchoredBubble;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup small contents no autosize closebox
var ll = new OpenLayers.LonLat(-50,0);
popupClass = OpenLayers.Popup.AnchoredBubble;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored bubble popup small contents autosize
ll = new OpenLayers.LonLat(-40,0);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup small contents autosize closebox
ll = new OpenLayers.LonLat(-35,0);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored bubble popup small contents autosize minsize
ll = new OpenLayers.LonLat(-25,0);
popupClass = AutoSizeAnchoredBubbleMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup small contents autosize minsize closebox
ll = new OpenLayers.LonLat(-20,0);
popupClass = AutoSizeAnchoredBubbleMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored bubble popup small contents autosize maxsize
ll = new OpenLayers.LonLat(-10,0);
popupClass = AutoSizeAnchoredBubbleMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup small contents autosize maxsize closebox
ll = new OpenLayers.LonLat(-5,0);
popupClass = AutoSizeAnchoredBubbleMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
@@ -546,39 +546,39 @@
//anchored bubble popup wide short fixed contents autosize overflow
ll = new OpenLayers.LonLat(35,0);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="wideshort.jpg"></img>'
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup wide short fixed contents autosize closebox overflow
ll = new OpenLayers.LonLat(40,0);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="wideshort.jpg"></img>'
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored bubble popup thin long fixed contents autosize overflow
ll = new OpenLayers.LonLat(50,0);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="thinlong.jpg"></img>'
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup thin long fixed contents autosize closebox overflow
ll = new OpenLayers.LonLat(55,0);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="thinlong.jpg"></img>'
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored bubble popup wide long fixed contents autosize overflow
ll = new OpenLayers.LonLat(65,0);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup wide long fixed contents autosize closebox overflow
ll = new OpenLayers.LonLat(70,0);
popupClass = AutoSizeAnchoredBubble;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true, true);
//FRAMED
@@ -590,52 +590,52 @@
//anchored bubble popup small contents no autosize
var ll = new OpenLayers.LonLat(-55,-15);
popupClass = OpenLayers.Popup.FramedCloud;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false);
//anchored bubble popup small contents no autosize closebox
var ll = new OpenLayers.LonLat(-50,-15);
popupClass = OpenLayers.Popup.FramedCloud;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
//anchored bubble popup small contents autosize
ll = new OpenLayers.LonLat(-40,-15);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false);
//anchored bubble popup small contents autosize closebox
ll = new OpenLayers.LonLat(-35,-15);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
//anchored bubble popup small contents autosize minsize
ll = new OpenLayers.LonLat(-25,-15);
popupClass = AutoSizeFramedCloudMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false);
//anchored bubble popup small contents autosize minsize closebox
ll = new OpenLayers.LonLat(-20,-15);
popupClass = AutoSizeFramedCloudMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
//anchored bubble popup small contents autosize maxsize
ll = new OpenLayers.LonLat(-10,-15);
popupClass = AutoSizeFramedCloudMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false);
//anchored bubble popup small contents autosize maxsize closebox
ll = new OpenLayers.LonLat(-5,-15);
popupClass = AutoSizeFramedCloudMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true);
@@ -668,39 +668,39 @@
//anchored bubble popup wide short fixed contents autosize
ll = new OpenLayers.LonLat(35,-15);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="wideshort.jpg"></img>'
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML);
//anchored bubble popup wide short fixed contents autosize closebox
ll = new OpenLayers.LonLat(40,-15);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="wideshort.jpg"></img>'
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true);
//anchored bubble popup thin long fixed contents autosize
ll = new OpenLayers.LonLat(50,-15);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="thinlong.jpg"></img>'
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML);
//anchored bubble popup thin long fixed contents autosize closebox
ll = new OpenLayers.LonLat(55,-15);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="thinlong.jpg"></img>'
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true);
//anchored bubble popup wide long fixed contents autosize
ll = new OpenLayers.LonLat(65,-15);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML);
//anchored bubble popup wide long fixed contents autosize closebox
ll = new OpenLayers.LonLat(70,-15);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true);
//
@@ -710,52 +710,52 @@
//anchored bubble popup small contents no autosize
var ll = new OpenLayers.LonLat(-55,-20);
popupClass = OpenLayers.Popup.FramedCloud;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup small contents no autosize closebox
var ll = new OpenLayers.LonLat(-50,-20);
popupClass = OpenLayers.Popup.FramedCloud;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored bubble popup small contents autosize
ll = new OpenLayers.LonLat(-40,-20);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup small contents autosize closebox
ll = new OpenLayers.LonLat(-35,-20);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored bubble popup small contents autosize minsize
ll = new OpenLayers.LonLat(-25,-20);
popupClass = AutoSizeFramedCloudMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup small contents autosize minsize closebox
ll = new OpenLayers.LonLat(-20,-20);
popupClass = AutoSizeFramedCloudMinSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored bubble popup small contents autosize maxsize
ll = new OpenLayers.LonLat(-10,-20);
popupClass = AutoSizeFramedCloudMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup small contents autosize maxsize closebox
ll = new OpenLayers.LonLat(-5,-20);
popupClass = AutoSizeFramedCloudMaxSize;
- popupContentHTML = '<img src="small.jpg"></img>';
+ popupContentHTML = '<img src="img/small.jpg"></img>';
addMarker(ll, popupClass, popupContentHTML, true, true);
@@ -788,39 +788,39 @@
//anchored bubble popup wide short fixed contents autosize overflow
ll = new OpenLayers.LonLat(35,-20);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="wideshort.jpg"></img>'
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup wide short fixed contents autosize closebox overflow
ll = new OpenLayers.LonLat(40,-20);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="wideshort.jpg"></img>'
+ popupContentHTML = '<img src="img/wideshort.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored bubble popup thin long fixed contents autosize overflow
ll = new OpenLayers.LonLat(50,-20);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="thinlong.jpg"></img>'
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup thin long fixed contents autosize closebox overflow
ll = new OpenLayers.LonLat(55,-20);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="thinlong.jpg"></img>'
+ popupContentHTML = '<img src="img/thinlong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true, true);
//anchored bubble popup wide long fixed contents autosize overflow
ll = new OpenLayers.LonLat(65,-20);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, false, true);
//anchored bubble popup wide long fixed contents autosize closebox overflow
ll = new OpenLayers.LonLat(70,-20);
popupClass = AutoSizeFramedCloud;
- popupContentHTML = '<img src="widelong.jpg"></img>'
+ popupContentHTML = '<img src="img/widelong.jpg"></img>'
addMarker(ll, popupClass, popupContentHTML, true, true);
@@ -881,16 +881,16 @@
<div id="map" class="smallmap"></div>
<!-- preloading these images so the autosize will work correctly -->
- <img src="wideshort.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
- <img src="widelong.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
- <img src="thinlong.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
+ <img src="img/wideshort.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
+ <img src="img/widelong.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
+ <img src="img/thinlong.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
<p> All of the images in this file a pre-cached, meaning they are
loaded immediately when you load the page (they are just placed
far offscreen, that's why you don't see them).
</p>
<br>
- <p> The only image that is *not* preloaded is small.jpg, the brazilian
+ <p> The only image that is *not* preloaded is img/small.jpg, the brazilian
flag. We do this in order to test out to make sure that our auto-sizing
code does in fact activate itself as the images load. To verify
this, clear your cache and reload this example page. Click on
Deleted: sandbox/bartvde/sencha/openlayers/examples/popupMatrix.jpg
===================================================================
(Binary files differ)
Deleted: sandbox/bartvde/sencha/openlayers/examples/small.jpg
===================================================================
(Binary files differ)
Modified: sandbox/bartvde/sencha/openlayers/examples/style.css
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/style.css 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/examples/style.css 2011-02-23 15:46:23 UTC (rev 11337)
@@ -121,3 +121,19 @@
display : none;
}
}
+ at media only screen and (orientation: landscape) and (max-width: 600px) {
+ #shortdesc {
+ float: right;
+ width: 25%;
+ }
+ #map {
+ width: 70%;
+ }
+ #docs {
+ font-size: 12px;
+ }
+}
+body {
+ -webkit-text-size-adjust: none;
+}
+
Copied: sandbox/bartvde/sencha/openlayers/examples/style.mobile.css (from rev 11335, trunk/openlayers/examples/style.mobile.css)
===================================================================
--- sandbox/bartvde/sencha/openlayers/examples/style.mobile.css (rev 0)
+++ sandbox/bartvde/sencha/openlayers/examples/style.mobile.css 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,25 @@
+div.olControlZoomPanel {
+ height: 108px
+ width: 36px;
+ position: absolute;
+ top: 20px;
+ left: 20px;
+}
+div.olControlZoomPanel div {
+ width: 36px;
+ height: 36px;
+ background-image: url(img/mobile-zoombar.png);
+ left: 0;
+}
+div.olControlZoomPanel .olControlZoomInItemInactive {
+ top: 0;
+ background-position: 0 0;
+}
+div.olControlZoomPanel .olControlZoomToMaxExtentItemInactive {
+ top: 36px;
+ background-position: 0 -36px;
+}
+div.olControlZoomPanel .olControlZoomOutItemInactive {
+ top: 72px;
+ background-position: 0 -72px;
+}
Deleted: sandbox/bartvde/sencha/openlayers/examples/thinlong.jpg
===================================================================
(Binary files differ)
Deleted: sandbox/bartvde/sencha/openlayers/examples/widelong.jpg
===================================================================
(Binary files differ)
Deleted: sandbox/bartvde/sencha/openlayers/examples/wideshort.jpg
===================================================================
(Binary files differ)
Modified: sandbox/bartvde/sencha/openlayers/lib/OpenLayers/BaseTypes.js
===================================================================
--- sandbox/bartvde/sencha/openlayers/lib/OpenLayers/BaseTypes.js 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/lib/OpenLayers/BaseTypes.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -632,9 +632,11 @@
* APIMethod: parse
* Generate a date object from a string. The format for the string follows
* the profile of ISO 8601 for date and time on the Internet (see
- * http://tools.ietf.org/html/rfc3339). If the parse method on
- * the Date constructor returns a valid date for the given string,
- * that method is used.
+ * http://tools.ietf.org/html/rfc3339). We don't call the native
+ * Date.parse because of inconsistency between implmentations. In
+ * Chrome, calling Date.parse with a string that doesn't contain any
+ * indication of the timezone (e.g. "2011"), the date is interpreted
+ * in local time. On Firefox, the assumption is UTC.
*
* Parameters:
* str - {String} A string representing the date (e.g.
@@ -647,37 +649,31 @@
*/
parse: function(str) {
var date;
- // first check if the native parse method can parse it
- var elapsed = Date.parse(str);
- if (!isNaN(elapsed)) {
- date = new Date(elapsed);
- } else {
- var match = str.match(/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))?$/);
- if (match && (match[1] || match[7])) { // must have at least year or time
- var year = parseInt(match[1], 10) || 0;
- var month = (parseInt(match[2], 10) - 1) || 0;
- var day = parseInt(match[3], 10) || 1;
- date = new Date(Date.UTC(year, month, day));
- // optional time
- var type = match[7];
- if (type) {
- var hours = parseInt(match[4], 10);
- var minutes = parseInt(match[5], 10);
- var secFrac = parseFloat(match[6]);
- var seconds = secFrac | 0;
- var milliseconds = Math.round(1000 * (secFrac - seconds));
- date.setUTCHours(hours, minutes, seconds, milliseconds);
- // check offset
- if (type !== "Z") {
- var hoursOffset = parseInt(type, 10);
- var minutesOffset = parseInt(match[8], 10) || 0;
- var offset = -1000 * (60 * (hoursOffset * 60) + minutesOffset * 60);
- date = new Date(date.getTime() + offset);
- }
+ var match = str.match(/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))?$/);
+ if (match && (match[1] || match[7])) { // must have at least year or time
+ var year = parseInt(match[1], 10) || 0;
+ var month = (parseInt(match[2], 10) - 1) || 0;
+ var day = parseInt(match[3], 10) || 1;
+ date = new Date(Date.UTC(year, month, day));
+ // optional time
+ var type = match[7];
+ if (type) {
+ var hours = parseInt(match[4], 10);
+ var minutes = parseInt(match[5], 10);
+ var secFrac = parseFloat(match[6]);
+ var seconds = secFrac | 0;
+ var milliseconds = Math.round(1000 * (secFrac - seconds));
+ date.setUTCHours(hours, minutes, seconds, milliseconds);
+ // check offset
+ if (type !== "Z") {
+ var hoursOffset = parseInt(type, 10);
+ var minutesOffset = parseInt(match[8], 10) || 0;
+ var offset = -1000 * (60 * (hoursOffset * 60) + minutesOffset * 60);
+ date = new Date(date.getTime() + offset);
}
- } else {
- date = new Date("invalid");
}
+ } else {
+ date = new Date("invalid");
}
return date;
}
Modified: sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/DragPan.js
===================================================================
--- sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/DragPan.js 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/DragPan.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -43,16 +43,48 @@
* mouse cursor leaves the map viewport. Default is false.
*/
documentDrag: false,
-
+
/**
+ * Property: kinetic
+ * {OpenLayers.Kinetic} The OpenLayers.Kinetic object.
+ */
+ kinetic: null,
+
+ /**
+ * APIProperty: enableKinetic
+ * {Boolean} Set this option to enable "kinetic dragging". Can be
+ * set to true or to an object. If set to an object this
+ * object will be passed to the {<OpenLayers.Kinetic>}
+ * constructor. Defaults to false.
+ */
+ enableKinetic: false,
+
+ /**
+ * APIProperty: kineticInterval
+ * {Integer} Interval in milliseconds between 2 steps in the "kinetic
+ * scrolling". Applies only if enableKinetic is set. Defaults
+ * to 10 milliseconds.
+ */
+ kineticInterval: 10,
+
+
+ /**
* Method: draw
* Creates a Drag handler, using <panMap> and
* <panMapDone> as callbacks.
*/
draw: function() {
+ if(this.enableKinetic) {
+ var config = {interval: this.kineticInterval};
+ if(typeof this.enableKinetic === "object") {
+ config = OpenLayers.Util.extend(config, this.enableKinetic);
+ }
+ this.kinetic = new OpenLayers.Kinetic(config);
+ }
this.handler = new OpenLayers.Handler.Drag(this, {
"move": this.panMap,
- "done": this.panMapDone
+ "done": this.panMapDone,
+ "down": this.panMapStart
}, {
interval: this.interval,
documentDrag: this.documentDrag
@@ -61,17 +93,29 @@
},
/**
+ * Method: panMapStart
+ */
+ panMapStart: function() {
+ if(this.kinetic) {
+ this.kinetic.begin();
+ }
+ },
+
+ /**
* Method: panMap
*
* Parameters:
* xy - {<OpenLayers.Pixel>} Pixel of the mouse position
*/
panMap: function(xy) {
+ if(this.kinetic) {
+ this.kinetic.update(xy);
+ }
this.panned = true;
this.map.pan(
this.handler.last.x - xy.x,
this.handler.last.y - xy.y,
- {dragging: this.handler.dragging, animate: false}
+ {dragging: true, animate: false}
);
},
@@ -85,7 +129,21 @@
*/
panMapDone: function(xy) {
if(this.panned) {
- this.panMap(xy);
+ var res = null;
+ if (this.kinetic) {
+ res = this.kinetic.end(xy);
+ }
+ this.map.pan(
+ this.handler.last.x - xy.x,
+ this.handler.last.y - xy.y,
+ {dragging: !!res, animate: false}
+ );
+ if (res) {
+ var self = this;
+ this.kinetic.move(res, function(x, y, end) {
+ self.map.pan(x, y, {dragging: !end, animate: false});
+ });
+ }
this.panned = false;
}
},
Copied: sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/Geolocate.js (from rev 11335, trunk/openlayers/lib/OpenLayers/Control/Geolocate.js)
===================================================================
--- sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/Geolocate.js (rev 0)
+++ sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/Geolocate.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,172 @@
+/* Copyright (c) 2006-2011 by OpenLayers Contributors (see authors.txt for
+ * full list of contributors). Published under the Clear BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/license.txt for the
+ * full text of the license. */
+
+/**
+ * @requires OpenLayers/Control.js
+ * @requires OpenLayers/Geometry/Point.js
+ * @requires OpenLayers/Projection.js
+ */
+
+/**
+ * Class: OpenLayers.Control.Geolocate
+ * The Geolocate control wraps w3c geolocation API into control that can be
+ * bound to a map, and generate events on location update
+ *
+ * To use this control requires to load the proj4js library if the projection
+ * of the map is not EPSG:4326 or EPSG:900913.
+ *
+ * Inherits from:
+ * - <OpenLayers.Control>
+ */
+OpenLayers.Control.Geolocate = OpenLayers.Class(OpenLayers.Control, {
+
+ /**
+ * Constant: EVENT_TYPES
+ * Supported event types:
+ * - *locationupdated* Triggered when browser return a new position
+ * - *locationfailed* Triggered when geolocation has failed
+ * - *locationuncapable* Triggered when control is activated on a browser
+ * which doesn't support geolocation
+ */
+ EVENT_TYPES: ["locationupdated", "locationfailed", "locationuncapable"],
+
+ /**
+ * Property: geolocation
+ * {Object} The geolocation engine, as a property to be possibly mocked.
+ */
+ geolocation: navigator.geolocation,
+
+ /**
+ * APIProperty: bind
+ * {Boolean} If true, map center will be set on location update.
+ */
+ bind: true,
+
+ /**
+ * APIProperty: watch
+ * {Boolean} If true, position will be update regularly.
+ */
+ watch: false,
+
+ /**
+ * APIProperty: geolocationOptions
+ * {Object} Options to pass to the navigator's geolocation API. See
+ * <http://dev.w3.org/geo/api/spec-source.html>. No specific
+ * option is passed to the geolocation API by default.
+ */
+ geolocationOptions: null,
+
+ /**
+ * Constructor: OpenLayers.Control.Geolocate
+ * Create a new control to deal with browser geolocation API
+ *
+ */
+ initialize: function(options) {
+ // concatenate events specific to this control with those from the base
+ this.EVENT_TYPES =
+ OpenLayers.Control.Geolocate.prototype.EVENT_TYPES.concat(
+ OpenLayers.Control.prototype.EVENT_TYPES
+ );
+ this.geolocationOptions = {};
+ OpenLayers.Control.prototype.initialize.apply(this, [options]);
+ },
+
+ /**
+ * Method: activate
+ * Activates the control.
+ *
+ * Returns:
+ * {Boolean} The control was effectively activated.
+ */
+ activate: function () {
+ if (!this.geolocation) {
+ this.events.triggerEvent("locationuncapable");
+ return false;
+ }
+ if (OpenLayers.Control.prototype.activate.apply(this, arguments)) {
+ if (this.watch) {
+ this.watchId = this.geolocation.watchPosition(
+ OpenLayers.Function.bind(this.geolocate, this),
+ OpenLayers.Function.bind(this.failure, this),
+ this.geolocationOptions
+ );
+ } else {
+ this.getCurrentLocation();
+ }
+ return true;
+ }
+ return false;
+ },
+
+ /**
+ * Method: deactivate
+ * Deactivates the control.
+ *
+ * Returns:
+ * {Boolean} The control was effectively deactivated.
+ */
+ deactivate: function () {
+ if (this.active && this.watchId !== null) {
+ this.geolocation.clearWatch(this.watchId);
+ }
+ return OpenLayers.Control.prototype.deactivate.apply(
+ this, arguments
+ );
+ },
+
+ /**
+ * Method: geolocate
+ * Activates the control.
+ *
+ */
+ geolocate: function (position) {
+ var center = new OpenLayers.LonLat(
+ position.coords.longitude,
+ position.coords.latitude
+ ).transform(
+ new OpenLayers.Projection("EPSG:4326"),
+ this.map.getProjectionObject()
+ );
+ if (this.bind) {
+ this.map.setCenter(center);
+ }
+ this.events.triggerEvent("locationupdated", {
+ position: position,
+ point: new OpenLayers.Geometry.Point(
+ center.lon, center.lat
+ )
+ });
+ },
+
+ /**
+ * APIMethod: getCurrentLocation
+ *
+ * Returns:
+ * {Boolean} Returns true if a event will be fired (successfull
+ * registration)
+ */
+ getCurrentLocation: function() {
+ if (!this.active || this.watch) {
+ return false;
+ }
+ this.geolocation.getCurrentPosition(
+ OpenLayers.Function.bind(this.geolocate, this),
+ OpenLayers.Function.bind(this.failure, this),
+ this.geolocationOptions
+ );
+ return true;
+ },
+
+ /**
+ * Method: failure
+ * method called on browser's geolocation failure
+ *
+ */
+ failure: function (error) {
+ this.events.triggerEvent("locationfailed", {error: error});
+ },
+
+ CLASS_NAME: "OpenLayers.Control.Geolocate"
+});
Modified: sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/PanZoomBar.js
===================================================================
--- sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/PanZoomBar.js 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/PanZoomBar.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -386,7 +386,8 @@
zoomLevel = Math.min(Math.max(zoomLevel, 0),
this.map.getNumZoomLevels() - 1);
} else {
- zoomLevel += Math.round(this.deltaY/this.zoomStopHeight);
+ zoomLevel += this.deltaY/this.zoomStopHeight;
+ zoomLevel = Math.max(Math.round(zoomLevel), 0);
}
this.map.zoomTo(zoomLevel);
this.mouseDragStart = null;
Modified: sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/TouchNavigation.js
===================================================================
--- sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/TouchNavigation.js 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Control/TouchNavigation.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -128,7 +128,7 @@
* evt - {Event}
*/
defaultClick: function (evt) {
- if(evt.lasttouches && evt.lasttouches.length == 2) {
+ if(evt.lastTouches && evt.lastTouches.length == 2) {
this.map.zoomOut();
}
},
Modified: sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Handler/Click.js
===================================================================
--- sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Handler/Click.js 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Handler/Click.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -97,6 +97,12 @@
last: null,
/**
+ * Property: touch
+ * {Boolean} Are we on a touch enabled device? Default is false.
+ */
+ touch: false,
+
+ /**
* Property: rightclickTimerId
* {Number} The id of the right mouse timeout waiting to clear the
* <delayedEvent>.
@@ -148,6 +154,7 @@
* {Boolean} Continue propagating this event.
*/
touchstart: function(evt) {
+ this.touch = true;
this.down = evt;
this.last = null;
return true;
@@ -262,10 +269,10 @@
* touches property from last touchstart or touchmove
*/
touchend: function(evt) {
- if(!evt) {
+ var last = this.last || this.down;
+ if (!evt || !last) {
return false;
}
- var last = this.last || this.down;
evt.xy = last.xy;
evt.lastTouches = last.touches;
return evt.xy ? this.click(evt) : false;
@@ -279,6 +286,10 @@
* {Boolean} Continue propagating this event.
*/
click: function(evt) {
+ // Sencha Touch emulates click events, see ticket 3079 for more info
+ if (this.touch === true && evt.type === "click") {
+ return !this.stopSingle;
+ }
if(this.passesTolerance(evt)) {
if(this.timerId != null) {
// already received a click
Copied: sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Kinetic.js (from rev 11335, trunk/openlayers/lib/OpenLayers/Kinetic.js)
===================================================================
--- sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Kinetic.js (rev 0)
+++ sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Kinetic.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,183 @@
+/* Copyright (c) 2006-2011 by OpenLayers Contributors (see authors.txt for
+ * full list of contributors). Published under the Clear BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/license.txt for the
+ * full text of the license. */
+
+OpenLayers.Kinetic = OpenLayers.Class({
+
+ /**
+ * Property: threshold
+ * In most cases changing the threshold isn't needed.
+ * In px/ms, default to 0.
+ */
+ threshold: 0,
+
+ /**
+ * Property: interval
+ * {Integer} Interval in milliseconds between 2 steps in the "kinetic
+ * dragging". Defaults to 10 milliseconds.
+ */
+ interval: 10,
+
+ /**
+ * Property: deceleration
+ * {Float} the deseleration in px/ms², default to 0.0035.
+ */
+ deceleration: 0.0035,
+
+ /**
+ * Property: nbPoints
+ * {Integer} the number of points we use to calculate the kinetic
+ * initial values.
+ */
+ nbPoints: 100,
+
+ /**
+ * Property: delay
+ * {Float} time to consider to calculate the kinetic initial values.
+ * In ms, default to 200.
+ */
+ delay: 200,
+
+ /**
+ * Property: points
+ * List of points use to calculate the kinetic initial values.
+ */
+ points: undefined,
+
+ /**
+ * Property: timerId
+ * ID of the timer.
+ */
+ timerId: undefined,
+
+ /**
+ * Constructor: OpenLayers.Kinetic
+ *
+ * Parameters:
+ * options - {Object}
+ */
+ initialize: function(options) {
+ OpenLayers.Util.extend(this, options);
+ },
+
+ /**
+ * Method: begin
+ * Begins the dragging.
+ */
+ begin: function() {
+ clearInterval(this.timerId);
+ this.timerId = undefined;
+ this.points = [];
+ },
+
+ /**
+ * Method: update
+ * Updates during the dragging.
+ *
+ * Parameters:
+ * xy - {<OpenLayers.Pixel>} The new position.
+ */
+ update: function(xy) {
+ this.points.unshift({xy: xy, tick: new Date().getTime()});
+ if (this.points.length > this.nbPoints) {
+ this.points.pop();
+ }
+ },
+
+ /**
+ * Method: end
+ * Ends the dragging, start the kinetic.
+ *
+ * Parameters:
+ * xy - {<OpenLayers.Pixel>} The last position.
+ *
+ * Returns:
+ * {Object} An object with two properties: "speed", and "theta". The
+ * "speed" and "theta" values are to be passed to the move
+ * function when starting the animation.
+ */
+ end: function(xy) {
+ var last, now = new Date().getTime();
+ for (var i = 0, l = this.points.length, point; i < l; i++) {
+ point = this.points[i];
+ if (now - point.tick > this.delay) {
+ break;
+ }
+ last = point;
+ }
+ if (!last) {
+ return;
+ }
+ var time = new Date().getTime() - last.tick;
+ var dist = Math.sqrt(Math.pow(xy.x - last.xy.x, 2) +
+ Math.pow(xy.y - last.xy.y, 2));
+ var speed = dist / time;
+ if (speed == 0 || speed < this.threshold) {
+ return;
+ }
+ var theta = Math.asin((xy.y - last.xy.y) / dist);
+ if (last.xy.x <= xy.x) {
+ theta = Math.PI - theta;
+ }
+ return {speed: speed, theta: theta};
+ },
+
+ /**
+ * Method: move
+ * Launch the kinetic move pan.
+ *
+ * Parameters:
+ * info - {Object} An object with two properties, "speed", and "theta".
+ * These values are those returned from the "end" call.
+ * callback - {Function} Function called on every step of the animation,
+ * receives x, y (values to pan), end (is the last point).
+ */
+ move: function(info, callback) {
+ var v0 = info.speed;
+ var fx = Math.cos(info.theta);
+ var fy = -Math.sin(info.theta);
+
+ var time = 0;
+ var initialTime = new Date().getTime();
+
+ var lastX = 0;
+ var lastY = 0;
+
+ var timerCallback = function() {
+ if (this.timerId == null) {
+ return;
+ }
+
+ time += this.interval;
+ var realTime = new Date().getTime() - initialTime;
+ var t = (time + realTime) / 2.0;
+
+ var p = (-this.deceleration * Math.pow(t, 2)) / 2.0 + v0 * t;
+ var x = p * fx;
+ var y = p * fy;
+
+ var args = {};
+ args.end = false;
+ var v = -this.deceleration * t + v0;
+
+ if (v <= 0) {
+ clearInterval(this.timerId);
+ this.timerId = null;
+ args.end = true;
+ }
+
+ args.x = x - lastX;
+ args.y = y - lastY;
+ lastX = x;
+ lastY = y;
+ callback(args.x, args.y, args.end);
+ };
+
+ this.timerId = window.setInterval(
+ OpenLayers.Function.bind(timerCallback, this),
+ this.interval);
+ },
+
+ CLASS_NAME: "OpenLayers.Kinetic"
+});
Modified: sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Layer/Grid.js
===================================================================
--- sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Layer/Grid.js 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/lib/OpenLayers/Layer/Grid.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -239,7 +239,6 @@
if (this.timerId != null) {
window.clearTimeout(this.timerId);
}
- this._bounds = bounds;
this.timerId = window.setTimeout(
this._moveGriddedTiles,
this.tileLoadingDelay
@@ -663,7 +662,6 @@
* Method: moveGriddedTiles
*/
moveGriddedTiles: function() {
- var bounds = this._bounds;
var shifted = true;
var buffer = this.buffer || 1;
var tlLayer = this.grid[0][0].position;
@@ -678,7 +676,6 @@
this.shiftRow(false);
} else {
shifted = false;
- delete this._bounds;
}
if (shifted) {
// we may have other row or columns to shift, schedule it
Modified: sandbox/bartvde/sencha/openlayers/lib/OpenLayers.js
===================================================================
--- sandbox/bartvde/sencha/openlayers/lib/OpenLayers.js 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/lib/OpenLayers.js 2011-02-23 15:46:23 UTC (rev 11337)
@@ -105,6 +105,7 @@
"OpenLayers/BaseTypes/Size.js",
"OpenLayers/Console.js",
"OpenLayers/Tween.js",
+ "OpenLayers/Kinetic.js",
"Rico/Corner.js",
"Rico/Color.js",
"OpenLayers/Ajax.js",
@@ -330,6 +331,7 @@
"OpenLayers/Control/ZoomOut.js",
"OpenLayers/Control/ZoomPanel.js",
"OpenLayers/Control/EditingToolbar.js",
+ "OpenLayers/Control/Geolocate.js",
"OpenLayers/Symbolizer.js",
"OpenLayers/Symbolizer/Point.js",
"OpenLayers/Symbolizer/Line.js",
Modified: sandbox/bartvde/sencha/openlayers/tests/BaseTypes/Bounds.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/BaseTypes/Bounds.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/BaseTypes/Bounds.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -606,6 +606,7 @@
t.ok( bounds.equals(b), "bounds is set correctly");
//null values
+ OpenLayers.Lang.setCode('en');
var desiredMsg = "You must pass both x and y values to the add function.";
OpenLayers.Console.error = function(msg) {
t.eq(msg, desiredMsg, "error correctly reported");
Modified: sandbox/bartvde/sencha/openlayers/tests/BaseTypes/LonLat.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/BaseTypes/LonLat.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/BaseTypes/LonLat.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -64,6 +64,7 @@
t.ok( addpx.equals(ll), "addpx is set correctly");
//null values
+ OpenLayers.Lang.setCode('en');
var desiredMsg = "You must pass both lon and lat values to the add function.";
OpenLayers.Console.error = function(msg) {
t.eq(msg, desiredMsg, "error correctly reported");
Modified: sandbox/bartvde/sencha/openlayers/tests/BaseTypes/Pixel.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/BaseTypes/Pixel.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/BaseTypes/Pixel.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -74,6 +74,7 @@
t.ok( pixel.equals(px), "returned pixel is correct");
//null values
+ OpenLayers.Lang.setCode('en');
var desiredMsg = "You must pass both x and y values to the add function.";
OpenLayers.Console.error = function(msg) {
t.eq(msg, desiredMsg, "error correctly reported");
Copied: sandbox/bartvde/sencha/openlayers/tests/Control/Geolocate.html (from rev 11335, trunk/openlayers/tests/Control/Geolocate.html)
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/Control/Geolocate.html (rev 0)
+++ sandbox/bartvde/sencha/openlayers/tests/Control/Geolocate.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,130 @@
+<html>
+<head>
+ <script src="../../lib/OpenLayers.js"></script>
+ <script type="text/javascript">
+ var map, control, centerLL
+ watch = null,
+ geolocation= {
+ getCurrentPosition: function(f) {
+ f({
+ coords: { latitude: 10, longitude: 10 }
+ });
+ },
+ watchPosition: function(f) {
+ watch = true;
+ },
+ clearWatch: function() {
+ watch = null;
+ }
+ };
+
+ function test_initialize(t) {
+ t.plan(3);
+ control = new OpenLayers.Control.Geolocate({geolocationOptions: {foo: 'bar'}});
+ t.ok(control instanceof OpenLayers.Control.Geolocate,
+ "new OpenLayers.Control returns object" );
+ t.eq(control.displayClass, "olControlGeolocate", "displayClass is correct" );
+ t.eq(control.geolocationOptions.foo, 'bar',
+ 'provided geolocation options are set in the geolocationOptions prop');
+ }
+ function test_bind(t) {
+ t.plan(3);
+ var control = new OpenLayers.Control.Geolocate({
+ geolocation: geolocation
+ });
+ control.events.register('locationupdated', null, function() {
+ t.ok(true, 'locationupdated event is fired when bound');
+ });
+ map.addControl(control);
+ control.activate();
+ var center = map.getCenter();
+ t.eq(center.lon, 10, 'bound control sets the map lon');
+ t.eq(center.lat, 10, 'bound control sets the map lat');
+ control.deactivate();
+ map.removeControl(control);
+ map.setCenter(centerLL);
+ }
+ function test_unbind(t) {
+ t.plan(3);
+ var control = new OpenLayers.Control.Geolocate({
+ geolocation: geolocation,
+ bind: false
+ });
+ control.events.register('locationupdated', null, function() {
+ t.ok(true, 'locationupdated event is fired when unbound');
+ });
+ map.addControl(control);
+ control.activate();
+ var center = map.getCenter();
+ t.eq(center.lon, 0, 'unbound control doesnt sets the map lon');
+ t.eq(center.lat, 0, 'unbound control doesnt sets the map lat');
+ control.deactivate();
+ map.removeControl(control);
+ map.setCenter(centerLL);
+ }
+ function test_getCurrentLocation(t) {
+ t.plan(5);
+ var control = new OpenLayers.Control.Geolocate({
+ geolocation: geolocation
+ });
+ map.addControl(control);
+ t.eq(control.getCurrentLocation(), false, 'getCurrentLocation return false if control hasnt been activated');
+ control.activate();
+ map.setCenter(centerLL);
+ t.eq(control.getCurrentLocation(), true, 'getCurrentLocation return true if control has been activated');
+ var center = map.getCenter();
+ t.eq(center.lon, 10, 'bound control sets the map lon when calling getCurrentLocation');
+ t.eq(center.lat, 10, 'bound control sets the map lat when calling getCurrentLocation');
+ control.deactivate();
+ map.removeControl(control);
+ map.setCenter(centerLL);
+ var control2 = new OpenLayers.Control.Geolocate({
+ geolocation: geolocation
+ });
+ map.addControl(control2);
+ t.eq(control2.getCurrentLocation(), false, 'getCurrentLocation return false if control is in watch mode');
+ control2.deactivate();
+ map.removeControl(control2);
+ map.setCenter(centerLL);
+ }
+ function test_watch(t) {
+ t.plan(2);
+ var control = new OpenLayers.Control.Geolocate({
+ geolocation: geolocation,
+ watch: true
+ });
+ map.addControl(control);
+ control.activate();
+ t.eq(watch, true, 'watch option makes calls to watchPosition');
+ control.deactivate();
+ t.eq(watch, null, 'deactivate control calls the clearwatch');
+ map.removeControl(control);
+ map.setCenter(centerLL);
+ }
+ function test_uncapable(t) {
+ t.plan(1);
+ var control = new OpenLayers.Control.Geolocate({
+ geolocation: null,
+ bind: false
+ });
+ control.events.register('locationuncapable', null, function() {
+ t.ok(true,'uncapable browser fired locationuncapable event');
+ });
+ map.addControl(control);
+ control.activate();
+ }
+ function loader() {
+ map = new OpenLayers.Map('map');
+ var layer = new OpenLayers.Layer.WMS("Test Layer",
+ "http://labs.metacarta.com/wms-c/Basic.py?",
+ {layers: "basic"});
+ map.addLayer(layer);
+ centerLL = new OpenLayers.LonLat(0,0);
+ map.setCenter(centerLL, 5);
+ }
+ </script>
+</head>
+<body onload="loader()">
+ <div id="map" style="width: 256px; height: 256px;"/>
+</body>
+</html>
Modified: sandbox/bartvde/sencha/openlayers/tests/Control/PanZoom.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/Control/PanZoom.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/Control/PanZoom.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -72,65 +72,65 @@
simulateClick(wnd, wnd.control.buttons[0]);
t.delay_call(2, function() {
- t.ok( wnd.mapper.getCenter().lat > wnd.centerLL.lat, "Pan up works correctly" );
- t.ok(!flag.mousedown, "mousedown does not get to the map");
- t.ok(flag.mouseup, "mouseup does get to the map");
- t.ok(!flag.click, "click does not get to the map");
- t.ok(!flag.dblclick, "dblclick does not get to the map");
+ t.ok( wnd.mapper.getCenter().lat > wnd.centerLL.lat, "1) Pan up works correctly" );
+ t.ok(!flag.mousedown, "1) mousedown does not get to the map");
+ t.ok(flag.mouseup, "1) mouseup does get to the map");
+ t.ok(!flag.click, "1) click does not get to the map");
+ t.ok(!flag.dblclick, "1) dblclick does not get to the map");
resetFlags();
simulateClick(wnd, wnd.control.buttons[1]);
}, 2, function() {
- t.ok( wnd.mapper.getCenter().lon < wnd.centerLL.lon, "Pan left works correctly" );
- t.ok(!flag.mousedown, "mousedown does not get to the map");
- t.ok(flag.mouseup, "mouseup does get to the map");
- t.ok(!flag.click, "click does not get to the map");
- t.ok(!flag.dblclick, "dblclick does not get to the map");
+ t.ok( wnd.mapper.getCenter().lon < wnd.centerLL.lon, "2) Pan left works correctly" );
+ t.ok(!flag.mousedown, "2) mousedown does not get to the map");
+ t.ok(flag.mouseup, "2) mouseup does get to the map");
+ t.ok(!flag.click, "2) click does not get to the map");
+ t.ok(!flag.dblclick, "2) dblclick does not get to the map");
resetFlags();
simulateClick(wnd, wnd.control.buttons[2]);
}, 2, function() {
- t.ok( wnd.mapper.getCenter().lon == wnd.centerLL.lon, "Pan right works correctly" );
- t.ok(!flag.mousedown, "mousedown does not get to the map");
- t.ok(flag.mouseup, "mouseup does get to the map");
- t.ok(!flag.click, "click does not get to the map");
- t.ok(!flag.dblclick, "dblclick does not get to the map");
+ t.ok( wnd.mapper.getCenter().lon == wnd.centerLL.lon, "3) Pan right works correctly" );
+ t.ok(!flag.mousedown, "3) mousedown does not get to the map");
+ t.ok(flag.mouseup, "3) mouseup does get to the map");
+ t.ok(!flag.click, "3) click does not get to the map");
+ t.ok(!flag.dblclick, "3) dblclick does not get to the map");
resetFlags();
simulateClick(wnd, wnd.control.buttons[3]);
}, 2, function() {
- t.ok( wnd.mapper.getCenter().lat == wnd.centerLL.lat, "Pan down works correctly" );
- t.ok(!flag.mousedown, "mousedown does not get to the map");
- t.ok(flag.mouseup, "mouseup does get to the map");
- t.ok(!flag.click, "click does not get to the map");
- t.ok(!flag.dblclick, "dblclick does not get to the map");
+ t.ok( wnd.mapper.getCenter().lat == wnd.centerLL.lat, "4) Pan down works correctly" );
+ t.ok(!flag.mousedown, "4) mousedown does not get to the map");
+ t.ok(flag.mouseup, "4) mouseup does get to the map");
+ t.ok(!flag.click, "4) click does not get to the map");
+ t.ok(!flag.dblclick, "4) dblclick does not get to the map");
resetFlags();
simulateClick(wnd, wnd.control.buttons[4]);
}, 2, function() {
- t.eq( wnd.mapper.getZoom(), 6, "zoomin works correctly" );
- t.ok(!flag.mousedown, "mousedown does not get to the map");
- t.ok(flag.mouseup, "mouseup does get to the map");
- t.ok(!flag.click, "click does not get to the map");
- t.ok(!flag.dblclick, "dblclick does not get to the map");
+ t.eq( wnd.mapper.getZoom(), 6, "5) zoomin works correctly" );
+ t.ok(!flag.mousedown, "5) mousedown does not get to the map");
+ t.ok(flag.mouseup, "5) mouseup does get to the map");
+ t.ok(!flag.click, "5) click does not get to the map");
+ t.ok(!flag.dblclick, "5) dblclick does not get to the map");
resetFlags();
simulateClick(wnd, wnd.control.buttons[6]);
}, 2, function() {
- t.eq( wnd.mapper.getZoom(), 5, "zoomout works correctly" );
- t.ok(!flag.mousedown, "mousedown does not get to the map");
- t.ok(flag.mouseup, "mouseup does get to the map");
- t.ok(!flag.click, "click does not get to the map");
- t.ok(!flag.dblclick, "dblclick does not get to the map");
+ t.eq( wnd.mapper.getZoom(), 5, "6) zoomout works correctly" );
+ t.ok(!flag.mousedown, "6) mousedown does not get to the map");
+ t.ok(flag.mouseup, "6) mouseup does get to the map");
+ t.ok(!flag.click, "6) click does not get to the map");
+ t.ok(!flag.dblclick, "6) dblclick does not get to the map");
resetFlags();
simulateClick(wnd, wnd.control.buttons[5]);
}, 2, function() {
- t.eq( wnd.mapper.getZoom(), 2, "zoomworld works correctly" );
- t.ok(!flag.mousedown, "mousedown does not get to the map");
- t.ok(flag.mouseup, "mouseup does get to the map");
- t.ok(!flag.click, "click does not get to the map");
- t.ok(!flag.dblclick, "dblclick does not get to the map");
+ t.eq( wnd.mapper.getZoom(), 2, "7) zoomworld works correctly" );
+ t.ok(!flag.mousedown, "7) mousedown does not get to the map");
+ t.ok(flag.mouseup, "7) mouseup does get to the map");
+ t.ok(!flag.click, "7) click does not get to the map");
+ t.ok(!flag.dblclick, "7) dblclick does not get to the map");
resetFlags();
});
});
Modified: sandbox/bartvde/sencha/openlayers/tests/Control/PanZoomBar.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/Control/PanZoomBar.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/Control/PanZoomBar.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -44,7 +44,7 @@
control = new OpenLayers.Control.PanZoomBar();
map.addControl(control);
control.removeButtons();
- control._removeZoomBar();
+ map.destroy();
t.eq(control.div.childNodes.length, 0, "control's div cleared.");
t.eq(control.zoombarDiv, null, "zoombar div nullified.")
}
@@ -67,20 +67,104 @@
}
- function test_Control_PanZoomBar_forceFixedZoomLevel_divClick (t) {
+ function test_Control_PanZoomBar_forceFixedZoomLevel_divClick(t){
t.plan(1);
- map = new OpenLayers.Map('map', {controls:[], fractionalZoom: true});
- var layer = new OpenLayers.Layer.WMS("Test Layer",
- "http://octo.metacarta.com/cgi-bin/mapserv?",
- {map: "/mapdata/vmap_wms.map", layers: "basic"});
+ map = new OpenLayers.Map('map', {
+ controls: [],
+ fractionalZoom: true
+ });
+ var layer = new OpenLayers.Layer.WMS("Test Layer", "http://octo.metacarta.com/cgi-bin/mapserv?", {
+ map: "/mapdata/vmap_wms.map",
+ layers: "basic"
+ });
map.addLayer(layer);
- control = new OpenLayers.Control.PanZoomBar({forceFixedZoomLevel: true});
+ control = new OpenLayers.Control.PanZoomBar({
+ forceFixedZoomLevel: true
+ });
map.addControl(control);
-
- control.divClick({'xy': {'x': 0, 'y': 49}, which: 1});
- t.eq(map.zoom, 11, "forceFixedZoomLevel makes sure only fixed zoom levels are used even if the map has fractionalZoom");
+
+ control.divClick({
+ 'xy': {
+ 'x': 0,
+ 'y': 49
+ },
+ which: 1
+ });
+ t.eq(map.zoom, 11, "forceFixedZoomLevel makes sure that after a div click only fixed zoom levels are used even if the map has fractionalZoom");
+ }
+
+ function test_Control_PanZoomBar_forceFixedZoomLevel_zoomBarUp (t) {
+ var numRandomDrags = 25;
+ // plan one static recorded test and two for every random drag
+ t.plan(1 + (numRandomDrags * 2));
+
+
+ var map = new OpenLayers.Map('map', {
+ controls: [],
+ fractionalZoom: true
+ });
+ var layer = new OpenLayers.Layer.WMS("Test Layer", "http://octo.metacarta.com/cgi-bin/mapserv?", {
+ map: "/mapdata/vmap_wms.map",
+ layers: "basic"
+ });
+ map.addLayer(layer);
+
+ // zoom to a fractional ZoomLevel initially:
+ map.setCenter(new OpenLayers.LonLat(0, 0), 9.545);
+
+ control = new OpenLayers.Control.PanZoomBar({
+ forceFixedZoomLevel: true
+ });
+ map.addControl(control);
+
+ // The y values come from manually recording real values in an example
+ var evt = {
+ 'xy': {
+ 'x': 0,
+ 'y': -10.633
+ },
+ which: 1
+ };
+ control.zoomStart = {
+ 'x': 0,
+ 'y': 5.366
+ };
+ control.mouseDragStart = {
+ 'x': 0,
+ 'y': -10.633
+ };
+ control.deltaY = control.zoomStart.y - evt.xy.y
+ control.zoomBarUp(evt);
+ t.eq(map.zoom, 11, "forceFixedZoomLevel makes sure that after dragging of the handle only fixed zoom levels are used even if the map has fractionalZoom");
+
+ // randomly drag the handle around
+ // we should never get a zoom < 0 or a non-integer zoom, regardless of
+ // captured random values for start and end of the drag.
+ for (var i = 0; i < numRandomDrags; i++) {
+ var randStartY = Math.random() * 10 * ((i % 2 === 0) ? -1 : 1);
+ var randStopY = Math.random() * 160 * ((i % 2 === 1) ? -1 : 1);
+ var evt = {
+ 'xy': {
+ 'x': 0,
+ 'y': randStopY
+ },
+ which: 1
+ };
+ control.zoomStart = {
+ 'x': 0,
+ 'y': randStartY
+ };
+ control.mouseDragStart = {
+ 'x': 0,
+ 'y': randStopY
+ };
+ control.deltaY = control.zoomStart.y - evt.xy.y
+ control.zoomBarUp(evt);
+
+ t.eq(Math.floor(map.zoom), Math.ceil(map.zoom), 'Only integer zooms after random handle drag with forceFixedZoomLevel=true and fractionalZoom=true (current zoom was ' + map.zoom + ')');
+ t.ok(map.zoom >= 0, 'map.zoom is never < 0 after random handle drag with forceFixedZoomLevel=true and fractionalZoom=true');
+ }
}
-
</script>
</head>
<body>
Modified: sandbox/bartvde/sencha/openlayers/tests/Control/Scale.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/Control/Scale.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/Control/Scale.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -2,6 +2,7 @@
<head>
<script src="../OLLoader.js"></script>
<script type="text/javascript">
+ OpenLayers.Lang.setCode('en');
var map;
function test_Control_Scale_constructor (t) {
t.plan( 2 );
Modified: sandbox/bartvde/sencha/openlayers/tests/Control/TouchNavigation.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/Control/TouchNavigation.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/Control/TouchNavigation.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -102,6 +102,28 @@
}
+ function test_zoomOut(t) {
+ t.plan(1);
+
+ var map = new OpenLayers.Map(document.body);
+ var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
+ "http://labs.metacarta.com/wms/vmap0",
+ {layers: 'basic'} );
+ map.addLayer(layer);
+ map.setCenter(new OpenLayers.LonLat(0, 0), 5);
+ var control = new OpenLayers.Control.TouchNavigation();
+ map.addControl(control);
+ var handler = control.handlers.click;
+ handler.touchstart({xy: {x: 1, y: 1}, touches: ["foo", "bar"]});
+ handler.touchend({});
+ t.delay_call(1, function() {
+ t.eq(map.getZoom(), 4, "Did we zoom out?");
+ // tear down
+ map.destroy();
+ });
+
+ }
+
</script>
</head>
<body>
Modified: sandbox/bartvde/sencha/openlayers/tests/Events.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/Events.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/Events.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -305,9 +305,23 @@
events.unregister("something", instance, listener1);
events.unregister("something", instance, listener2);
events.unregister("something", instance, listener3);
-
}
+ function test_Events_handleBrowserEvent(t) {
+ t.plan(2);
+ var events = new OpenLayers.Events({}, null, ['sometouchevent']);
+ events.on({'sometouchevent': function() {}});
+
+ // this test verifies that when handling a touch event we correctly
+ // set clientX and clientY in the event object
+ var evt = {type: 'sometouchevent',
+ touches: [{clientX: 1, clientY: 1}, {clientX: 2, clientY: 2}]
+ };
+ events.handleBrowserEvent(evt);
+ t.eq(evt.clientX, 1, "evt.clientX value is correct");
+ t.eq(evt.clientY, 1, "evt.clientY value is correct");
+ }
+
function test_Events_destroy (t) {
t.plan(2);
Modified: sandbox/bartvde/sencha/openlayers/tests/Handler/Click.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/Handler/Click.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/Handler/Click.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -329,6 +329,43 @@
});
}
+ function test_touch_ignoresimulatedclick(t) {
+ t.plan(2);
+
+ // set up
+
+ var log;
+
+ var map = new OpenLayers.Map('map');
+ var control = {map: map};
+
+ var callbacks = {
+ 'dblclick': function(e) {
+ log.dblclick = {x: e.xy.x, y: e.xy.y,
+ lastTouches: e.lastTouches};
+ }
+ };
+
+ var handler = new OpenLayers.Handler.Click(
+ control, callbacks,
+ {'double': true, pixelTolerance: null});
+
+ // test
+
+ log = {};
+ handler.touchstart({xy: {x: 1, y: 1}, touches: ["foo"]});
+ handler.touchend({});
+ handler.touchstart({xy: {x: 1, y: 1}, touches: ["foo"]});
+ handler.touchend({type: "click"});
+
+ t.eq(handler.touch, true, "Touch property should be true");
+
+ t.ok(log.dblclick == undefined, "dblclick callback not called with simulated click");
+
+ // tear down
+ map.destroy();
+ }
+
function test_touch_dblclick(t) {
t.plan(5);
Modified: sandbox/bartvde/sencha/openlayers/tests/Handler/Drag.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/Handler/Drag.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/Handler/Drag.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -289,6 +289,57 @@
}
+ function test_Handler_Drag_touch(t) {
+ // In this test we verify that "touchstart", "touchmove", and
+ // "touchend" events set expected states in the drag handler.
+ // We also verify that we stop event bubbling as appropriate.
+
+ t.plan(12);
+
+ // set up
+
+ var m = new OpenLayers.Map('map', {controls: []});
+ var c = new OpenLayers.Control();
+ m.addControl(c);
+ var h = new OpenLayers.Handler.Drag(c, {
+ done: function(px) { log = px; }});
+ h.activate();
+
+ var _stop = OpenLayers.Event.stop;
+ OpenLayers.Event.stop = function(e) { log = e; };
+
+ var Px = OpenLayers.Pixel, e, log;
+
+ // test
+
+ e = {touches: [{}], xy: new Px(0, 0)};
+ m.events.triggerEvent('touchstart', e);
+ t.eq(h.started, true, '[touchstart] started is set');
+ t.eq(h.start.x, 0, '[touchstart] start.x is correct');
+ t.eq(h.start.y, 0, '[touchstart] start.y is correct');
+ t.eq(log, undefined, '[touchstart] event is not stopped');
+
+ e = {xy: new Px(1, 1)};
+ m.events.triggerEvent('touchmove', e);
+ t.eq(h.dragging, true, '[touchmove] dragging is set');
+ t.eq(h.last.x, 1, '[touchstart] last.x is correct');
+ t.eq(h.last.y, 1, '[touchstart] last.y is correct');
+ t.ok(log == e, '[touchmove] event is stopped');
+
+ e = {xy: new Px(2, 2)};
+ m.events.triggerEvent('touchend', e);
+ t.eq(h.started, false, '[touchend] started is reset');
+ t.eq(h.started, false, '[touchend] started is reset');
+ // the "done" callback gets the position of the last touchmove
+ t.eq(log.x, 1, '[touchend] done callback got correct x position');
+ t.eq(log.y, 1, '[touchend] done callback got correct y position');
+
+ // tear down
+
+ OpenLayers.Event.stop = _stop;
+ m.destroy();
+ }
+
function test_Handler_Drag_submethods(t) {
t.plan(8);
Copied: sandbox/bartvde/sencha/openlayers/tests/Kinetic.html (from rev 11335, trunk/openlayers/tests/Kinetic.html)
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/Kinetic.html (rev 0)
+++ sandbox/bartvde/sencha/openlayers/tests/Kinetic.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -0,0 +1,130 @@
+<html>
+<head>
+ <script src="OLLoader.js"></script>
+ <script type="text/javascript">
+
+ function test_Kinetic (t) {
+ t.plan(17);
+ var finish = false;
+ var results = {
+ 110: {x: -2.7, y: -3.6, end: false},
+ 120: {x: -2.1, y: -2.8, end: false},
+ 130: {x: -1.5, y: -2.0, end: false},
+ 140: {x: -0.9, y: -1.2, end: false},
+ 150: {x: -0.3, y: -0.4, end: true}
+ };
+
+ var originalGetTime = Date.prototype.getTime;
+ Date.prototype.getTime = function() { return 0 };
+
+ var originalSetInterval = window.setInterval;
+ window.setInterval = function(callback, interval) {
+ while (!finish) {
+ var time = new Date().getTime();
+ Date.prototype.getTime = function() { return time+interval };
+ callback();
+ }
+ };
+
+ var kinetic = new OpenLayers.Kinetic({
+ deceleration: 0.01
+ });
+ kinetic.begin();
+ kinetic.update({x:0, y:0});
+
+ Date.prototype.getTime = function() { return 100 };
+ var measure = kinetic.end({x:30, y:40});
+
+ t.eq(measure.speed, 0.5, "correct speed");
+ t.eq(measure.theta, Math.PI - Math.atan(40/30), "correct angle");
+
+ // fake timer id
+ kinetic.timerId = 0;
+ kinetic.move(measure, function(x, y, end) {
+ var result = results[new Date().getTime()];
+ t.eq(Math.round(x * 1000) / 1000, result.x, "correct x");
+ t.eq(Math.round(y * 1000) / 1000, result.y, "correct y");
+ t.eq(end, result.end, "correct end");
+ finish = end;
+ });
+
+ Date.prototype.getTime = originalGetTime;
+ window.setInterval = originalSetInterval;
+ }
+
+ function test_Angle (t) {
+ t.plan(8);
+ var results = [
+ {speed: 0.5, theta: Math.round((Math.PI - Math.atan(40/30)) * 1000000) / 1000000},
+ {speed: 0.5, theta: Math.round((Math.PI + Math.atan(40/30)) * 1000000) / 1000000},
+ {speed: 0.5, theta: Math.round((- Math.atan(40/30)) * 1000000) / 1000000},
+ {speed: 0.5, theta: Math.round((Math.atan(40/30)) * 1000000) / 1000000}
+ ];
+
+ var originalGetTime = Date.prototype.getTime;
+ Date.prototype.getTime = function() { return 0 };
+
+ var kinetic = new OpenLayers.Kinetic();
+ kinetic.begin();
+ kinetic.update({x:0, y:0});
+
+ Date.prototype.getTime = function() { return 100 };
+ var measure = kinetic.end({x:30, y:40});
+
+ t.eq(measure.speed, results[0].speed, "correct speed");
+ t.eq(Math.round(measure.theta * 1000000) / 1000000,
+ results[0].theta, "correct angle");
+
+
+ var originalGetTime = Date.prototype.getTime;
+ Date.prototype.getTime = function() { return 0 };
+
+ var kinetic = new OpenLayers.Kinetic();
+ kinetic.begin();
+ kinetic.update({x:0, y:0});
+
+ Date.prototype.getTime = function() { return 100 };
+ var measure = kinetic.end({x:30, y:-40});
+
+ t.eq(measure.speed, results[1].speed, "correct speed");
+ t.eq(Math.round(measure.theta * 1000000) / 1000000,
+ results[1].theta, "correct angle");
+
+
+ var originalGetTime = Date.prototype.getTime;
+ Date.prototype.getTime = function() { return 0 };
+
+ var kinetic = new OpenLayers.Kinetic();
+ kinetic.begin();
+ kinetic.update({x:0, y:0});
+
+ Date.prototype.getTime = function() { return 100 };
+ var measure = kinetic.end({x:-30, y:-40});
+
+ t.eq(measure.speed, results[2].speed, "correct speed");
+ t.eq(Math.round(measure.theta * 1000000) / 1000000,
+ results[2].theta, "correct angle");
+
+ var originalGetTime = Date.prototype.getTime;
+ Date.prototype.getTime = function() { return 0 };
+
+ var kinetic = new OpenLayers.Kinetic();
+ kinetic.begin();
+ kinetic.update({x:0, y:0});
+
+ Date.prototype.getTime = function() { return 100 };
+ var measure = kinetic.end({x:-30, y:40});
+
+ t.eq(measure.speed, results[3].speed, "correct speed");
+ t.eq(Math.round(measure.theta * 1000000) / 1000000,
+ results[3].theta, "correct angle");
+
+ Date.prototype.getTime = originalGetTime;
+ }
+ </script>
+</head>
+<body>
+ <div id="map" style="width: 600px; height: 300px;"/>
+ <div style="display: none;"><div id="invisimap"></div></div>
+</body>
+</html>
Modified: sandbox/bartvde/sencha/openlayers/tests/Layer/EventPane.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/Layer/EventPane.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/Layer/EventPane.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -58,11 +58,11 @@
// t.plan( 2 );
if (OpenLayers.BROWSER_NAME != "firefox" && OpenLayers.BROWSER_NAME != "mozilla") {
- t.plan(4);
+ t.plan(4);
} else {
- t.plan(0);
- t.debug_print("Firefox gives different results for different browsers on setMap on EventPane, so just don't run it for now.")
- return;
+ t.plan(0);
+ t.debug_print("Firefox gives different results for different browsers on setMap on EventPane, so just don't run it for now.")
+ return;
}
var map = new OpenLayers.Map('map');
@@ -84,19 +84,23 @@
layer2.getWarningHTML = function() { this.warning = true; return ""; }
map.addLayer(layer2);
- t.ok( !layer2.warning, "warning not registered on mapObject load" );
+ t.ok(!layer2.warning, "warning not registered on mapObject load");
- map.events.register("mousemove", map, function () {
- t.ok(true, "got mouse move");
+ var log = [];
+ map.events.register("mousemove", map, function(event) {
+ log.push(event);
});
- if( document.createEvent ) { // Mozilla
- var evObj = document.createEvent('MouseEvents');
- evObj.initEvent( 'mousemove', true, false );
- layer.pane.dispatchEvent(evObj);
- } else if( document.createEventObject ) { // IE
- layer.pane.fireEvent('onmousemove');
+ if (document.createEvent) { // Mozilla
+ var evObj = document.createEvent('MouseEvents');
+ evObj.initEvent('mousemove', true, false);
+ layer.pane.dispatchEvent(evObj);
+ } else if(document.createEventObject) { // IE
+ layer.pane.fireEvent('onmousemove');
}
+
+ t.eq(log.length, 1, "got one event");
+
}
function test_Layer_EventPane_setVisibility (t) {
Modified: sandbox/bartvde/sencha/openlayers/tests/Layer/Grid.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/Layer/Grid.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/Layer/Grid.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -195,7 +195,7 @@
};
layer._moveGriddedTiles = function() {
g_WhichFunc = "MoveGridded";
- g_Bounds = layer._bounds;
+ g_Bounds = layer.map.getExtent();
};
var clearTestBounds = function() {
g_WhichFunc = null;
Modified: sandbox/bartvde/sencha/openlayers/tests/list-tests.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/list-tests.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/list-tests.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -15,6 +15,7 @@
<li>Control/DragFeature.html</li>
<li>Control/DragPan.html</li>
<li>Control/DrawFeature.html</li>
+ <li>Control/Geolocate.html</li>
<li>Control/GetFeature.html</li>
<li>Control/Graticule.html</li>
<li>Control/KeyboardDefaults.html</li>
@@ -208,5 +209,6 @@
<li>Tile/Image/IFrame.html</li>
<li>Tile/WFS.html</li>
<li>Tween.html</li>
+ <li>Kinetic.html</li>
<li>Util.html</li>
</ul>
Modified: sandbox/bartvde/sencha/openlayers/tests/run-tests.html
===================================================================
--- sandbox/bartvde/sencha/openlayers/tests/run-tests.html 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tests/run-tests.html 2011-02-23 15:46:23 UTC (rev 11337)
@@ -2410,4 +2410,10 @@
</div>
</span>
+<script>
+ if (/noscroll/.test(location.href)) {
+ document.getElementById('scroller').style.height='auto';
+ document.getElementById('right_frame').style.height='auto';
+ }
+</script>
</body></html>
Modified: sandbox/bartvde/sencha/openlayers/tools/exampleparser.py
===================================================================
--- sandbox/bartvde/sencha/openlayers/tools/exampleparser.py 2011-02-23 15:45:10 UTC (rev 11336)
+++ sandbox/bartvde/sencha/openlayers/tools/exampleparser.py 2011-02-23 15:46:23 UTC (rev 11337)
@@ -20,7 +20,14 @@
missing_deps = False
try:
- import simplejson
+ import json
+except ImportError:
+ try:
+ import simplejson as json
+ except ImportError, E:
+ missing_deps = E
+
+try:
from BeautifulSoup import BeautifulSoup
except ImportError, E:
missing_deps = E
@@ -196,7 +203,7 @@
if __name__ == "__main__":
if missing_deps:
- print "This script requires simplejson and BeautifulSoup. You don't have them. \n(%s)" % E
+ print "This script requires json or simplejson and BeautifulSoup. You don't have them. \n(%s)" % E
sys.exit()
if len(sys.argv) > 1:
@@ -237,7 +244,7 @@
index = wordIndex(exampleList)
- json = simplejson.dumps({"examples": exampleList, "index": index})
+ json = json.dumps({"examples": exampleList, "index": index})
#give the json a global variable we can use in our js. This should be replaced or made optional.
json = 'var info=' + json
outFile.write(json)
More information about the Commits
mailing list