Pullup changes to trunk for RC2. Includes drag-fires click changes

(Closes #982), comment/documentation/requires changes (Closes #983, #993, #988),
Fixing post support in proxy.cgi (Closes #991), baseLayer zoom level change 
(Closes #990), typo in Layer.Image.setURL (Closes #985), and a fix or the
Layer.Google bug caused by Google's changing internals (#994). RC2, here we 
come.


git-svn-id: http://svn.openlayers.org/branches/openlayers/2.5@4390 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2007-09-19 11:36:13 +00:00
parent f5eb0517ef
commit 995ef95dba
31 changed files with 408 additions and 285 deletions
+38 -17
View File
@@ -6,22 +6,31 @@ restrictions that prevent the Javascript from loading pages not on the
same server as the Javascript. This has several problems: it's less same server as the Javascript. This has several problems: it's less
efficient, it might break some sites, and it's a security risk because efficient, it might break some sites, and it's a security risk because
people can use this proxy to browse the web and possibly do bad stuff people can use this proxy to browse the web and possibly do bad stuff
with it. If you can get your code signed (see:
http://trac.openlayers.org/wiki/HowToSignJavascript), then you should
modify Parameters.js so that this isn't used. Otherwise, you're stuck
with it. It only loads pages via http and https, but it can load any with it. It only loads pages via http and https, but it can load any
content type. XML and HTML are both currently used by Openlayers.""" content type. It supports GET and POST requests."""
import urllib import urllib2
import cgi import cgi
import sys, os
fs = cgi.FieldStorage()
url = fs.getvalue('url', "http://openlayers.org")
# Designed to prevent Open Proxy type stuff. # Designed to prevent Open Proxy type stuff.
allowedHosts = ['www.openlayers.org', 'openlayers.org', 'octo.metacarta.com', 'merrimack.metacarta.com', 'labs.metacarta.com', 'world.freemap.in', allowedHosts = ['www.openlayers.org', 'openlayers.org',
'prototype.openmnnd.org'] 'labs.metacarta.com', 'world.freemap.in',
'prototype.openmnnd.org', 'geo.openplans.org']
method = os.environ["REQUEST_METHOD"]
if method == "POST":
qs = os.environ["QUERY_STRING"]
d = cgi.parse_qs(qs)
if d.has_key("url"):
url = d["url"][0]
else:
url = "http://www.openlayers.org"
else:
fs = cgi.FieldStorage()
url = fs.getvalue('url', "http://www.openlayers.org")
try: try:
host = url.split("/")[2] host = url.split("/")[2]
@@ -30,24 +39,36 @@ try:
print "Content-Type: text/plain" print "Content-Type: text/plain"
print print
print "This proxy does not allow you to access that location." print "This proxy does not allow you to access that location."
print
print os.environ
elif url.startswith("http://") or url.startswith("https://"): elif url.startswith("http://") or url.startswith("https://"):
y = urllib.urlopen(url) if method == "POST":
length = int(os.environ["CONTENT_LENGTH"])
headers = {"Content-Type": os.environ["CONTENT_TYPE"]}
body = sys.stdin.read(length)
r = urllib2.Request(url, body, headers)
y = urllib2.urlopen(r)
else:
y = urllib2.urlopen(url)
headers = str(y.info()).split('\n') # print content type header
for h in headers: i = y.info()
if h.startswith("Content-Type:"): if i.has_key("Content-Type"):
print h print "Content-Type: %s" % (i["Content-Type"])
else:
print "Content-Type: text/plain"
print print
print y.read() print y.read()
y.close() y.close()
else: else:
print """Content-Type: text/plain print "Content-Type: text/plain"
print
print "Illegal request."
Illegal request."""
except Exception, E: except Exception, E:
print "Status: 500 Unexpected Error" print "Status: 500 Unexpected Error"
print "Content-Type: text/plain" print "Content-Type: text/plain"
+18 -11
View File
@@ -3,6 +3,13 @@
* for the full text of the license. */ * for the full text of the license. */
/** /**
* @requires OpenLayers/BaseTypes/Class.js
* @requires OpenLayers/BaseTypes/LonLat.js
* @requires OpenLayers/BaseTypes/Size.js
* @requires OpenLayers/BaseTypes/Pixel.js
* @requires OpenLayers/BaseTypes/Bounds.js
* @requires OpenLayers/BaseTypes/Element.js
*
* Header: OpenLayers Base Types * Header: OpenLayers Base Types
* OpenLayers custom string, number and function functions are described here. * OpenLayers custom string, number and function functions are described here.
*/ */
@@ -16,7 +23,7 @@
OpenLayers.String = { OpenLayers.String = {
/** /**
* APIMethod: OpenLayers.String.startsWith * APIMethod: OpenLayers.String.startsWith
* Whether or not a string starts with another string. * Test whether a string starts with another string.
* *
* Parameters: * Parameters:
* str - {String} The string to test. * str - {String} The string to test.
@@ -31,7 +38,7 @@ OpenLayers.String = {
/** /**
* APIMethod: OpenLayers.String.contains * APIMethod: OpenLayers.String.contains
* Whether or not a string contains another string. * Test whether a string contains another string.
* *
* Parameters: * Parameters:
* str - {String} The string to test. * str - {String} The string to test.
@@ -53,7 +60,7 @@ OpenLayers.String = {
* modified. * modified.
* *
* Returns: * Returns:
* {String} A trimmed version of the string - all leading and * {String} A trimmed version of the string with all leading and
* trailing spaces removed. * trailing spaces removed.
*/ */
trim: function(str) { trim: function(str) {
@@ -86,7 +93,7 @@ OpenLayers.String = {
if (!String.prototype.startsWith) { if (!String.prototype.startsWith) {
/** /**
* APIMethod: String.startsWith * APIMethod: String.startsWith
* Deprecated. Whether or not a string starts with another string. * *Deprecated*. Whether or not a string starts with another string.
* *
* Parameters: * Parameters:
* sStart - {Sring} The string we're testing for. * sStart - {Sring} The string we're testing for.
@@ -106,7 +113,7 @@ if (!String.prototype.startsWith) {
if (!String.prototype.contains) { if (!String.prototype.contains) {
/** /**
* APIMethod: String.contains * APIMethod: String.contains
* Deprecated. Whether or not a string contains another string. * *Deprecated*. Whether or not a string contains another string.
* *
* Parameters: * Parameters:
* str - {String} The string that we're testing for. * str - {String} The string that we're testing for.
@@ -126,7 +133,7 @@ if (!String.prototype.contains) {
if (!String.prototype.trim) { if (!String.prototype.trim) {
/** /**
* APIMethod: String.trim * APIMethod: String.trim
* Deprecated. Removes leading and trailing whitespace characters from a string. * *Deprecated*. Removes leading and trailing whitespace characters from a string.
* *
* Returns: * Returns:
* {String} A trimmed version of the string - all leading and * {String} A trimmed version of the string - all leading and
@@ -143,8 +150,8 @@ if (!String.prototype.trim) {
if (!String.prototype.camelize) { if (!String.prototype.camelize) {
/** /**
* APIMethod: camelize * APIMethod: String.camelize
* Deprecated. Camel-case a hyphenated string. * *Deprecated*. Camel-case a hyphenated string.
* Ex. "chicken-head" becomes "chickenHead", and * Ex. "chicken-head" becomes "chickenHead", and
* "-chicken-head" becomes "ChickenHead". * "-chicken-head" becomes "ChickenHead".
* *
@@ -193,7 +200,7 @@ OpenLayers.Number = {
if (!Number.prototype.limitSigDigs) { if (!Number.prototype.limitSigDigs) {
/** /**
* APIMethod: Number.limitSigDigs * APIMethod: Number.limitSigDigs
* Deprecated. Limit the number of significant digits on an integer. Does *not* * *Deprecated*. Limit the number of significant digits on an integer. Does *not*
* work with floats! * work with floats!
* *
* Parameters: * Parameters:
@@ -266,7 +273,7 @@ OpenLayers.Function = {
if (!Function.prototype.bind) { if (!Function.prototype.bind) {
/** /**
* APIMethod: Function.bind * APIMethod: Function.bind
* Deprecated. Bind a function to an object. * *Deprecated*. Bind a function to an object.
* Method to easily create closures with 'this' altered. * Method to easily create closures with 'this' altered.
* *
* Parameters: * Parameters:
@@ -290,7 +297,7 @@ if (!Function.prototype.bind) {
if (!Function.prototype.bindAsEventListener) { if (!Function.prototype.bindAsEventListener) {
/** /**
* APIMethod: Function.bindAsEventListener * APIMethod: Function.bindAsEventListener
* Deprecated. Bind a function to an object, and configure it to receive the * *Deprecated*. Bind a function to an object, and configure it to receive the
* event object as first parameter when called. * event object as first parameter when called.
* *
* Parameters: * Parameters:
+37 -45
View File
@@ -7,12 +7,12 @@
* Instances of this class represent bounding boxes. Data stored as left, * Instances of this class represent bounding boxes. Data stored as left,
* bottom, right, top floats. All values are initialized to null, however, * bottom, right, top floats. All values are initialized to null, however,
* you should make sure you set them before using the bounds for anything. * you should make sure you set them before using the bounds for anything.
* Possible use case:
* *
* Possible use case:
* > bounds = new OpenLayers.Bounds(); * > bounds = new OpenLayers.Bounds();
* > bounds.extend(new OpenLayers.LonLat(4,5)); * > bounds.extend(new OpenLayers.LonLat(4,5));
* > bounds.extend(new OpenLayers.LonLat(5,6)); * > bounds.extend(new OpenLayers.LonLat(5,6));
* > bounds.toBBOX() // returns 4,5,5,6 * > bounds.toBBOX(); // returns 4,5,5,6
*/ */
OpenLayers.Bounds = OpenLayers.Class({ OpenLayers.Bounds = OpenLayers.Class({
@@ -81,13 +81,13 @@ OpenLayers.Bounds = OpenLayers.Class({
/** /**
* Method: equals * Method: equals
* Test a two bounds for equivalence * Test a two bounds for equivalence.
* *
* Parameters: * Parameters:
* bounds - {<OpenLayers.Bounds>} * bounds - {<OpenLayers.Bounds>}
* *
* Returns: * Returns:
* {Boolean} The passed-in OpenLayers.Bounds object has the same left, * {Boolean} The passed-in bounds object has the same left,
* right, top, bottom components as this. Note that if bounds * right, top, bottom components as this. Note that if bounds
* passed in is null, returns false. * passed in is null, returns false.
*/ */
@@ -106,7 +106,7 @@ OpenLayers.Bounds = OpenLayers.Class({
* APIMethod: toString * APIMethod: toString
* *
* Returns: * Returns:
* {String} String representation of OpenLayers.Bounds object. * {String} String representation of bounds object.
* (ex.<i>"left-bottom=(5,42) right-top=(10,45)"</i>) * (ex.<i>"left-bottom=(5,42) right-top=(10,45)"</i>)
*/ */
toString:function() { toString:function() {
@@ -132,7 +132,7 @@ OpenLayers.Bounds = OpenLayers.Class({
* Default is 6 * Default is 6
* *
* Returns: * Returns:
* {String} Simple String representation of OpenLayers.Bounds object. * {String} Simple String representation of bounds object.
* (ex. <i>"5,42,10,45"</i>) * (ex. <i>"5,42,10,45"</i>)
*/ */
toBBOX:function(decimal) { toBBOX:function(decimal) {
@@ -162,7 +162,7 @@ OpenLayers.Bounds = OpenLayers.Class({
* APIMethod: getHeight * APIMethod: getHeight
* *
* Returns: * Returns:
* {Float} The height of the bounds * {Float} The height of the bounds (top minus bottom).
*/ */
getHeight:function() { getHeight:function() {
return (this.top - this.bottom); return (this.top - this.bottom);
@@ -172,7 +172,7 @@ OpenLayers.Bounds = OpenLayers.Class({
* APIMethod: getSize * APIMethod: getSize
* *
* Returns: * Returns:
* {<OpenLayers.Size>} An <OpenLayers.Size> which represents the size of the box * {<OpenLayers.Size>} The size of the box.
*/ */
getSize:function() { getSize:function() {
return new OpenLayers.Size(this.getWidth(), this.getHeight()); return new OpenLayers.Size(this.getWidth(), this.getHeight());
@@ -182,8 +182,7 @@ OpenLayers.Bounds = OpenLayers.Class({
* APIMethod: getCenterPixel * APIMethod: getCenterPixel
* *
* Returns: * Returns:
* {<OpenLayers.Pixel>} An <OpenLayers.Pixel> which represents the center * {<OpenLayers.Pixel>} The center of the bounds in pixel space.
* of the bounds
*/ */
getCenterPixel:function() { getCenterPixel:function() {
return new OpenLayers.Pixel( (this.left + this.right) / 2, return new OpenLayers.Pixel( (this.left + this.right) / 2,
@@ -194,8 +193,7 @@ OpenLayers.Bounds = OpenLayers.Class({
* APIMethod: getCenterLonLat * APIMethod: getCenterLonLat
* *
* Returns: * Returns:
* {<OpenLayers.LonLat>} An <OpenLayers.LonLat> which represents the center * {<OpenLayers.LonLat>} The center of the bounds in map space.
* of the bounds
*/ */
getCenterLonLat:function() { getCenterLonLat:function() {
return new OpenLayers.LonLat( (this.left + this.right) / 2, return new OpenLayers.LonLat( (this.left + this.right) / 2,
@@ -210,9 +208,8 @@ OpenLayers.Bounds = OpenLayers.Class({
* y - {Float} * y - {Float}
* *
* Returns: * Returns:
* {<OpenLayers.Bounds>} A new <OpenLayers.Bounds> whose coordinates are * {<OpenLayers.Bounds>} A new bounds whose coordinates are the same as
* the same as this, but shifted by the passed-in * this, but shifted by the passed-in x and y values.
* x and y values
*/ */
add:function(x, y) { add:function(x, y) {
if ( (x == null) || (y == null) ) { if ( (x == null) || (y == null) ) {
@@ -227,8 +224,7 @@ OpenLayers.Bounds = OpenLayers.Class({
/** /**
* APIMethod: extend * APIMethod: extend
* Extend the bounds to include the point, lonlat, or bounds specified. * Extend the bounds to include the point, lonlat, or bounds specified.
* Note: This function assumes that left<right and bottom<top. * Note, this function assumes that left < right and bottom < top.
*
* *
* Parameters: * Parameters:
* object - {Object} Can be LonLat, Point, or Bounds * object - {Object} Can be LonLat, Point, or Bounds
@@ -274,10 +270,10 @@ OpenLayers.Bounds = OpenLayers.Class({
* Parameters: * Parameters:
* ll - {<OpenLayers.LonLat>} * ll - {<OpenLayers.LonLat>}
* inclusive - {Boolean} Whether or not to include the border. * inclusive - {Boolean} Whether or not to include the border.
* Default is true. * Default is true.
* *
* Returns: * Returns:
* {Boolean} Whether or not the passed-in lonlat is within this bounds. * {Boolean} The passed-in lonlat is within this bounds.
*/ */
containsLonLat:function(ll, inclusive) { containsLonLat:function(ll, inclusive) {
return this.contains(ll.lon, ll.lat, inclusive); return this.contains(ll.lon, ll.lat, inclusive);
@@ -288,11 +284,11 @@ OpenLayers.Bounds = OpenLayers.Class({
* *
* Parameters: * Parameters:
* px - {<OpenLayers.Pixel>} * px - {<OpenLayers.Pixel>}
* inclusive - {Boolean} Whether or not to include the border. * inclusive - {Boolean} Whether or not to include the border. Default is
* Default is true. * true.
* *
* Returns: * Returns:
* {Boolean} Whether or not the passed-in pixel is within this bounds. * {Boolean} The passed-in pixel is within this bounds.
*/ */
containsPixel:function(px, inclusive) { containsPixel:function(px, inclusive) {
return this.contains(px.x, px.y, inclusive); return this.contains(px.x, px.y, inclusive);
@@ -304,12 +300,12 @@ OpenLayers.Bounds = OpenLayers.Class({
* Parameters: * Parameters:
* x - {Float} * x - {Float}
* y - {Float} * y - {Float}
* inclusive - {Boolean} Whether or not to include the border. * inclusive - {Boolean} Whether or not to include the border. Default is
* Default is true. * true.
* *
* Returns: * Returns:
* {Boolean} Whether or not the passed-in coordinates are within this * {Boolean} Whether or not the passed-in coordinates are within this
* bounds. * bounds.
*/ */
contains:function(x, y, inclusive) { contains:function(x, y, inclusive) {
@@ -334,13 +330,13 @@ OpenLayers.Bounds = OpenLayers.Class({
* *
* Parameters: * Parameters:
* bounds - {<OpenLayers.Bounds>} * bounds - {<OpenLayers.Bounds>}
* inclusive - {<Boolean>} Whether or not to include the border. * inclusive - {<Boolean>} Whether or not to include the border. Default
* Default is true. * is true.
* *
* Returns: * Returns:
* {Boolean} Whether or not the passed-in OpenLayers.Bounds object * {Boolean} The passed-in OpenLayers.Bounds object intersects this bounds.
* intersects this bounds. Simple math just check if either * Simple math just check if either contains the other, allowing for
* contains the other, allowing for partial. * partial.
*/ */
intersectsBounds:function(bounds, inclusive) { intersectsBounds:function(bounds, inclusive) {
@@ -369,16 +365,14 @@ OpenLayers.Bounds = OpenLayers.Class({
* APIMethod: containsBounds * APIMethod: containsBounds
* *
* bounds - {<OpenLayers.Bounds>} * bounds - {<OpenLayers.Bounds>}
* partial - {<Boolean>} If true, only part of passed-in * partial - {<Boolean>} If true, only part of passed-in bounds needs be
* <OpenLayers.Bounds> needs be within this bounds. * within this bounds. If false, the entire passed-in bounds must be
* If false, the entire passed-in bounds must be * within. Default is false
* within. Default is false * inclusive - {<Boolean>} Whether or not to include the border. Default is
* inclusive - {<Boolean>} Whether or not to include the border. * true.
* Default is true.
* *
* Returns: * Returns:
* {Boolean} Whether or not the passed-in OpenLayers.Bounds object is * {Boolean} The passed-in bounds object is contained within this bounds.
* contained within this bounds.
*/ */
containsBounds:function(bounds, partial, inclusive) { containsBounds:function(bounds, partial, inclusive) {
@@ -418,8 +412,8 @@ OpenLayers.Bounds = OpenLayers.Class({
* lonlat - {<OpenLayers.LonLat>} * lonlat - {<OpenLayers.LonLat>}
* *
* Returns: * Returns:
* {String} The quadrant ("br" "tr" "tl" "bl") of the bounds in which * {String} The quadrant ("br" "tr" "tl" "bl") of the bounds in which the
* the coordinate lies. * coordinate lies.
*/ */
determineQuadrant: function(lonlat) { determineQuadrant: function(lonlat) {
@@ -495,7 +489,7 @@ OpenLayers.Bounds = OpenLayers.Class({
* str - {String}Comma-separated bounds string. (ex. <i>"5,42,10,45"</i>) * str - {String}Comma-separated bounds string. (ex. <i>"5,42,10,45"</i>)
* *
* Returns: * Returns:
* {<OpenLayers.Bounds>} New <OpenLayers.Bounds> object built from the * {<OpenLayers.Bounds>} New bounds object built from the
* passed-in String. * passed-in String.
*/ */
OpenLayers.Bounds.fromString = function(str) { OpenLayers.Bounds.fromString = function(str) {
@@ -512,8 +506,7 @@ OpenLayers.Bounds.fromString = function(str) {
* bbox - {Array(Float)} Array of bounds values (ex. <i>[5,42,10,45]</i>) * bbox - {Array(Float)} Array of bounds values (ex. <i>[5,42,10,45]</i>)
* *
* Returns: * Returns:
* {<OpenLayers.Bounds>} New <OpenLayers.Bounds> object built from the * {<OpenLayers.Bounds>} New bounds object built from the passed-in Array.
* passed-in Array.
*/ */
OpenLayers.Bounds.fromArray = function(bbox) { OpenLayers.Bounds.fromArray = function(bbox) {
return new OpenLayers.Bounds(parseFloat(bbox[0]), return new OpenLayers.Bounds(parseFloat(bbox[0]),
@@ -531,8 +524,7 @@ OpenLayers.Bounds.fromArray = function(bbox) {
* size - {<OpenLayers.Size>} * size - {<OpenLayers.Size>}
* *
* Returns: * Returns:
* {<OpenLayers.Bounds>} New <OpenLayers.Bounds> object built from the * {<OpenLayers.Bounds>} New bounds object built from the passed-in size.
* passed-in size.
*/ */
OpenLayers.Bounds.fromSize = function(size) { OpenLayers.Bounds.fromSize = function(size) {
return new OpenLayers.Bounds(0, return new OpenLayers.Bounds(0,
+1 -1
View File
@@ -93,7 +93,7 @@ OpenLayers.Control = OpenLayers.Class({
/** /**
* Property: handler * Property: handler
* {<OpenLayers.Handler}> null * {<OpenLayers.Handler>} null
*/ */
handler: null, handler: null,
+19 -19
View File
@@ -31,9 +31,9 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
* that is about to be dragged and the pixel location of the mouse. * that is about to be dragged and the pixel location of the mouse.
* *
* Parameters: * Parameters:
* feature - {OpenLayers.Feature.Vector} The feature that is about to be * feature - {<OpenLayers.Feature.Vector>} The feature that is about to be
* dragged. * dragged.
* pixel - {OpenLayers.Pixel} The pixel location of the mouse. * pixel - {<OpenLayers.Pixel>} The pixel location of the mouse.
*/ */
onStart: function(feature, pixel) {}, onStart: function(feature, pixel) {},
@@ -44,8 +44,8 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
* feature that is being dragged and the pixel location of the mouse. * feature that is being dragged and the pixel location of the mouse.
* *
* Parameters: * Parameters:
* feature - {OpenLayers.Feature.Vector} The feature that was dragged. * feature - {<OpenLayers.Feature.Vector>} The feature that was dragged.
* pixel - {OpenLayers.Pixel} The pixel location of the mouse. * pixel - {<OpenLayers.Pixel>} The pixel location of the mouse.
*/ */
onDrag: function(feature, pixel) {}, onDrag: function(feature, pixel) {},
@@ -57,26 +57,26 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
* mouse. * mouse.
* *
* Parameters: * Parameters:
* feature - {OpenLayers.Feature.Vector} The feature that was dragged. * feature - {<OpenLayers.Feature.Vector>} The feature that was dragged.
* pixel - {OpenLayers.Pixel} The pixel location of the mouse. * pixel - {<OpenLayers.Pixel>} The pixel location of the mouse.
*/ */
onComplete: function(feature, pixel) {}, onComplete: function(feature, pixel) {},
/** /**
* Property: layer * Property: layer
* {OpenLayers.Layer.Vector} * {<OpenLayers.Layer.Vector>}
*/ */
layer: null, layer: null,
/** /**
* Property: feature * Property: feature
* {OpenLayers.Feature.Vector} * {<OpenLayers.Feature.Vector>}
*/ */
feature: null, feature: null,
/** /**
* Property: dragHandler * Property: dragHandler
* {OpenLayers.Handler.Drag} * {<OpenLayers.Handler.Drag>}
*/ */
dragHandler: null, dragHandler: null,
@@ -88,7 +88,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
/** /**
* Property: featureHandler * Property: featureHandler
* {OpenLayers.Handler.Feature} * {<OpenLayers.Handler.Feature>}
*/ */
featureHandler: null, featureHandler: null,
@@ -100,7 +100,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
/** /**
* Property: lastPixel * Property: lastPixel
* {OpenLayers.Pixel} * {<OpenLayers.Pixel>}
*/ */
lastPixel: null, lastPixel: null,
@@ -109,7 +109,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
* Create a new control to drag features. * Create a new control to drag features.
* *
* Parameters: * Parameters:
* layer - {OpenLayers.Layer.Vector} The layer containing features to be * layer - {<OpenLayers.Layer.Vector>} The layer containing features to be
* dragged. * dragged.
* options - {Object} Optional object whose properties will be set on the * options - {Object} Optional object whose properties will be set on the
* control. * control.
@@ -179,7 +179,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
* This activates the drag handler. * This activates the drag handler.
* *
* Parameters: * Parameters:
* feature - {OpenLayers.Feature.Vector} The selected feature. * feature - {<OpenLayers.Feature.Vector>} The selected feature.
*/ */
overFeature: function(feature) { overFeature: function(feature) {
if(!this.dragHandler.dragging) { if(!this.dragHandler.dragging) {
@@ -202,7 +202,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
* Called when the drag handler detects a mouse-down. * Called when the drag handler detects a mouse-down.
* *
* Parameters: * Parameters:
* pixel - {OpenLayers.Pixel} Location of the mouse event. * pixel - {<OpenLayers.Pixel>} Location of the mouse event.
*/ */
downFeature: function(pixel) { downFeature: function(pixel) {
this.lastPixel = pixel; this.lastPixel = pixel;
@@ -215,7 +215,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
* optional onDrag method. * optional onDrag method.
* *
* Parameters: * Parameters:
* pixel - {OpenLayers.Pixel} Location of the mouse event. * pixel - {<OpenLayers.Pixel>} Location of the mouse event.
*/ */
moveFeature: function(pixel) { moveFeature: function(pixel) {
var res = this.map.getResolution(); var res = this.map.getResolution();
@@ -232,7 +232,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
* optional onComplete method. * optional onComplete method.
* *
* Parameters: * Parameters:
* pixel - {OpenLayers.Pixel} Location of the mouse event. * pixel - {<OpenLayers.Pixel>} Location of the mouse event.
*/ */
upFeature: function(pixel) { upFeature: function(pixel) {
if(!this.over) { if(!this.over) {
@@ -248,7 +248,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
* Called when the drag handler is done dragging. * Called when the drag handler is done dragging.
* *
* Parameters: * Parameters:
* pixel - {OpenLayers.Pixel} The last event pixel location. If this event * pixel - {<OpenLayers.Pixel>} The last event pixel location. If this event
* came from a mouseout, this may not be in the map viewport. * came from a mouseout, this may not be in the map viewport.
*/ */
doneDragging: function(pixel) { doneDragging: function(pixel) {
@@ -260,7 +260,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
* Called when the feature handler detects a mouse-out on a feature. * Called when the feature handler detects a mouse-out on a feature.
* *
* Parameters: * Parameters:
* feature - {OpenLayers.Feature.Vector} The feature that the mouse left. * feature - {<OpenLayers.Feature.Vector>} The feature that the mouse left.
*/ */
outFeature: function(feature) { outFeature: function(feature) {
if(!this.dragHandler.dragging) { if(!this.dragHandler.dragging) {
@@ -290,7 +290,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
* Set the map property for the control and all handlers. * Set the map property for the control and all handlers.
* *
* Parameters: * Parameters:
* map - {OpenLayers.Map} The control's map. * map - {<OpenLayers.Map>} The control's map.
*/ */
setMap: function(map) { setMap: function(map) {
this.dragHandler.setMap(map); this.dragHandler.setMap(map);
+3 -3
View File
@@ -30,7 +30,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
/** /**
* Property: layer * Property: layer
* {OpenLayers.Layer.Vector} * {<OpenLayers.Layer.Vector>}
*/ */
layer: null, layer: null,
@@ -116,7 +116,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
* Create a new modify feature control. * Create a new modify feature control.
* *
* Parameters: * Parameters:
* layer - {OpenLayers.Layer.Vector} Layer that contains features that * layer - {<OpenLayers.Layer.Vector>} Layer that contains features that
* will be modified. * will be modified.
* options - {Object} Optional object whose properties will be set on the * options - {Object} Optional object whose properties will be set on the
* control. * control.
@@ -450,7 +450,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
* Set the map property for the control and all handlers. * Set the map property for the control and all handlers.
* *
* Parameters: * Parameters:
* map - {OpenLayers.Map} The control's map. * map - {<OpenLayers.Map>} The control's map.
*/ */
setMap: function(map) { setMap: function(map) {
this.selectControl.setMap(map); this.selectControl.setMap(map);
+1 -1
View File
@@ -53,7 +53,7 @@ OpenLayers.Control.OverviewMap = OpenLayers.Class(OpenLayers.Control, {
/** /**
* APIProperty: minRatio * APIProperty: minRatio
* {Numver} The ratio of the overview map resolution to the main map * {Float} The ratio of the overview map resolution to the main map
* resolution at which to zoom farther out on the overview map. * resolution at which to zoom farther out on the overview map.
*/ */
minRatio: 8, minRatio: 8,
+18 -6
View File
@@ -15,13 +15,13 @@ OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, {
/** /**
* APIProperty: slideFactor * APIProperty: slideFactor
* {Float} * {Integer}
*/ */
slideFactor: 50, slideFactor: 50,
/** /**
* Property: buttons * Property: buttons
* Array of Button Divs * {Array(DOMElement)} Array of Button Divs
*/ */
buttons: null, buttons: null,
@@ -32,9 +32,12 @@ OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, {
position: null, position: null,
/** /**
* Constructor: OpenLayers.PanZoom * Constructor: OpenLayers.Control.PanZoom
*
* Parameters:
* options - {Object}
*/ */
initialize: function() { initialize: function(options) {
this.position = new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X, this.position = new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,
OpenLayers.Control.PanZoom.Y); OpenLayers.Control.PanZoom.Y);
OpenLayers.Control.prototype.initialize.apply(this, arguments); OpenLayers.Control.prototype.initialize.apply(this, arguments);
@@ -61,7 +64,7 @@ OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, {
* px - {<OpenLayers.Pixel>} * px - {<OpenLayers.Pixel>}
* *
* Returns: * Returns:
* {DOMElement} A reference to the container div for the PanZoom control * {DOMElement} A reference to the container div for the PanZoom control.
*/ */
draw: function(px) { draw: function(px) {
// initialize our internal div // initialize our internal div
@@ -100,7 +103,7 @@ OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, {
* *
* Returns: * Returns:
* {DOMElement} A Div (an alphaImageDiv, to be precise) that contains the * {DOMElement} A Div (an alphaImageDiv, to be precise) that contains the
* image of the button, and has all the proper event handlers set. * image of the button, and has all the proper event handlers set.
*/ */
_addButton:function(id, img, xy, sz) { _addButton:function(id, img, xy, sz) {
var imgLocation = OpenLayers.Util.getImagesLocation() + img; var imgLocation = OpenLayers.Util.getImagesLocation() + img;
@@ -179,5 +182,14 @@ OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, {
CLASS_NAME: "OpenLayers.Control.PanZoom" CLASS_NAME: "OpenLayers.Control.PanZoom"
}); });
/**
* Constant: X
* {Integer}
*/
OpenLayers.Control.PanZoom.X = 4; OpenLayers.Control.PanZoom.X = 4;
/**
* Constant: Y
* {Integer}
*/
OpenLayers.Control.PanZoom.Y = 4; OpenLayers.Control.PanZoom.Y = 4;
+6 -1
View File
@@ -5,7 +5,12 @@
/** /**
* @requires OpenLayers/Format/XML.js * @requires OpenLayers/Format/XML.js
* @requires OpenLayers/Feature/Vector.js * @requires OpenLayers/Feature/Vector.js
* @requires OpenLayers/Geometry.js * @requires OpenLayers/Geometry/Point.js
* @requires OpenLayers/Geometry/MultiPoint.js
* @requires OpenLayers/Geometry/LineString.js
* @requires OpenLayers/Geometry/MultiLineString.js
* @requires OpenLayers/Geometry/Polygon.js
* @requires OpenLayers/Geometry/MultiPolygon.js
* *
* Class: OpenLayers.Format.GML * Class: OpenLayers.Format.GML
* Read/Wite GML. Create a new instance with the <OpenLayers.Format.GML> * Read/Wite GML. Create a new instance with the <OpenLayers.Format.GML>
+7
View File
@@ -4,6 +4,13 @@
/** /**
* @requires OpenLayers/Format/JSON.js * @requires OpenLayers/Format/JSON.js
* @requires OpenLayers/Feature/Vector.js
* @requires OpenLayers/Geometry/Point.js
* @requires OpenLayers/Geometry/MultiPoint.js
* @requires OpenLayers/Geometry/LineString.js
* @requires OpenLayers/Geometry/MultiLineString.js
* @requires OpenLayers/Geometry/Polygon.js
* @requires OpenLayers/Geometry/MultiPolygon.js
* *
* Class: OpenLayers.Format.GeoJSON * Class: OpenLayers.Format.GeoJSON
* Read and write GeoJSON. Create a new parser with the * Read and write GeoJSON. Create a new parser with the
+4 -1
View File
@@ -3,8 +3,11 @@
* for the full text of the license. */ * for the full text of the license. */
/** /**
* @requires OpenLayers/Format.js
* @requires OpenLayers/Format/XML.js * @requires OpenLayers/Format/XML.js
* @requires OpenLayers/Feature/Vector.js
* @requires OpenLayers/Geometry/Point.js
* @requires OpenLayers/Geometry/LineString.js
* @requires OpenLayers/Geometry/Polygon.js
* *
* Class: OpenLayers.Format.GeoRSS * Class: OpenLayers.Format.GeoRSS
* Read/write GeoRSS parser. Create a new instance with the * Read/write GeoRSS parser. Create a new instance with the
+6 -2
View File
@@ -3,8 +3,12 @@
* for the full text of the license. */ * for the full text of the license. */
/** /**
* @requires OpenLayers/Format.js * @requires OpenLayers/Format/XML.js
* @requires OpenLayers/Feature/Vector.js * @requires OpenLayers/Feature/Vector.js
* @requires OpenLayers/Geometry/Point.js
* @requires OpenLayers/Geometry/LineString.js
* @requires OpenLayers/Geometry/Polygon.js
* @requires OpenLayers/Geometry/Collection.js
* *
* Class: OpenLayers.Format.KML * Class: OpenLayers.Format.KML
* Read/Wite KML. Create a new instance with the <OpenLayers.Format.KML> * Read/Wite KML. Create a new instance with the <OpenLayers.Format.KML>
@@ -279,7 +283,7 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
* node - {DOMElement} A KML MultiGeometry node. * node - {DOMElement} A KML MultiGeometry node.
* *
* Returns: * Returns:
* {<OpenLayers.Geometry.Polygon>} A geometry collection. * {<OpenLayers.Geometry.Collection>} A geometry collection.
*/ */
multigeometry: function(node) { multigeometry: function(node) {
var child, parser; var child, parser;
+3 -2
View File
@@ -4,6 +4,7 @@
/** /**
* @requires OpenLayers/Format.js * @requires OpenLayers/Format.js
* @requires OpenLayers/Feature/Vector.js
* *
* Class: OpenLayers.Format.WKT * Class: OpenLayers.Format.WKT
* Class for reading and writing Well-Known Text. Create a new instance * Class for reading and writing Well-Known Text. Create a new instance
@@ -38,8 +39,8 @@ OpenLayers.Format.WKT = OpenLayers.Class(OpenLayers.Format, {
/** /**
* Method: read * Method: read
* Deserialize a WKT string and return an OpenLayers.Feature.Vector or an * Deserialize a WKT string and return a vector feature or an
* array of OpenLayers.Feature.Vector. Supports WKT for POINT, MULTIPOINT, * array of vector features. Supports WKT for POINT, MULTIPOINT,
* LINESTRING, MULTILINESTRING, POLYGON, MULTIPOLYGON, and * LINESTRING, MULTILINESTRING, POLYGON, MULTIPOLYGON, and
* GEOMETRYCOLLECTION. * GEOMETRYCOLLECTION.
* *
+2 -7
View File
@@ -253,13 +253,8 @@ OpenLayers.Handler.Drag = OpenLayers.Class(OpenLayers.Handler, {
* {Boolean} Let the event propagate. * {Boolean} Let the event propagate.
*/ */
click: function (evt) { click: function (evt) {
// throw away the first left click event that happens after a mouse up // let the click event propagate only if the mouse moved
if (this.dragging) { return (this.start == this.last);
this.dragging = false;
return false;
}
this.started = false;
return true;
}, },
/** /**
+1 -1
View File
@@ -284,7 +284,7 @@ OpenLayers.Handler.RegularPolygon = OpenLayers.Class(OpenLayers.Handler.Drag, {
* Calculate the angle based on settings. * Calculate the angle based on settings.
* *
* Parameters: * Parameters:
* point - {OpenLayers.Geometry.Point} * point - {<OpenLayers.Geometry.Point>}
* evt - {Event} * evt - {Event}
*/ */
calculateAngle: function(point, evt) { calculateAngle: function(point, evt) {
+13 -9
View File
@@ -736,8 +736,7 @@ OpenLayers.Layer = OpenLayers.Class({
* {Integer} The index of the zoomLevel (entry in the resolutions array) * {Integer} The index of the zoomLevel (entry in the resolutions array)
* that still contains the passed-in extent. We do this by calculating * that still contains the passed-in extent. We do this by calculating
* the ideal resolution for the given exteng (based on the map size) * the ideal resolution for the given exteng (based on the map size)
* and then find the smallest resolution that is greater than this * and then find the closest resolution to this ideal resolution.
* ideal resolution.
*/ */
getZoomForExtent: function(extent) { getZoomForExtent: function(extent) {
var viewSize = this.map.getSize(); var viewSize = this.map.getSize();
@@ -761,23 +760,28 @@ OpenLayers.Layer = OpenLayers.Class({
/** /**
* APIMethod: getZoomForResolution * APIMethod: getZoomForResolution
* Get the index for the closest resolution in the layers resolutions array.
* *
* Parameters: * Parameters:
* resolution - {Float} * resolution - {Float} Map units per pixel.
* *
* Returns: * Returns:
* {Integer} The index of the zoomLevel (entry in the resolutions array) * {Integer} The index of the zoomLevel (entry in the resolutions array)
* that is the smallest resolution that is greater than the passed-in * that is the closest to the passed-in resolution.
* resolution.
*/ */
getZoomForResolution: function(resolution) { getZoomForResolution: function(resolution) {
var zoom, diff;
for(var i=1; i < this.resolutions.length; i++) { var minDiff = Number.POSITIVE_INFINITY;
if ( this.resolutions[i] < resolution) { for(var i=0; i < this.resolutions.length; i++) {
diff = Math.abs(this.resolutions[i] - resolution);
if(diff < minDiff) {
zoom = i;
minDiff = diff;
} else if(diff > minDiff) {
break; break;
} }
} }
return (i - 1); return zoom;
}, },
/** /**
+6 -6
View File
@@ -264,18 +264,18 @@ OpenLayers.Layer.Google = OpenLayers.Class(
* {GPoint} A GPoint specifying gLatLng translated into "Container" coords * {GPoint} A GPoint specifying gLatLng translated into "Container" coords
*/ */
addContainerPxFunction: function() { addContainerPxFunction: function() {
if (typeof GMap2 != "undefined" && !GMap2.fromLatLngToContainerPixel) { if ( (typeof GMap2 != "undefined") &&
!GMap2.prototype.fromLatLngToContainerPixel) {
GMap2.prototype.fromLatLngToContainerPixel = function(gLatLng) { GMap2.prototype.fromLatLngToContainerPixel = function(gLatLng) {
// first we translate into "DivPixel" // first we translate into "DivPixel"
var gPoint = this.fromLatLngToDivPixel(gLatLng); var gPoint = this.fromLatLngToDivPixel(gLatLng);
// locate the sliding "Div" div // locate the sliding "Div" div
// it seems like "b" is the main div var div = this.getContainer().firstChild.firstChild;
var div = this.b.firstChild.firstChild;
// adjust by the offset of "Div" and voila! // adjust by the offset of "Div" and voila!
gPoint.x += div.offsetLeft; gPoint.x += div.offsetLeft;
gPoint.y += div.offsetTop; gPoint.y += div.offsetTop;
+1 -1
View File
@@ -186,7 +186,7 @@ OpenLayers.Layer.Image = OpenLayers.Class(OpenLayers.Layer, {
*/ */
setUrl: function(newUrl) { setUrl: function(newUrl) {
this.url = newUrl; this.url = newUrl;
this.draw(); this.tile.draw();
}, },
/** /**
+1 -1
View File
@@ -1352,7 +1352,7 @@ OpenLayers.Map = OpenLayers.Class({
/** /**
* APIMethod: getZoomForExteng * APIMethod: getZoomForExtent
* *
* Parameters: * Parameters:
* bounds - {<OpenLayers.Bounds>} * bounds - {<OpenLayers.Bounds>}
+17 -5
View File
@@ -43,21 +43,33 @@
var overviewZoom = control.ovmap.getZoom(); var overviewZoom = control.ovmap.getZoom();
t.eq(overviewCenter.lon, -71, "Overviewmap center lon correct"); t.eq(overviewCenter.lon, -71, "Overviewmap center lon correct");
t.eq(overviewCenter.lat, 42, "Overviewmap center lat correct"); t.eq(overviewCenter.lat, 42, "Overviewmap center lat correct");
t.eq(overviewZoom, 8, "Overviewmap zoomcorrect"); t.eq(overviewZoom, 9, "Overviewmap zoomcorrect");
control.mapDivClick({'xy':new OpenLayers.Pixel(5,5)}); control.mapDivClick({'xy':new OpenLayers.Pixel(5,5)});
// There are box model issues that keep browsers from giving us
// identical results here. Test the normalized difference against
// a tolerance instead of testing equality.
function normalizedDiff(a, b) {
return Math.abs((a - b) / (a + b));
}
var tolerance = 1e-4;
var cent = map.getCenter(); var cent = map.getCenter();
t.eq(cent.lon, -71.3515625, "Clicking on the Overview Map has the correct effect on map lon"); t.ok(normalizedDiff(cent.lon, -71.00390625) < tolerance,
t.eq(cent.lat, 42.17578125, "Clicking on the Overview Map has the correct effect on map lat"); "Clicking on the Overview Map has the correct effect on map lon");
t.ok(normalizedDiff(cent.lat, 42.00390625) < tolerance,
"Clicking on the Overview Map has the correct effect on map lat");
control.rectMouseDown({'xy':new OpenLayers.Pixel(5,5), 'which':1}); control.rectMouseDown({'xy':new OpenLayers.Pixel(5,5), 'which':1});
control.rectMouseMove({'xy':new OpenLayers.Pixel(15,15), 'which':1}); control.rectMouseMove({'xy':new OpenLayers.Pixel(15,15), 'which':1});
control.rectMouseUp({'xy':new OpenLayers.Pixel(15,15), 'which':1}); control.rectMouseUp({'xy':new OpenLayers.Pixel(15,15), 'which':1});
var cent = map.getCenter(); var cent = map.getCenter();
t.eq(cent.lon, -71.2734375, "Dragging on the Overview Map has the correct effect on map lon"); t.ok(normalizedDiff(cent.lon, -70.83984375) < tolerance,
t.eq(cent.lat, 42.09765625, "Dragging on the Overview Map has the correct effect on map lat"); "Dragging on the Overview Map has the correct effect on map lon");
t.ok(normalizedDiff(cent.lat, 41.84765625) < tolerance,
"Dragging on the Overview Map has the correct effect on map lat");
map.setCenter(new OpenLayers.LonLat(0,0), 0); map.setCenter(new OpenLayers.LonLat(0,0), 0);
var overviewCenter = control.ovmap.getCenter(); var overviewCenter = control.ovmap.getCenter();
+19 -18
View File
@@ -87,7 +87,7 @@
} }
function test_Handler_Drag_callbacks(t) { function test_Handler_Drag_callbacks(t) {
t.plan(30); t.plan(27);
var map = new OpenLayers.Map('map', {controls: []}); var map = new OpenLayers.Map('map', {controls: []});
@@ -227,24 +227,25 @@
t.ok(!handler.dragging, "mouseout sets dragging flag to false"); t.ok(!handler.dragging, "mouseout sets dragging flag to false");
OpenLayers.Util.mouseLeft = oldMouseLeft; OpenLayers.Util.mouseLeft = oldMouseLeft;
// test click // test click with the click.html example - the click method on the
handler.dragging = true; // drag handler returns (handler.start == handler.last), stopping
handler.started = "foo"; // propagation of the click event if the mouse moved during a drag.
// regression tests will assure that the drag handler doesn't mess
// with anything else on a click
function getProperties(obj) {
var props = {};
for(key in obj) {
if(typeof obj[key] != "function" && typeof obj[key] != "object") {
props[key] = obj[key];
}
}
return props;
}
var before = getProperties(handler);
map.events.triggerEvent("click", null); map.events.triggerEvent("click", null);
t.ok(!handler.dragging, var after = getProperties(handler);
"click while dragging sets dragging to false"); t.eq(before, after, "click doesn't mess with handler");
t.eq(handler.started, "foo",
"click while dragging doesn't mess with started");
handler.dragging = null;
handler.started = true;
map.events.triggerEvent("click", null);
t.ok(handler.dragging == null,
"click while not dragging doesn't mess with dragging flag");
t.ok(!handler.started,
"click while not dragging sets started to false");
} }
+12 -12
View File
@@ -140,25 +140,25 @@
}); });
} }
function test_04_Layer_GeoRSS_icon(t) { function test_04_Layer_GeoRSS_icon(t) {
t.plan( 3 ); t.plan( 3 );
layer = new OpenLayers.Layer.GeoRSS('Test Layer', georss_txt); layer = new OpenLayers.Layer.GeoRSS('Test Layer', georss_txt);
var the_icon = new OpenLayers.Icon('http://boston.openguides.org/markers/AQUA.png'); var the_icon = new OpenLayers.Icon('http://boston.openguides.org/markers/AQUA.png');
var otherLayer = new OpenLayers.Layer.GeoRSS('Test Layer', georss_txt,{icon:the_icon}); var otherLayer = new OpenLayers.Layer.GeoRSS('Test Layer', georss_txt,{icon:the_icon});
var map = new OpenLayers.Map('map'); var map = new OpenLayers.Map('map');
var baseLayer = new OpenLayers.Layer.WMS("Test Layer", var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
"http://octo.metacarta.com/cgi-bin/mapserv?", "http://octo.metacarta.com/cgi-bin/mapserv?",
{map: "/mapdata/vmap_wms.map", layers: "basic"}); {map: "/mapdata/vmap_wms.map", layers: "basic"});
map.addLayer(baseLayer); map.addLayer(baseLayer);
map.addLayers([layer,otherLayer]); map.addLayers([layer,otherLayer]);
map.setCenter(new OpenLayers.LonLat(0,0),0); map.setCenter(new OpenLayers.LonLat(0,0),0);
var defaultIcon = OpenLayers.Marker.defaultIcon(); var defaultIcon = OpenLayers.Marker.defaultIcon();
t.delay_call( 1, function() { t.delay_call( 1, function() {
t.ok(layer.markers[0].icon, "The layer has a icon"); t.ok(layer.markers[0].icon, "The layer has a icon");
t.eq(layer.markers[0].icon.url, defaultIcon.url, "The layer without icon has the default icon."); t.eq(layer.markers[0].icon.url, defaultIcon.url, "The layer without icon has the default icon.");
t.eq(otherLayer.markers[0].icon.url, the_icon.url,"The layer with an icon has that icon."); t.eq(otherLayer.markers[0].icon.url, the_icon.url,"The layer with an icon has that icon.");
}); });
} }
function test_Layer_GeoRSS_loadend_Event(t) { function test_Layer_GeoRSS_loadend_Event(t) {
var browserCode = OpenLayers.Util.getBrowserName(); var browserCode = OpenLayers.Util.getBrowserName();
if (browserCode == "msie") { if (browserCode == "msie") {
+20 -6
View File
@@ -150,12 +150,26 @@
bounds = new OpenLayers.Bounds(10,10,12,12); bounds = new OpenLayers.Bounds(10,10,12,12);
zoom = layer.getZoomForExtent(bounds); zoom = layer.getZoomForExtent(bounds);
t.eq( zoom, 8, "getZoomForExtent() returns correct value"); /**
* ideal resolution: 2 map units / 500px = 0.004
* layer.resolutions = [1.40625, 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]
*
* So, we expect a zoom of 9 because it is the closest resolution.
*/
t.eq( zoom, 9, "getZoomForExtent() returns correct value");
bounds = new OpenLayers.Bounds(10,10,100,100); bounds = new OpenLayers.Bounds(10,10,100,100);
zoom = layer.getZoomForExtent(bounds); zoom = layer.getZoomForExtent(bounds);
t.eq( zoom, 2, "getZoomForExtent() returns correct value"); /**
* ideal resolution: 90 map units / 500px = 0.18
* So, we expect a zoom of 3 because it is the closest.
*/
t.eq( zoom, 3, "getZoomForExtent() returns correct value");
} }
function test_07_Layer_Grid_moveTo(t) { function test_07_Layer_Grid_moveTo(t) {
@@ -515,10 +529,10 @@
} }
function test_16_Layer_Grid_tileSizeIsInteger(t) { function test_16_Layer_Grid_tileSizeIsInteger(t) {
t.plan(1); t.plan(1);
var map = new OpenLayers.Map('map'); var map = new OpenLayers.Map('map');
var layer = new OpenLayers.Layer.Grid(name, url, params, { var layer = new OpenLayers.Layer.Grid(name, url, params, {
singleTile: true, singleTile: true,
ratio: 1.5 ratio: 1.5
}); });
@@ -541,10 +555,10 @@
map.zoomToMaxExtent(); map.zoomToMaxExtent();
map.zoomIn(); map.zoomIn();
var bounds = layer.getTileBounds(new OpenLayers.Pixel(200,200)); var bounds = layer.getTileBounds(new OpenLayers.Pixel(200,200));
t.eq(bounds.toBBOX(), "-180,-90,0,90", "get tile bounds returns correct bounds"); t.eq(bounds.toBBOX(), "-90,0,0,90", "get tile bounds returns correct bounds");
map.pan(200,0); map.pan(200,0);
var bounds = layer.getTileBounds(new OpenLayers.Pixel(200,200)); var bounds = layer.getTileBounds(new OpenLayers.Pixel(200,200));
t.eq(bounds.toBBOX(), "0,-90,180,90", "get tile bounds returns correct bounds after pan"); t.eq(bounds.toBBOX(), "0,0,90,90", "get tile bounds returns correct bounds after pan");
} }
function test_Layer_Grid_moveTo_buffer_calculation (t) { function test_Layer_Grid_moveTo_buffer_calculation (t) {
+3 -1
View File
@@ -39,7 +39,7 @@
} }
function test_50_Layer_Image_tileTests (t) { function test_50_Layer_Image_tileTests (t) {
t.plan(6); t.plan(7);
var map = new OpenLayers.Map('map'); var map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.Image('Test Layer', layer = new OpenLayers.Layer.Image('Test Layer',
@@ -63,6 +63,8 @@
t.eq(layer.tile.imgDiv.src, "http://earthtrends.wri.org/images/maps/4_m_citylights_lg.gif", "URL is correct"); t.eq(layer.tile.imgDiv.src, "http://earthtrends.wri.org/images/maps/4_m_citylights_lg.gif", "URL is correct");
map.zoomIn(); map.zoomIn();
t.eq(layer.tile.imgDiv.src, "http://earthtrends.wri.org/images/maps/4_m_citylights_lg.gif", "URL is correct"); t.eq(layer.tile.imgDiv.src, "http://earthtrends.wri.org/images/maps/4_m_citylights_lg.gif", "URL is correct");
layer.setUrl('http://labs.metacarta.com/wms/vmap0?LAYERS=basic&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT=image%2Fjpeg&SRS=EPSG%3A4326&BBOX=-180,-90,0,90&WIDTH=256&HEIGHT=256');
t.eq(layer.tile.imgDiv.src, "http://labs.metacarta.com/wms/vmap0?LAYERS=basic&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT=image%2Fjpeg&SRS=EPSG%3A4326&BBOX=-180,-90,0,90&WIDTH=256&HEIGHT=256", "URL is correct after setURL");
} }
/****** /******
* *
+18 -4
View File
@@ -128,12 +128,26 @@
bounds = new OpenLayers.Bounds(10,10,12,12); bounds = new OpenLayers.Bounds(10,10,12,12);
zoom = layer.getZoomForExtent(bounds); zoom = layer.getZoomForExtent(bounds);
t.eq( zoom, 8, "getZoomForExtent() returns correct value"); /**
* ideal resolution: 2 map units / 500px = 0.004
* layer.resolutions = [1.40625, 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]
*
* So, we expect a zoom of 9 because it is the closest resolution.
*/
t.eq( zoom, 9, "getZoomForExtent() returns correct value");
bounds = new OpenLayers.Bounds(10,10,100,100); bounds = new OpenLayers.Bounds(10,10,100,100);
zoom = layer.getZoomForExtent(bounds); zoom = layer.getZoomForExtent(bounds);
t.eq( zoom, 2, "getZoomForExtent() returns correct value"); /**
* ideal resolution: 90 map units / 500px = 0.18
* So, we expect a zoom of 3 because it is the closest.
*/
t.eq( zoom, 3, "getZoomForExtent() returns correct value");
} }
function test_06_Layer_kaMap_mergeNewParams (t) { function test_06_Layer_kaMap_mergeNewParams (t) {
@@ -236,10 +250,10 @@
map.zoomToMaxExtent(); map.zoomToMaxExtent();
map.zoomIn(); map.zoomIn();
var bounds = layer.getTileBounds(new OpenLayers.Pixel(200,200)); var bounds = layer.getTileBounds(new OpenLayers.Pixel(200,200));
t.eq(bounds.toBBOX(), "-180,0,0,180", "get tile bounds returns correct bounds"); t.eq(bounds.toBBOX(), "-90,0,0,90", "get tile bounds returns correct bounds");
map.pan(200,0); map.pan(200,0);
var bounds = layer.getTileBounds(new OpenLayers.Pixel(200,200)); var bounds = layer.getTileBounds(new OpenLayers.Pixel(200,200));
t.eq(bounds.toBBOX(), "0,0,180,180", "get tile bounds returns correct bounds after pan"); t.eq(bounds.toBBOX(), "0,0,90,90", "get tile bounds returns correct bounds after pan");
} }
function test_99_Layer_KaMap_destroy (t) { function test_99_Layer_KaMap_destroy (t) {
+16 -3
View File
@@ -77,13 +77,26 @@
bounds = new OpenLayers.Bounds(10,10,12,12); bounds = new OpenLayers.Bounds(10,10,12,12);
zoom = layer.getZoomForExtent(bounds); zoom = layer.getZoomForExtent(bounds);
/**
* ideal resolution: 2 map units / 500px = 0.004
* layer.resolutions = [1.40625, 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]
*
* So, we expect a zoom of 9 because it is the closest resolution.
*/
t.eq( zoom, 8, "getZoomForExtent() returns correct value"); t.eq( zoom, 9, "getZoomForExtent() returns correct value");
bounds = new OpenLayers.Bounds(10,10,100,100); bounds = new OpenLayers.Bounds(10,10,100,100);
zoom = layer.getZoomForExtent(bounds); zoom = layer.getZoomForExtent(bounds);
/**
t.eq( zoom, 2, "getZoomForExtent() returns correct value"); * ideal resolution: 90 map units / 500px = 0.18
* So, we expect a zoom of 3 because it is the closest.
*/
t.eq( zoom, 3, "getZoomForExtent() returns correct value");
} }
+1 -1
View File
@@ -120,7 +120,7 @@
} }
function test_Layer_Text_loadend_Event(t) { function test_Layer_Text_loadend_Event(t) {
t.plan(2); t.plan(2);
layer = new OpenLayers.Layer.Text('Test Layer', {location:datafile}); layer = new OpenLayers.Layer.Text('Test Layer', {location:datafile});
t.delay_call(2, function() { t.delay_call(2, function() {
layer.events.register('loadend', layer, function() { layer.events.register('loadend', layer, function() {
t.ok(true, "Loadend event fired"); t.ok(true, "Loadend event fired");
+17 -3
View File
@@ -78,13 +78,27 @@
bounds = new OpenLayers.Bounds(10,10,12,12); bounds = new OpenLayers.Bounds(10,10,12,12);
zoom = layer.getZoomForExtent(bounds); zoom = layer.getZoomForExtent(bounds);
/**
t.eq( zoom, 7, "getZoomForExtent() returns correct value"); * ideal resolution: 2 map units / 500px = 0.004
* layer.resolutions = [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]
*
* So, we expect a zoom of 8 because it is the closest resolution.
*/
t.eq( zoom, 8, "getZoomForExtent() returns correct value");
bounds = new OpenLayers.Bounds(10,10,100,100); bounds = new OpenLayers.Bounds(10,10,100,100);
zoom = layer.getZoomForExtent(bounds); zoom = layer.getZoomForExtent(bounds);
/**
* ideal resolution: 90 map units / 500px = 0.18
* So, we expect a zoom of 2 because it is the closest.
*/
t.eq( zoom, 1, "getZoomForExtent() returns correct value"); t.eq( zoom, 2, "getZoomForExtent() returns correct value");
} }
+81 -81
View File
@@ -165,8 +165,8 @@
var baseLayer = new OpenLayers.Layer.WMS("Base Layer", var baseLayer = new OpenLayers.Layer.WMS("Base Layer",
"http://octo.metacarta.com/cgi-bin/mapserv", "http://octo.metacarta.com/cgi-bin/mapserv",
{ map: '/mapdata/vmap_wms.map', { map: '/mapdata/vmap_wms.map',
layers: 'basic', layers: 'basic',
format: 'image/png'}); format: 'image/png'});
var layer = new OpenLayers.Layer.Vector("Test Layer"); var layer = new OpenLayers.Layer.Vector("Test Layer");
var renderer = layer.renderer; var renderer = layer.renderer;
@@ -181,25 +181,25 @@
map.zoomToMaxExtent(); map.zoomToMaxExtent();
var customStyle1 = new Object({ var customStyle1 = new Object({
externalGraphic: 'test.png', externalGraphic: 'test.png',
pointRadius: 10 pointRadius: 10
}); });
var customStyle2 = new Object({ var customStyle2 = new Object({
externalGraphic: 'test.png', externalGraphic: 'test.png',
graphicWidth: 12 graphicWidth: 12
}); });
var customStyle3 = new Object({ var customStyle3 = new Object({
externalGraphic: 'test.png', externalGraphic: 'test.png',
graphicHeight: 14 graphicHeight: 14
}); });
var customStyle4 = new Object({ var customStyle4 = new Object({
externalGraphic: 'test.png', externalGraphic: 'test.png',
graphicWidth: 24, graphicWidth: 24,
graphicHeight: 16 graphicHeight: 16
}); });
var customStyle5 = new Object({ var customStyle5 = new Object({
externalGraphic: 'test.png', externalGraphic: 'test.png',
graphicWidth: 24, graphicWidth: 24,
graphicOpacity: 1 graphicOpacity: 1
}); });
var customStyle6 = new Object({ var customStyle6 = new Object({
@@ -212,43 +212,43 @@
var root = renderer.root; var root = renderer.root;
if (layer.renderer.CLASS_NAME == 'OpenLayers.Renderer.SVG') { if (layer.renderer.CLASS_NAME == 'OpenLayers.Renderer.SVG') {
feature.style = customStyle1; feature.style = customStyle1;
layer.drawFeature(feature); layer.drawFeature(feature);
t.eq(root.firstChild.getAttributeNS(null, 'width'), t.eq(root.firstChild.getAttributeNS(null, 'width'),
(2*customStyle1.pointRadius).toString(), (2*customStyle1.pointRadius).toString(),
"given a pointRadius, width equals 2*pointRadius"); "given a pointRadius, width equals 2*pointRadius");
t.eq(root.firstChild.getAttributeNS(null, 'height'), t.eq(root.firstChild.getAttributeNS(null, 'height'),
(2*customStyle1.pointRadius).toString(), (2*customStyle1.pointRadius).toString(),
"given a pointRadius, height equals 2*pointRadius"); "given a pointRadius, height equals 2*pointRadius");
feature.style = customStyle2; feature.style = customStyle2;
layer.drawFeature(feature); layer.drawFeature(feature);
t.eq(root.firstChild.getAttributeNS(null, 'width'), t.eq(root.firstChild.getAttributeNS(null, 'width'),
root.firstChild.getAttributeNS(null, 'height'), root.firstChild.getAttributeNS(null, 'height'),
"given a graphicWidth, width equals height"); "given a graphicWidth, width equals height");
t.eq(root.firstChild.getAttributeNS(null, 'width'), t.eq(root.firstChild.getAttributeNS(null, 'width'),
customStyle2.graphicWidth.toString(), customStyle2.graphicWidth.toString(),
"width is set correctly"); "width is set correctly");
feature.style = customStyle3; feature.style = customStyle3;
layer.drawFeature(feature); layer.drawFeature(feature);
t.eq(root.firstChild.getAttributeNS(null, 'height'), t.eq(root.firstChild.getAttributeNS(null, 'height'),
root.firstChild.getAttributeNS(null, 'width'), root.firstChild.getAttributeNS(null, 'width'),
"given a graphicHeight, height equals width"); "given a graphicHeight, height equals width");
t.eq(root.firstChild.getAttributeNS(null, 'height'), t.eq(root.firstChild.getAttributeNS(null, 'height'),
customStyle3.graphicHeight.toString(), customStyle3.graphicHeight.toString(),
"height is set correctly"); "height is set correctly");
feature.style = customStyle4; feature.style = customStyle4;
layer.drawFeature(feature); layer.drawFeature(feature);
t.eq(root.firstChild.getAttributeNS(null, 'height'), t.eq(root.firstChild.getAttributeNS(null, 'height'),
customStyle4.graphicHeight.toString(), customStyle4.graphicHeight.toString(),
"given graphicHeight and graphicWidth, both are set: height"); "given graphicHeight and graphicWidth, both are set: height");
t.eq(root.firstChild.getAttributeNS(null, 'width'), t.eq(root.firstChild.getAttributeNS(null, 'width'),
customStyle4.graphicWidth.toString(), customStyle4.graphicWidth.toString(),
"given graphicHeight and graphicWidth, both are set: width"); "given graphicHeight and graphicWidth, both are set: width");
feature.style = customStyle5; feature.style = customStyle5;
layer.drawFeature(feature); layer.drawFeature(feature);
t.eq(root.firstChild.getAttributeNS(null, 'style'), t.eq(root.firstChild.getAttributeNS(null, 'style'),
'opacity: '+customStyle5.graphicOpacity.toString()+';', 'opacity: '+customStyle5.graphicOpacity.toString()+';',
"graphicOpacity correctly set"); "graphicOpacity correctly set");
feature.style = customStyle6; feature.style = customStyle6;
layer.drawFeature(feature); layer.drawFeature(feature);
var x = geometryX / renderer.getResolution() + renderer.left; var x = geometryX / renderer.getResolution() + renderer.left;
@@ -268,46 +268,46 @@
"graphicYOffset correctly set"); "graphicYOffset correctly set");
} }
if (layer.renderer.CLASS_NAME == 'OpenLayers.Renderer.VML') { if (layer.renderer.CLASS_NAME == 'OpenLayers.Renderer.VML') {
feature.style = customStyle1; feature.style = customStyle1;
layer.drawFeature(feature); layer.drawFeature(feature);
t.eq(root.firstChild.style.width, t.eq(root.firstChild.style.width,
(2*customStyle1.pointRadius).toString()+'px', (2*customStyle1.pointRadius).toString()+'px',
"given a pointRadius, width equals 2*pointRadius"); "given a pointRadius, width equals 2*pointRadius");
t.eq(root.firstChild.style.height, t.eq(root.firstChild.style.height,
(2*customStyle1.pointRadius).toString()+'px', (2*customStyle1.pointRadius).toString()+'px',
"given a pointRadius, height equals 2*pointRadius"); "given a pointRadius, height equals 2*pointRadius");
feature.style = customStyle2; feature.style = customStyle2;
layer.drawFeature(feature); layer.drawFeature(feature);
t.eq(root.firstChild.style.width, t.eq(root.firstChild.style.width,
root.firstChild.style.height, root.firstChild.style.height,
"given a graphicWidth, width equals height"); "given a graphicWidth, width equals height");
t.eq(root.firstChild.style.width, t.eq(root.firstChild.style.width,
customStyle2.graphicWidth.toString()+'px', customStyle2.graphicWidth.toString()+'px',
"width is set correctly"); "width is set correctly");
feature.style = customStyle3; feature.style = customStyle3;
layer.drawFeature(feature); layer.drawFeature(feature);
t.eq(root.firstChild.style.height, t.eq(root.firstChild.style.height,
root.firstChild.style.width, root.firstChild.style.width,
"given a graphicHeight, height equals width"); "given a graphicHeight, height equals width");
t.eq(root.firstChild.style.height, t.eq(root.firstChild.style.height,
customStyle3.graphicHeight.toString()+'px', customStyle3.graphicHeight.toString()+'px',
"height is set correctly"); "height is set correctly");
feature.style = customStyle4; feature.style = customStyle4;
layer.drawFeature(feature); layer.drawFeature(feature);
t.eq(root.firstChild.style.height, t.eq(root.firstChild.style.height,
customStyle4.graphicHeight.toString()+'px', customStyle4.graphicHeight.toString()+'px',
"given graphicHeight and graphicWidth, both are set: height"); "given graphicHeight and graphicWidth, both are set: height");
t.eq(root.firstChild.style.width, t.eq(root.firstChild.style.width,
customStyle4.graphicWidth.toString()+'px', customStyle4.graphicWidth.toString()+'px',
"given graphicHeight and graphicWidth, both are set: width"); "given graphicHeight and graphicWidth, both are set: width");
feature.style = customStyle5; feature.style = customStyle5;
layer.drawFeature(feature); layer.drawFeature(feature);
var fill = root.firstChild.getElementsByTagName("fill")[0]; var fill = root.firstChild.getElementsByTagName("fill")[0];
if (fill == null) fill = root.firstChild.getElementsByTagName("v:fill"); if (fill == null) fill = root.firstChild.getElementsByTagName("v:fill");
var opacity = fill.getAttribute('opacity'); var opacity = fill.getAttribute('opacity');
t.eq(opacity, t.eq(opacity,
customStyle5.graphicOpacity, customStyle5.graphicOpacity,
"graphicOpacity correctly set"); "graphicOpacity correctly set");
feature.style = customStyle6; feature.style = customStyle6;
layer.drawFeature(feature); layer.drawFeature(feature);
var x = geometryX / renderer.getResolution(); var x = geometryX / renderer.getResolution();
+9 -9
View File
@@ -131,9 +131,9 @@
var m = new OpenLayers.Map('map'); var m = new OpenLayers.Map('map');
m.addLayer(layer); m.addLayer(layer);
m.zoomToMaxExtent(); m.zoomToMaxExtent();
t.eq(layer.grid[3][0].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C-90%2C180%2C90&WIDTH=256&HEIGHT=256", "cell [3][0] is wrapped around the world."); t.eq(layer.grid[3][0].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C0%2C90%2C90&WIDTH=256&HEIGHT=256", "cell [3][0] is wrapped around the world.");
t.eq(layer.grid[0][0].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C450%2C180%2C630&WIDTH=256&HEIGHT=256", "cell [0][0] is wrapped around the world lon, but not lat"); t.eq(layer.grid[0][0].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C270%2C90%2C360&WIDTH=256&HEIGHT=256", "cell [0][0] is wrapped around the world lon, but not lat");
t.eq(layer.grid[0][3].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-180%2C450%2C0%2C630&WIDTH=256&HEIGHT=256", "cell [3][0] is not wrapped at all."); t.eq(layer.grid[0][3].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-90%2C270%2C0%2C360&WIDTH=256&HEIGHT=256", "cell [3][0] is not wrapped at all.");
} }
function test_Layer_WrapDateLine_KaMap (t) { function test_Layer_WrapDateLine_KaMap (t) {
@@ -146,9 +146,9 @@
var m = new OpenLayers.Map('map'); var m = new OpenLayers.Map('map');
m.addLayer(layer); m.addLayer(layer);
m.zoomToMaxExtent(); m.zoomToMaxExtent();
t.eq(layer.grid[0][0].url, "http://www.openlayers.org/world/index.php?g=satellite&map=world&i=jpeg&t=-1280&l=0&s=221471921.25", "grid[0][0] kamap is okay"); t.eq(layer.grid[0][0].url, "http://www.openlayers.org/world/index.php?g=satellite&map=world&i=jpeg&t=-1280&l=0&s=110735960.625", "grid[0][0] kamap is okay");
t.eq(layer.grid[0][3].url, "http://www.openlayers.org/world/index.php?g=satellite&map=world&i=jpeg&t=-1280&l=-256&s=221471921.25", "grid[0][3] kamap is okay"); t.eq(layer.grid[0][3].url, "http://www.openlayers.org/world/index.php?g=satellite&map=world&i=jpeg&t=-1280&l=-256&s=110735960.625", "grid[0][3] kamap is okay");
t.eq(layer.grid[3][0].url, "http://www.openlayers.org/world/index.php?g=satellite&map=world&i=jpeg&t=-512&l=0&s=221471921.25", "grid[3][0] is okay"); t.eq(layer.grid[3][0].url, "http://www.openlayers.org/world/index.php?g=satellite&map=world&i=jpeg&t=-512&l=0&s=110735960.625", "grid[3][0] is okay");
} }
function test_Layer_WrapDateLine_WMS_Overlay (t) { function test_Layer_WrapDateLine_WMS_Overlay (t) {
t.plan( 3 ); t.plan( 3 );
@@ -163,9 +163,9 @@
var m = new OpenLayers.Map('map'); var m = new OpenLayers.Map('map');
m.addLayers([baselayer,layer]); m.addLayers([baselayer,layer]);
m.zoomToMaxExtent(); m.zoomToMaxExtent();
t.eq(layer.grid[0][0].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C450%2C180%2C630&WIDTH=256&HEIGHT=256", "grid[0][0] wms overlay is okay"); t.eq(layer.grid[0][0].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C270%2C90%2C360&WIDTH=256&HEIGHT=256", "grid[0][0] wms overlay is okay");
t.eq(layer.grid[0][3].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-180%2C450%2C0%2C630&WIDTH=256&HEIGHT=256", "grid[0][3] wms overlay is okay"); t.eq(layer.grid[0][3].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-90%2C270%2C0%2C360&WIDTH=256&HEIGHT=256", "grid[0][3] wms overlay is okay");
t.eq(layer.grid[3][0].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C-90%2C180%2C90&WIDTH=256&HEIGHT=256", "grid[3][0] wms overlay okay"); t.eq(layer.grid[3][0].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C0%2C90%2C90&WIDTH=256&HEIGHT=256", "grid[3][0] wms overlay okay");
} }
</script> </script>
+3 -1
View File
@@ -155,7 +155,7 @@
function test_06_Layer_getZoomForResolution(t) { function test_06_Layer_getZoomForResolution(t) {
t.plan(4); t.plan(6);
var layer = new OpenLayers.Layer('Test Layer'); var layer = new OpenLayers.Layer('Test Layer');
@@ -163,6 +163,8 @@
layer.resolutions = [128, 64, 32, 16, 8, 4, 2]; layer.resolutions = [128, 64, 32, 16, 8, 4, 2];
t.eq(layer.getZoomForResolution(200), 0, "zoom all the way out"); t.eq(layer.getZoomForResolution(200), 0, "zoom all the way out");
t.eq(layer.getZoomForResolution(65), 1, "index closest to 65");
t.eq(layer.getZoomForResolution(63), 1, "index closest to 63");
t.eq(layer.getZoomForResolution(25), 2, "zoom in middle"); t.eq(layer.getZoomForResolution(25), 2, "zoom in middle");
t.eq(layer.getZoomForResolution(3), 5, "zoom allmost all the way in"); t.eq(layer.getZoomForResolution(3), 5, "zoom allmost all the way in");
t.eq(layer.getZoomForResolution(1), 6, "zoom all the way in"); t.eq(layer.getZoomForResolution(1), 6, "zoom all the way in");