[OpenLayers-Commits] r11533 - in sandbox/pinch: . build examples
examples/img lib/Firebug lib/OpenLayers
lib/OpenLayers/Handler tests/Handler tests/Layer tools
commits-20090109 at openlayers.org
commits-20090109 at openlayers.org
Fri Feb 25 11:52:27 EST 2011
Author: tschaub
Date: 2011-02-25 08:52:26 -0800 (Fri, 25 Feb 2011)
New Revision: 11533
Added:
sandbox/pinch/examples/img/locate.png
sandbox/pinch/examples/img/mobile-layers.png
sandbox/pinch/examples/img/mobile-loc.png
sandbox/pinch/examples/img/openlayers.png
sandbox/pinch/examples/mobile-jq.js
sandbox/pinch/examples/style.mobile-jq.css
Modified:
sandbox/pinch/
sandbox/pinch/build/mobile.cfg
sandbox/pinch/examples/controls.html
sandbox/pinch/examples/mobile-jq.html
sandbox/pinch/lib/Firebug/firebugx.js
sandbox/pinch/lib/OpenLayers/Handler/Feature.js
sandbox/pinch/lib/OpenLayers/Layer.js
sandbox/pinch/tests/Handler/Feature.html
sandbox/pinch/tests/Layer/Image.html
sandbox/pinch/tools/release.sh
Log:
Merge r:11508:11532 from trunk.
Property changes on: sandbox/pinch
___________________________________________________________________
Modified: svn:mergeinfo
- /sandbox/roberthl/openlayers:9745-9748
/trunk/openlayers:11431-11507
+ /sandbox/roberthl/openlayers:9745-9748
/trunk/openlayers:11431-11532
Modified: sandbox/pinch/build/mobile.cfg
===================================================================
--- sandbox/pinch/build/mobile.cfg 2011-02-25 16:48:09 UTC (rev 11532)
+++ sandbox/pinch/build/mobile.cfg 2011-02-25 16:52:26 UTC (rev 11533)
@@ -13,8 +13,10 @@
OpenLayers/Control/Geolocate.js
OpenLayers/Control/ZoomPanel.js
OpenLayers/Control/Attribution.js
+OpenLayers/Control/SelectFeature.js
OpenLayers/Layer/Vector.js
OpenLayers/Renderer/SVG.js
+OpenLayers/Format/GeoJSON.js
[exclude]
Modified: sandbox/pinch/examples/controls.html
===================================================================
--- sandbox/pinch/examples/controls.html 2011-02-25 16:48:09 UTC (rev 11532)
+++ sandbox/pinch/examples/controls.html 2011-02-25 16:52:26 UTC (rev 11533)
@@ -25,7 +25,6 @@
numZoomLevels: 6
});
-
var ol_wms = new OpenLayers.Layer.WMS(
"OpenLayers WMS",
@@ -49,7 +48,10 @@
);
map.addLayers([ol_wms, gwc, dm_wms]);
- map.zoomToMaxExtent();
+
+ if (!map.getCenter()) {
+ map.zoomToMaxExtent();
+ }
}
</script>
</head>
Copied: sandbox/pinch/examples/img/locate.png (from rev 11532, trunk/openlayers/examples/img/locate.png)
===================================================================
(Binary files differ)
Copied: sandbox/pinch/examples/img/mobile-layers.png (from rev 11532, trunk/openlayers/examples/img/mobile-layers.png)
===================================================================
(Binary files differ)
Copied: sandbox/pinch/examples/img/mobile-loc.png (from rev 11532, trunk/openlayers/examples/img/mobile-loc.png)
===================================================================
(Binary files differ)
Copied: sandbox/pinch/examples/img/openlayers.png (from rev 11532, trunk/openlayers/examples/img/openlayers.png)
===================================================================
(Binary files differ)
Modified: sandbox/pinch/examples/mobile-jq.html
===================================================================
--- sandbox/pinch/examples/mobile-jq.html 2011-02-25 16:48:09 UTC (rev 11532)
+++ sandbox/pinch/examples/mobile-jq.html 2011-02-25 16:52:26 UTC (rev 11533)
@@ -1,8 +1,7 @@
<!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" />
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>OpenLayers with jQuery 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">
@@ -10,135 +9,67 @@
<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="style.mobile.css" type="text/css">
- <script src="../lib/OpenLayers.js"></script>
+ <link rel="stylesheet" href="style.mobile-jq.css" type="text/css">
+ <script src="../lib/OpenLayers.js?mobile"></script>
<script src="mobile-base.js"></script>
- <style>
- html {
- height: 100%;
- }
- body {
- margin: 0;
- padding: 0;
- height: 100%;
- }
- .ui-content {
- padding: 0;
- }
- .ui-footer, .ui-header {
- text-align: center;
- padding: 5px 0;
- }
- #map {
- width: 100%;
- height: 100%;
- }
- .olControlAttribution {
- font-size: 10px;
- bottom: 5px;
- right: 5px;
- }
- #title, #tags, #shortdesc {
- display: none;
- }
- </style>
- <script>
- $(document).ready(function() {
- // fix height of content to allow for header & footer
- function fixContentHeight() {
- var header = $("div[data-role='header']:visible");
- var footer = $("div[data-role='footer']:visible");
- var content = $("div[data-role='content']:visible:visible");
- var viewHeight = $(window).height();
-
- var contentHeight = viewHeight - header.outerHeight() - footer.outerHeight();
- if ((content.outerHeight() + header.outerHeight() + footer.outerHeight()) !== viewHeight) {
- contentHeight -= (content.outerHeight() - content.height());
- content.height(contentHeight);
- }
- if (window.map) {
- map.updateSize();
- } else {
- // initialize map
- init();
- }
- }
- $(window).bind("orientationchange resize pageshow", fixContentHeight);
- fixContentHeight();
-
- // add behavior to navigation buttons
- $("#west").click(function() {
- pan(-0.25, 0);
- });
- $("#north").click(function() {
- pan(0, -0.25);
- });
- $("#south").click(function() {
- pan(0, 0.25);
- });
- $("#east").click(function() {
- pan(0.25, 0);
- });
-
- // add behavior to drawing controls
- function deactivateControls() {
- $.each(map.getControlsByClass(/DrawFeature/), function(index, control) {
- control.deactivate();
- });
- map.getControlsBy("id", "mod-control")[0].deactivate();
- }
- $("#nav, #point, #line, #poly, #mod").change(function(event) {
- deactivateControls();
- // jquery mobile bug regarding change makes us go through all inputs
- // https://github.com/jquery/jquery-mobile/issues/issue/1088
- var val = $("input:radio[name=controls]:checked").val();
- if (val !== "nav") {
- map.getControlsBy("id", val + "-control")[0].activate();
- }
- });
-
- $("#nav").click();
- $("#nav").click(); // jquery mobile bug forces 2 calls to refresh radio ui
-
- });
-
- </script>
+ <script src="mobile-jq.js"></script>
</head>
<body>
<h1 id="title">OpenLayers with jQuery Mobile</h1>
<div id="tags">
- mobile, jquery
+ mobile, jquery
</div>
<p id="shortdesc">
- Using jQuery Mobile to display an OpenLayers map.
+ 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">
- <input id="north" type="button" data-icon="arrow-u" value="north">
- <input id="south" type="button" data-icon="arrow-d" value="south">
- <input id="east" type="button" data-icon="arrow-r" value="east">
- </div>
- <div data-role="content">
- <div id="map"></div>
- </div>
+ <div data-role="page" id="mappage">
+ <div data-role="content">
+ <div id="map"></div>
+ </div>
- <div data-role="footer">
- <form id="controls">
- <fieldset data-role="controlgroup" data-type="horizontal" data-role="fieldcontain">
- <input id="nav" type="radio" name="controls" value="nav" checked="checked">
- <label for="nav">navigate</label>
- <input id="point" type="radio" name="controls" value="point">
- <label for="point">point</label>
- <input id="line" type="radio" name="controls" value="line">
- <label for="line">line</label>
- <input id="poly" type="radio" name="controls" value="poly">
- <label for="poly">poly</label>
- <input id="mod" type="radio" name="controls" value="mod">
- <label for="mod">modify</label>
- </fieldset>
- </form>
+ <div data-role="footer">
+ <a href="#searchpage" data-icon="search" data-role="button">Search</a>
+ <a href="#" id="locate" data-icon="locate" data-role="button">Locate</a>
+ <a href="#layerspage" data-icon="layers" data-role="button">Layers</a>
+ </div>
+ <div id="navigation" data-role="controlgroup" data-type="vertical">
+ <a href="#" data-role="button" data-icon="plus" id="plus"
+ data-iconpos="notext"></a>
+ <a href="#" data-role="button" data-icon="minus" id="minus"
+ data-iconpos="notext"></a>
+ </div>
+ </div>
+
+ <div data-role="page" id="searchpage">
+ <div data-role="header">
+ <h1>Search</h1>
+ </div>
+ <div data-role="fieldcontain">
+ <input type="search" name="query" id="query"
+ value="" placeholder="Search for places"
+ autocomplete="off"/>
+ </div>
+ <ul data-role="listview" data-inset="true" id="search_results"></ul>
+ </div>
+
+ <div data-role="page" id="layerspage">
+ <div data-role="header">
+ <h1>Layers</h1>
+ </div>
+ <div data-role="content">
+ <ul data-role="listview" data-inset="true" data-theme="d" data-dividertheme="c" id="layerslist">
+ </div>
+ </div>
+
+ <div id="popup" data-role="dialog">
+ <div data-position="inline" data-theme="d" data-role="header">
+ <h1>Details</h1>
</div>
+ <div data-theme="c" data-role="content">
+ <ul id="details-list" data-role="listview">
+ </ul>
+ </div>
</div>
</body>
</html>
Copied: sandbox/pinch/examples/mobile-jq.js (from rev 11532, trunk/openlayers/examples/mobile-jq.js)
===================================================================
--- sandbox/pinch/examples/mobile-jq.js (rev 0)
+++ sandbox/pinch/examples/mobile-jq.js 2011-02-25 16:52:26 UTC (rev 11533)
@@ -0,0 +1,213 @@
+var selectedFeature = null;
+
+$(document).ready(function() {
+
+ // Start with the map page
+ if (window.location.hash && window.location.hash!='#mappage') {
+ $.mobile.changePage('mappage');
+ }
+
+ // fix height of content
+ function fixContentHeight() {
+ var footer = $("div[data-role='footer']:visible"),
+ content = $("div[data-role='content']:visible:visible"),
+ viewHeight = $(window).height(),
+ contentHeight = viewHeight - footer.outerHeight();
+
+ if ((content.outerHeight() + footer.outerHeight()) !== viewHeight) {
+ contentHeight -= (content.outerHeight() - content.height());
+ content.height(contentHeight);
+ }
+ if (window.map) {
+ map.updateSize();
+ } else {
+ // initialize map
+ init();
+ }
+ }
+ $(window).bind("orientationchange resize pageshow", fixContentHeight);
+ fixContentHeight();
+ //init();
+
+ // Map zoom
+ $("#plus").click(function(){
+ map.zoomIn();
+ });
+ $("#minus").click(function(){
+ map.zoomOut();
+ });
+ $("#locate").click(function(){
+ var control = map.getControlsBy("id", "locate-control")[0];
+ if (control.active) {
+ control.getCurrentLocation();
+ } else {
+ control.activate();
+ }
+ });
+
+ var sprintersLayer = new OpenLayers.Layer.Vector("Sprinters", {
+ styleMap: new OpenLayers.StyleMap({
+ externalGraphic : "img/mobile-loc.png",
+ graphicOpacity : 1.0,
+ graphicWith:16,
+ graphicHeight:26
+ })
+ });
+
+ var sprinters = getFeatures();
+ sprintersLayer.addFeatures(sprinters);
+
+ map.addLayer(sprintersLayer);
+
+ var selectControl = new OpenLayers.Control.SelectFeature(sprintersLayer, {onSelect: function(feature){
+ selectedFeature = feature;
+ $.mobile.changePage($("#popup"), "pop");
+ }});
+
+ map.addControl(selectControl);
+ selectControl.activate();
+
+ $('div#popup').live('pageshow',function(event, ui){
+ var li = "";
+ for(var attr in selectedFeature.attributes){
+ li += "<li><div style='width:25%;float:left'>" + attr + "</div><div style='width:75%;float:right'>"
+ + selectedFeature.attributes[attr] + "</div></li>";
+ }
+ $("ul#details-list").empty().append(li).listview("refresh");
+ });
+
+ $('#searchpage').live('pageshow',function(event, ui){
+ $('#query').bind('change', function(e){
+ $('#search_results').empty();
+ if ($('#query')[0].value === '') {
+ return;
+ }
+ $.mobile.pageLoading();
+
+ // Prevent form send
+ e.preventDefault();
+
+ var searchUrl = 'http://ws.geonames.org/searchJSON?featureClass=P&maxRows=10';
+ searchUrl += '&name_startsWith=' + $('#query')[0].value;
+ $.getJSON(searchUrl, function(data) {
+ $.each(data.geonames, function() {
+ var place = this;
+ $('<li>')
+ .hide()
+ .append($('<h2 />', {
+ text: place.name
+ }))
+ .append($('<p />', {
+ html: '<b>' + place.countryName + '</b> ' + place.fcodeName
+ }))
+ .appendTo('#search_results')
+ .click(function() {
+ $.mobile.changePage('mappage');
+ var lonlat = new OpenLayers.LonLat(place.lng, place.lat);
+ map.setCenter(lonlat.transform(gg, sm), 10);
+ })
+ .show();
+ });
+ $('#search_results').listview('refresh');
+ $.mobile.pageLoading(true);
+ });
+ });
+ // only listen to the first event triggered
+ $('#searchpage').die('pageshow', arguments.callee);
+ });
+
+ $('#layerslist').listview();
+ $('<li>', {
+ "data-role": "list-divider",
+ text: "Base Layers"
+ })
+ .appendTo('#layerslist');
+ var baseLayers = map.getLayersBy("isBaseLayer", true);
+ $.each(baseLayers, function() {
+ addLayerToList(this);
+ });
+
+ $('<li>', {
+ "data-role": "list-divider",
+ text: "Overlay Layers"
+ })
+ .appendTo('#layerslist');
+ var overlayLayers = map.getLayersBy("isBaseLayer", false);
+ $.each(overlayLayers, function() {
+ addLayerToList(this);
+ });
+ $('#layerslist').listview('refresh');
+
+ map.events.register("addlayer", this, function(e) {
+ addLayerToList(e.layer);
+ });
+});
+
+function addLayerToList(layer) {
+ var item = $('<li>', {
+ "data-icon": "check",
+ "class": layer.visibility ? "checked" : ""
+ })
+ .append($('<a />', {
+ text: layer.name
+ })
+ .click(function() {
+ $.mobile.changePage('mappage');
+ if (layer.isBaseLayer) {
+ layer.map.setBaseLayer(layer);
+ } else {
+ layer.setVisibility(!layer.getVisibility());
+ }
+ })
+ )
+ .appendTo('#layerslist');
+ layer.events.on({
+ 'visibilitychanged': function() {
+ $(item).toggleClass('checked');
+ }
+ });
+}
+
+function getFeatures(){
+ var features = {
+ "type": "FeatureCollection",
+ "features": [
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [1332700, 7906300]},
+ "properties": {"Name": "Igor Tihonov", "Country":"Sweden", "City":"Gothenburg"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [790300, 6573900]},
+ "properties": {"Name": "Marc Jansen", "Country":"Germany", "City":"Bonn"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [568600, 6817300]},
+ "properties": {"Name": "Bart van den Eijnden", "Country":"Netherlands", "City":"Utrecht"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [-7909900, 5215100]},
+ "properties": {"Name": "Christopher Schmidt", "Country":"United States of America", "City":"Boston"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [-937400, 5093200]},
+ "properties": {"Name": "Jorge Gustavo Rocha", "Country":"Portugal", "City":"Braga"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [-355300, 7547800]},
+ "properties": {"Name": "Jennie Fletcher ", "Country":"Scotland", "City":"Edinburgh"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [657068.53608487, 5712321.2472725]},
+ "properties": {"Name": "Bruno Binet ", "Country":"France", "City":"Chambéry"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [667250.8958124, 5668048.6072737]},
+ "properties": {"Name": "Eric Lemoine", "Country":"France", "City":"Theys"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [653518.03606319, 5721118.5122914]},
+ "properties": {"Name": "Antoine Abt", "Country":"France", "City":"La Motte Servolex"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [657985.78042416, 5711862.6251028]},
+ "properties": {"Name": "Pierre Giraud", "Country":"France", "City":"Chambéry"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [742941.93818208, 5861818.9477535]},
+ "properties": {"Name": "Stéphane Brunner", "Country":"Switzerland", "City":"Paudex"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [736082.61064069, 5908165.4649505]},
+ "properties": {"Name": "Frédéric Junod", "Country":"Switzerland", "City":"Montagny-près-Yverdon"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [771595.97057525, 5912284.7041793]},
+ "properties": {"Name": "Cédric Moullet", "Country":"Switzerland", "City":"Payerne"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [744205.23922364, 5861277.319748]},
+ "properties": {"Name": "Benoit Quartier", "Country":"Switzerland", "City":"Lutry"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [1717430.147101, 5954568.7127565]},
+ "properties": {"Name": "Andreas Hocevar", "Country":"Austria", "City":"Graz"}},
+ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [-12362007.067301,5729082.2365672]},
+ "properties": {"Name": "Tim Schaub", "Country":"United States of America", "City":"Bozeman"}}
+ ]
+ };
+
+ var reader = new OpenLayers.Format.GeoJSON();
+
+ return reader.read(features);
+}
Copied: sandbox/pinch/examples/style.mobile-jq.css (from rev 11532, trunk/openlayers/examples/style.mobile-jq.css)
===================================================================
--- sandbox/pinch/examples/style.mobile-jq.css (rev 0)
+++ sandbox/pinch/examples/style.mobile-jq.css 2011-02-25 16:52:26 UTC (rev 11533)
@@ -0,0 +1,120 @@
+html ,
+body {
+ margin: 0;
+ padding: 0;
+ height: 100%;
+}
+.ui-content {
+ padding: 0;
+}
+.ui-footer {
+ text-align: center;
+ padding: 5px 0;
+}
+.portrait, .portrait #mappage {
+ min-height: 0;
+}
+/*.portrait, .portrait .ui-page{*/
+ /*min-height: 0;*/
+/*}*/
+#mappage, #mappage .ui-content, #map {
+ width: 100%;
+ height: 100%;
+}
+.olControlAttribution {
+ font-size: 10px;
+ bottom: 5px;
+ right: 5px;
+}
+#navigation {
+ position: absolute;
+ bottom: 70px;
+ left: 10px;
+ z-index: 1000;
+}
+#navigation .ui-btn-icon-notext {
+ display: block;
+ padding: 7px 6px 7px 8px;
+}
+#title, #tags, #shortdesc {
+ display: none;
+}
+.ui-icon-check {
+ opacity: 0.3;
+}
+.checked .ui-icon-check {
+ opacity: 1;
+}
+.ui-icon-locate {
+ background-image: url(img/locate.png);
+}
+.ui-icon-layers {
+ background-image: url(img/openlayers.png);
+}
+.ui-content .ui-listview-inset, #search_results {
+ margin: 1em;
+}
+.ui-content .ui-listview {
+ margin: 0px;
+}
+#details-list li{
+ padding:15px 10px;
+}
+html {
+ height: 100%;
+}
+body {
+ margin: 0;
+ padding: 0;
+ height: 100%;
+}
+.ui-content {
+ padding: 0;
+}
+.ui-footer {
+ text-align: center;
+ padding: 5px 0;
+}
+#map {
+ width: 100%;
+ height: 100%;
+}
+.olControlAttribution {
+ font-size: 10px;
+ bottom: 5px;
+ right: 5px;
+}
+#navigation {
+ position: absolute;
+ bottom: 70px;
+ left: 10px;
+ z-index: 1000;
+}
+#navigation .ui-btn-icon-notext {
+ display: block;
+ padding: 7px 6px 7px 8px;
+}
+#title, #tags, #shortdesc {
+ display: none;
+}
+.ui-icon-check {
+ opacity: 0.3;
+}
+.checked .ui-icon-check {
+ opacity: 1;
+}
+.ui-icon-locate {
+ background-image: url(img/locate.png);
+}
+.ui-icon-layers {
+ background-image: url(img/openlayers.png);
+}
+.ui-content .ui-listview-inset, #search_results {
+ margin: 1em;
+}
+.ui-content .ui-listview {
+ margin: 0px;
+}
+#details-list li{
+ padding:15px 10px;
+}
\ No newline at end of file
Modified: sandbox/pinch/lib/Firebug/firebugx.js
===================================================================
--- sandbox/pinch/lib/Firebug/firebugx.js 2011-02-25 16:48:09 UTC (rev 11532)
+++ sandbox/pinch/lib/Firebug/firebugx.js 2011-02-25 16:52:26 UTC (rev 11533)
@@ -1,9 +1,10 @@
+(function() {
+ if (!window.console || !console.firebug) {
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
+ "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
-if (!window.console || !console.firebug) {
- var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
- "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
-
- window.console = {};
- for (var i = 0; i < names.length; ++i)
- window.console[names[i]] = function() {}
-}
+ window.console = {};
+ for (var i = 0; i < names.length; ++i)
+ window.console[names[i]] = function() {}
+ }
+})();
Modified: sandbox/pinch/lib/OpenLayers/Handler/Feature.js
===================================================================
--- sandbox/pinch/lib/OpenLayers/Handler/Feature.js 2011-02-25 16:48:09 UTC (rev 11532)
+++ sandbox/pinch/lib/OpenLayers/Handler/Feature.js 2011-02-25 16:52:26 UTC (rev 11533)
@@ -29,7 +29,8 @@
'mousemove': {'in': 'over', 'out': 'out'},
'dblclick': {'in': 'dblclick', 'out': null},
'mousedown': {'in': null, 'out': null},
- 'mouseup': {'in': null, 'out': null}
+ 'mouseup': {'in': null, 'out': null},
+ 'touchstart': {'in': 'click', 'out': 'clickout'}
},
/**
@@ -117,6 +118,19 @@
this.layer = layer;
},
+ /**
+ * Method: touchstart
+ * Handle touchmove events
+ *
+ * Parameters:
+ * evt - {Event}
+ *
+ * Returns:
+ * {Boolean} Let the event propagate.
+ */
+ touchstart: function(evt) {
+ return this.mousedown(evt);
+ },
/**
* Method: mousedown
Modified: sandbox/pinch/lib/OpenLayers/Layer.js
===================================================================
--- sandbox/pinch/lib/OpenLayers/Layer.js 2011-02-25 16:48:09 UTC (rev 11532)
+++ sandbox/pinch/lib/OpenLayers/Layer.js 2011-02-25 16:52:26 UTC (rev 11533)
@@ -815,13 +815,13 @@
// map
// 7. hope for the best!
- var i, len;
+ var i, len, p;
var props = {}, alwaysInRange = true;
// get resolution data from layer config
// (we also set alwaysInRange in the layer as appropriate)
for(i=0, len=this.RESOLUTION_PROPERTIES.length; i<len; i++) {
- var p = this.RESOLUTION_PROPERTIES[i];
+ p = this.RESOLUTION_PROPERTIES[i];
props[p] = this.options[p];
if(alwaysInRange && this.options[p]) {
alwaysInRange = false;
@@ -845,7 +845,7 @@
// in the map
if(props.resolutions == null) {
for(i=0, len=this.RESOLUTION_PROPERTIES.length; i<len; i++) {
- var p = this.RESOLUTION_PROPERTIES[i];
+ p = this.RESOLUTION_PROPERTIES[i];
props[p] = this.options[p] != null ?
this.options[p] : this.map[p];
}
@@ -960,6 +960,8 @@
*/
calculateResolutions: function(props) {
+ var viewSize, wRes, hRes;
+
// determine maxResolution
var maxResolution = props.maxResolution;
if(props.minScale != null) {
@@ -967,9 +969,9 @@
OpenLayers.Util.getResolutionFromScale(props.minScale,
this.units);
} else if(maxResolution == "auto" && this.maxExtent != null) {
- var viewSize = this.map.getSize();
- var wRes = this.maxExtent.getWidth() / viewSize.w;
- var hRes = this.maxExtent.getHeight() / viewSize.h;
+ viewSize = this.map.getSize();
+ wRes = this.maxExtent.getWidth() / viewSize.w;
+ hRes = this.maxExtent.getHeight() / viewSize.h;
maxResolution = Math.max(wRes, hRes);
}
@@ -980,9 +982,9 @@
OpenLayers.Util.getResolutionFromScale(props.maxScale,
this.units);
} else if(props.minResolution == "auto" && this.minExtent != null) {
- var viewSize = this.map.getSize();
- var wRes = this.minExtent.getWidth() / viewSize.w;
- var hRes = this.minExtent.getHeight()/ viewSize.h;
+ viewSize = this.map.getSize();
+ wRes = this.minExtent.getWidth() / viewSize.w;
+ hRes = this.minExtent.getHeight()/ viewSize.h;
minResolution = Math.max(wRes, hRes);
}
@@ -1141,14 +1143,14 @@
* value and the 'closest' specification.
*/
getZoomForResolution: function(resolution, closest) {
- var zoom;
+ var zoom, i, len;
if(this.map.fractionalZoom) {
var lowZoom = 0;
var highZoom = this.resolutions.length - 1;
var highRes = this.resolutions[lowZoom];
var lowRes = this.resolutions[highZoom];
var res;
- for(var i=0, len=this.resolutions.length; i<len; ++i) {
+ for(i=0, len=this.resolutions.length; i<len; ++i) {
res = this.resolutions[i];
if(res >= resolution) {
highRes = res;
@@ -1169,7 +1171,7 @@
} else {
var diff;
var minDiff = Number.POSITIVE_INFINITY;
- for(var i=0, len=this.resolutions.length; i<len; i++) {
+ for(i=0, len=this.resolutions.length; i<len; i++) {
if (closest) {
diff = Math.abs(this.resolutions[i] - resolution);
if (diff > minDiff) {
Modified: sandbox/pinch/tests/Handler/Feature.html
===================================================================
--- sandbox/pinch/tests/Handler/Feature.html 2011-02-25 16:48:09 UTC (rev 11532)
+++ sandbox/pinch/tests/Handler/Feature.html 2011-02-25 16:52:26 UTC (rev 11533)
@@ -53,7 +53,7 @@
}
function test_events(t) {
- t.plan(25);
+ t.plan(30);
var map = new OpenLayers.Map('map');
var control = new OpenLayers.Control();
@@ -64,7 +64,7 @@
// list below events that should be handled (events) and those
// that should not be handled (nonevents) by the handler
- var events = ["mousedown", "mouseup", "mousemove", "click", "dblclick"];
+ var events = ["mousedown", "mouseup", "mousemove", "click", "dblclick", "touchstart"];
var nonevents = ["mouseout", "resize", "focus", "blur"];
map.events.registerPriority = function(type, obj, func) {
var output = func();
@@ -123,7 +123,7 @@
}
function test_callbacks(t) {
- t.plan(9);
+ t.plan(13);
var map = new OpenLayers.Map('map', {controls: []});
var control = new OpenLayers.Control();
@@ -223,6 +223,36 @@
callbacks['dblclick'] = getCallback('dblclick', newFeature);
evtPx.type = "dblclick";
map.events.triggerEvent('dblclick', evtPx);
+
+ // test touchstart on a feature
+ // 'click' callback should be called
+ handler.feature = null;
+ lastFeature = null;
+ newFeature = new OpenLayers.Feature.Vector();
+ newFeature.layer = layer;
+ callbacks['click'] = getCallback('click (touch)', newFeature);
+ callbacks['clickout'] = getCallback('clickout (touch)', lastFeature);
+ evtPx.type = "touchstart";
+ map.events.triggerEvent('touchstart', evtPx);
+
+ // test touchstart in new feature and out of last feature
+ // both 'click' and 'clickout' callbacks should be called
+ lastFeature = newFeature;
+ newFeature = new OpenLayers.Feature.Vector();
+ newFeature.layer = layer;
+ callbacks['click'] = getCallback('click (touch)', newFeature);
+ callbacks['clickout'] = getCallback('clickout (touch)', lastFeature);
+ evtPx.type = "touchstart";
+ map.events.triggerEvent('touchstart', evtPx);
+
+ // test touchstart out of last feature
+ // only 'clickout' callback should be called
+ lastFeature = newFeature;
+ newFeature = null;
+ callbacks['click'] = getCallback('click (touch)', newFeature);
+ callbacks['clickout'] = getCallback('clickout (touch)', lastFeature);
+ evtPx.type = "touchstart";
+ map.events.triggerEvent('touchstart', evtPx);
}
function test_deactivate(t) {
Modified: sandbox/pinch/tests/Layer/Image.html
===================================================================
--- sandbox/pinch/tests/Layer/Image.html 2011-02-25 16:48:09 UTC (rev 11532)
+++ sandbox/pinch/tests/Layer/Image.html 2011-02-25 16:52:26 UTC (rev 11533)
@@ -146,7 +146,7 @@
delay = true;
});
- t.delay_call(0.4,function() {
+ t.delay_call(5, function() {
t.eq(delay, true, "registered for loadend");
t.eq(layer.tile.isLoading, false, "loadend triggered after tile is loaded");
map.destroy(); //tear down
Modified: sandbox/pinch/tools/release.sh
===================================================================
--- sandbox/pinch/tools/release.sh 2011-02-25 16:48:09 UTC (rev 11532)
+++ sandbox/pinch/tools/release.sh 2011-02-25 16:52:26 UTC (rev 11533)
@@ -13,7 +13,9 @@
rm ../tools/closure-compiler.jar
cd ..
-
+cd tools
+python exampleparser.py
+cd ..
for i in google ie6-style style; do
csstidy theme/default/$i.css --template=highest theme/default/$i.tidy.css
done
More information about the Commits
mailing list