Compare commits
6 Commits
release-2.
...
release-2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ac845503f | ||
|
|
4f62fdcfc8 | ||
|
|
c505d23c7b | ||
|
|
6ecd34eaf0 | ||
|
|
ef306a7cbe | ||
|
|
995ef95dba |
@@ -2,7 +2,7 @@
|
||||
|
||||
OpenLayers.js -- OpenLayers Map Viewer Library
|
||||
|
||||
Copyright 2005-2007 MetaCarta, Inc., released under the license.
|
||||
Copyright 2005-2007 MetaCarta, Inc., released under theBSD license.
|
||||
Please see http://svn.openlayers.org/trunk/openlayers/release-license.txt
|
||||
for the full text of the license.
|
||||
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<style type="text/css">
|
||||
#map {
|
||||
width: 800px;
|
||||
height: 475px;
|
||||
border: 1px solid black;
|
||||
}
|
||||
</style>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
var lon = 5;
|
||||
var lat = 40;
|
||||
var zoom = 5;
|
||||
var map, layer;
|
||||
|
||||
function init(){
|
||||
map = new OpenLayers.Map('map');
|
||||
layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
|
||||
map.addLayer(layer);
|
||||
map.addLayer(new OpenLayers.Layer.GML("KML", "kml/lines.kml", {format: OpenLayers.Format.KML}));
|
||||
map.zoomToExtent(new OpenLayers.Bounds(-112.292744,36.068477,-112.22408,36.109246));
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
<div id="map"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -19,8 +19,8 @@
|
||||
layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||
"http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
|
||||
map.addLayer(layer);
|
||||
map.addLayer(new OpenLayers.Layer.GML("KML", "kml/mc-search.kml", {format: OpenLayers.Format.KML}));
|
||||
map.zoomToMaxExtent();
|
||||
map.addLayer(new OpenLayers.Layer.GML("KML", "kml/lines.kml", {format: OpenLayers.Format.KML}));
|
||||
map.zoomToExtent(new OpenLayers.Bounds(-112.306698,36.017792,-112.03204,36.18087));
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
@@ -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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
||||
fs = cgi.FieldStorage()
|
||||
url = fs.getvalue('url', "http://openlayers.org")
|
||||
import sys, os
|
||||
|
||||
# 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',
|
||||
'prototype.openmnnd.org']
|
||||
allowedHosts = ['www.openlayers.org', 'openlayers.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:
|
||||
host = url.split("/")[2]
|
||||
@@ -30,24 +39,36 @@ try:
|
||||
print "Content-Type: text/plain"
|
||||
print
|
||||
print "This proxy does not allow you to access that location."
|
||||
|
||||
print
|
||||
print os.environ
|
||||
|
||||
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')
|
||||
for h in headers:
|
||||
if h.startswith("Content-Type:"):
|
||||
print h
|
||||
# print content type header
|
||||
i = y.info()
|
||||
if i.has_key("Content-Type"):
|
||||
print "Content-Type: %s" % (i["Content-Type"])
|
||||
else:
|
||||
print "Content-Type: text/plain"
|
||||
print
|
||||
|
||||
print y.read()
|
||||
|
||||
y.close()
|
||||
else:
|
||||
print """Content-Type: text/plain
|
||||
|
||||
Illegal request."""
|
||||
print "Content-Type: text/plain"
|
||||
print
|
||||
print "Illegal request."
|
||||
|
||||
except Exception, E:
|
||||
print "Status: 500 Unexpected Error"
|
||||
print "Content-Type: text/plain"
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
var vector = new OpenLayers.Layer.Vector("Editable Vectors");
|
||||
|
||||
map.addLayers([gmap, gsat, ghyb, veroad, veaer, vehyb,
|
||||
yahoo, yahoosat, yahoohyb, mapnik, wms]);
|
||||
yahoo, yahoosat, yahoohyb, mapnik, wms, vector]);
|
||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||
map.addControl(new OpenLayers.Control.EditingToolbar(vector));
|
||||
map.zoomToMaxExtent()
|
||||
|
||||
@@ -3,6 +3,13 @@
|
||||
* 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
|
||||
* OpenLayers custom string, number and function functions are described here.
|
||||
*/
|
||||
@@ -16,7 +23,7 @@
|
||||
OpenLayers.String = {
|
||||
/**
|
||||
* APIMethod: OpenLayers.String.startsWith
|
||||
* Whether or not a string starts with another string.
|
||||
* Test whether a string starts with another string.
|
||||
*
|
||||
* Parameters:
|
||||
* str - {String} The string to test.
|
||||
@@ -31,7 +38,7 @@ OpenLayers.String = {
|
||||
|
||||
/**
|
||||
* APIMethod: OpenLayers.String.contains
|
||||
* Whether or not a string contains another string.
|
||||
* Test whether a string contains another string.
|
||||
*
|
||||
* Parameters:
|
||||
* str - {String} The string to test.
|
||||
@@ -53,7 +60,7 @@ OpenLayers.String = {
|
||||
* modified.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
trim: function(str) {
|
||||
@@ -86,7 +93,7 @@ OpenLayers.String = {
|
||||
if (!String.prototype.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:
|
||||
* sStart - {Sring} The string we're testing for.
|
||||
@@ -106,7 +113,7 @@ if (!String.prototype.startsWith) {
|
||||
if (!String.prototype.contains) {
|
||||
/**
|
||||
* APIMethod: String.contains
|
||||
* Deprecated. Whether or not a string contains another string.
|
||||
* *Deprecated*. Whether or not a string contains another string.
|
||||
*
|
||||
* Parameters:
|
||||
* str - {String} The string that we're testing for.
|
||||
@@ -126,7 +133,7 @@ if (!String.prototype.contains) {
|
||||
if (!String.prototype.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:
|
||||
* {String} A trimmed version of the string - all leading and
|
||||
@@ -143,8 +150,8 @@ if (!String.prototype.trim) {
|
||||
|
||||
if (!String.prototype.camelize) {
|
||||
/**
|
||||
* APIMethod: camelize
|
||||
* Deprecated. Camel-case a hyphenated string.
|
||||
* APIMethod: String.camelize
|
||||
* *Deprecated*. Camel-case a hyphenated string.
|
||||
* Ex. "chicken-head" becomes "chickenHead", and
|
||||
* "-chicken-head" becomes "ChickenHead".
|
||||
*
|
||||
@@ -193,7 +200,7 @@ OpenLayers.Number = {
|
||||
if (!Number.prototype.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!
|
||||
*
|
||||
* Parameters:
|
||||
@@ -266,7 +273,7 @@ OpenLayers.Function = {
|
||||
if (!Function.prototype.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.
|
||||
*
|
||||
* Parameters:
|
||||
@@ -290,7 +297,7 @@ if (!Function.prototype.bind) {
|
||||
if (!Function.prototype.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.
|
||||
*
|
||||
* Parameters:
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
* Instances of this class represent bounding boxes. Data stored as left,
|
||||
* bottom, right, top floats. All values are initialized to null, however,
|
||||
* you should make sure you set them before using the bounds for anything.
|
||||
*
|
||||
* Possible use case:
|
||||
*
|
||||
* > bounds = new OpenLayers.Bounds();
|
||||
* > bounds.extend(new OpenLayers.LonLat(4,5));
|
||||
* > 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({
|
||||
|
||||
@@ -81,13 +81,13 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
|
||||
/**
|
||||
* Method: equals
|
||||
* Test a two bounds for equivalence
|
||||
* Test a two bounds for equivalence.
|
||||
*
|
||||
* Parameters:
|
||||
* bounds - {<OpenLayers.Bounds>}
|
||||
*
|
||||
* 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
|
||||
* passed in is null, returns false.
|
||||
*/
|
||||
@@ -106,7 +106,7 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
* APIMethod: toString
|
||||
*
|
||||
* 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>)
|
||||
*/
|
||||
toString:function() {
|
||||
@@ -132,7 +132,7 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
* Default is 6
|
||||
*
|
||||
* Returns:
|
||||
* {String} Simple String representation of OpenLayers.Bounds object.
|
||||
* {String} Simple String representation of bounds object.
|
||||
* (ex. <i>"5,42,10,45"</i>)
|
||||
*/
|
||||
toBBOX:function(decimal) {
|
||||
@@ -162,7 +162,7 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
* APIMethod: getHeight
|
||||
*
|
||||
* Returns:
|
||||
* {Float} The height of the bounds
|
||||
* {Float} The height of the bounds (top minus bottom).
|
||||
*/
|
||||
getHeight:function() {
|
||||
return (this.top - this.bottom);
|
||||
@@ -172,7 +172,7 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
* APIMethod: getSize
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.Size>} An <OpenLayers.Size> which represents the size of the box
|
||||
* {<OpenLayers.Size>} The size of the box.
|
||||
*/
|
||||
getSize:function() {
|
||||
return new OpenLayers.Size(this.getWidth(), this.getHeight());
|
||||
@@ -182,8 +182,7 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
* APIMethod: getCenterPixel
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.Pixel>} An <OpenLayers.Pixel> which represents the center
|
||||
* of the bounds
|
||||
* {<OpenLayers.Pixel>} The center of the bounds in pixel space.
|
||||
*/
|
||||
getCenterPixel:function() {
|
||||
return new OpenLayers.Pixel( (this.left + this.right) / 2,
|
||||
@@ -194,8 +193,7 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
* APIMethod: getCenterLonLat
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.LonLat>} An <OpenLayers.LonLat> which represents the center
|
||||
* of the bounds
|
||||
* {<OpenLayers.LonLat>} The center of the bounds in map space.
|
||||
*/
|
||||
getCenterLonLat:function() {
|
||||
return new OpenLayers.LonLat( (this.left + this.right) / 2,
|
||||
@@ -210,9 +208,8 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
* y - {Float}
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.Bounds>} A new <OpenLayers.Bounds> whose coordinates are
|
||||
* the same as this, but shifted by the passed-in
|
||||
* x and y values
|
||||
* {<OpenLayers.Bounds>} A new bounds whose coordinates are the same as
|
||||
* this, but shifted by the passed-in x and y values.
|
||||
*/
|
||||
add:function(x, y) {
|
||||
if ( (x == null) || (y == null) ) {
|
||||
@@ -227,8 +224,7 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
/**
|
||||
* APIMethod: extend
|
||||
* 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:
|
||||
* object - {Object} Can be LonLat, Point, or Bounds
|
||||
@@ -273,11 +269,11 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
*
|
||||
* Parameters:
|
||||
* ll - {<OpenLayers.LonLat>}
|
||||
* inclusive - {Boolean} Whether or not to include the border.
|
||||
* Default is true.
|
||||
* inclusive - {Boolean} Whether or not to include the border.
|
||||
* Default is true.
|
||||
*
|
||||
* 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) {
|
||||
return this.contains(ll.lon, ll.lat, inclusive);
|
||||
@@ -288,11 +284,11 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
*
|
||||
* Parameters:
|
||||
* px - {<OpenLayers.Pixel>}
|
||||
* inclusive - {Boolean} Whether or not to include the border.
|
||||
* Default is true.
|
||||
* inclusive - {Boolean} Whether or not to include the border. Default is
|
||||
* true.
|
||||
*
|
||||
* 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) {
|
||||
return this.contains(px.x, px.y, inclusive);
|
||||
@@ -304,12 +300,12 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
* Parameters:
|
||||
* x - {Float}
|
||||
* y - {Float}
|
||||
* inclusive - {Boolean} Whether or not to include the border.
|
||||
* Default is true.
|
||||
* inclusive - {Boolean} Whether or not to include the border. Default is
|
||||
* true.
|
||||
*
|
||||
* Returns:
|
||||
* {Boolean} Whether or not the passed-in coordinates are within this
|
||||
* bounds.
|
||||
* bounds.
|
||||
*/
|
||||
contains:function(x, y, inclusive) {
|
||||
|
||||
@@ -334,13 +330,13 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
*
|
||||
* Parameters:
|
||||
* bounds - {<OpenLayers.Bounds>}
|
||||
* inclusive - {<Boolean>} Whether or not to include the border.
|
||||
* Default is true.
|
||||
* inclusive - {<Boolean>} Whether or not to include the border. Default
|
||||
* is true.
|
||||
*
|
||||
* Returns:
|
||||
* {Boolean} Whether or not the passed-in OpenLayers.Bounds object
|
||||
* intersects this bounds. Simple math just check if either
|
||||
* contains the other, allowing for partial.
|
||||
* {Boolean} The passed-in OpenLayers.Bounds object intersects this bounds.
|
||||
* Simple math just check if either contains the other, allowing for
|
||||
* partial.
|
||||
*/
|
||||
intersectsBounds:function(bounds, inclusive) {
|
||||
|
||||
@@ -369,16 +365,14 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
* APIMethod: containsBounds
|
||||
*
|
||||
* bounds - {<OpenLayers.Bounds>}
|
||||
* partial - {<Boolean>} If true, only part of passed-in
|
||||
* <OpenLayers.Bounds> needs be within this bounds.
|
||||
* If false, the entire passed-in bounds must be
|
||||
* within. Default is false
|
||||
* inclusive - {<Boolean>} Whether or not to include the border.
|
||||
* Default is true.
|
||||
* partial - {<Boolean>} If true, only part of passed-in bounds needs be
|
||||
* within this bounds. If false, the entire passed-in bounds must be
|
||||
* within. Default is false
|
||||
* inclusive - {<Boolean>} Whether or not to include the border. Default is
|
||||
* true.
|
||||
*
|
||||
* Returns:
|
||||
* {Boolean} Whether or not the passed-in OpenLayers.Bounds object is
|
||||
* contained within this bounds.
|
||||
* {Boolean} The passed-in bounds object is contained within this bounds.
|
||||
*/
|
||||
containsBounds:function(bounds, partial, inclusive) {
|
||||
|
||||
@@ -418,8 +412,8 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
* lonlat - {<OpenLayers.LonLat>}
|
||||
*
|
||||
* Returns:
|
||||
* {String} The quadrant ("br" "tr" "tl" "bl") of the bounds in which
|
||||
* the coordinate lies.
|
||||
* {String} The quadrant ("br" "tr" "tl" "bl") of the bounds in which the
|
||||
* coordinate lies.
|
||||
*/
|
||||
determineQuadrant: function(lonlat) {
|
||||
|
||||
@@ -495,7 +489,7 @@ OpenLayers.Bounds = OpenLayers.Class({
|
||||
* str - {String}Comma-separated bounds string. (ex. <i>"5,42,10,45"</i>)
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.Bounds>} New <OpenLayers.Bounds> object built from the
|
||||
* {<OpenLayers.Bounds>} New bounds object built from the
|
||||
* passed-in String.
|
||||
*/
|
||||
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>)
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.Bounds>} New <OpenLayers.Bounds> object built from the
|
||||
* passed-in Array.
|
||||
* {<OpenLayers.Bounds>} New bounds object built from the passed-in Array.
|
||||
*/
|
||||
OpenLayers.Bounds.fromArray = function(bbox) {
|
||||
return new OpenLayers.Bounds(parseFloat(bbox[0]),
|
||||
@@ -531,8 +524,7 @@ OpenLayers.Bounds.fromArray = function(bbox) {
|
||||
* size - {<OpenLayers.Size>}
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.Bounds>} New <OpenLayers.Bounds> object built from the
|
||||
* passed-in size.
|
||||
* {<OpenLayers.Bounds>} New bounds object built from the passed-in size.
|
||||
*/
|
||||
OpenLayers.Bounds.fromSize = function(size) {
|
||||
return new OpenLayers.Bounds(0,
|
||||
|
||||
@@ -93,7 +93,7 @@ OpenLayers.Control = OpenLayers.Class({
|
||||
|
||||
/**
|
||||
* Property: handler
|
||||
* {<OpenLayers.Handler}> null
|
||||
* {<OpenLayers.Handler>} null
|
||||
*/
|
||||
handler: null,
|
||||
|
||||
|
||||
@@ -31,9 +31,9 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
* that is about to be dragged and the pixel location of the mouse.
|
||||
*
|
||||
* Parameters:
|
||||
* feature - {OpenLayers.Feature.Vector} The feature that is about to be
|
||||
* feature - {<OpenLayers.Feature.Vector>} The feature that is about to be
|
||||
* dragged.
|
||||
* pixel - {OpenLayers.Pixel} The pixel location of the mouse.
|
||||
* pixel - {<OpenLayers.Pixel>} The pixel location of the mouse.
|
||||
*/
|
||||
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.
|
||||
*
|
||||
* Parameters:
|
||||
* feature - {OpenLayers.Feature.Vector} The feature that was dragged.
|
||||
* pixel - {OpenLayers.Pixel} The pixel location of the mouse.
|
||||
* feature - {<OpenLayers.Feature.Vector>} The feature that was dragged.
|
||||
* pixel - {<OpenLayers.Pixel>} The pixel location of the mouse.
|
||||
*/
|
||||
onDrag: function(feature, pixel) {},
|
||||
|
||||
@@ -57,26 +57,26 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
* mouse.
|
||||
*
|
||||
* Parameters:
|
||||
* feature - {OpenLayers.Feature.Vector} The feature that was dragged.
|
||||
* pixel - {OpenLayers.Pixel} The pixel location of the mouse.
|
||||
* feature - {<OpenLayers.Feature.Vector>} The feature that was dragged.
|
||||
* pixel - {<OpenLayers.Pixel>} The pixel location of the mouse.
|
||||
*/
|
||||
onComplete: function(feature, pixel) {},
|
||||
|
||||
/**
|
||||
* Property: layer
|
||||
* {OpenLayers.Layer.Vector}
|
||||
* {<OpenLayers.Layer.Vector>}
|
||||
*/
|
||||
layer: null,
|
||||
|
||||
/**
|
||||
* Property: feature
|
||||
* {OpenLayers.Feature.Vector}
|
||||
* {<OpenLayers.Feature.Vector>}
|
||||
*/
|
||||
feature: null,
|
||||
|
||||
/**
|
||||
* Property: dragHandler
|
||||
* {OpenLayers.Handler.Drag}
|
||||
* {<OpenLayers.Handler.Drag>}
|
||||
*/
|
||||
dragHandler: null,
|
||||
|
||||
@@ -88,7 +88,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
|
||||
/**
|
||||
* Property: featureHandler
|
||||
* {OpenLayers.Handler.Feature}
|
||||
* {<OpenLayers.Handler.Feature>}
|
||||
*/
|
||||
featureHandler: null,
|
||||
|
||||
@@ -100,7 +100,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
|
||||
/**
|
||||
* Property: lastPixel
|
||||
* {OpenLayers.Pixel}
|
||||
* {<OpenLayers.Pixel>}
|
||||
*/
|
||||
lastPixel: null,
|
||||
|
||||
@@ -109,7 +109,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
* Create a new control to drag features.
|
||||
*
|
||||
* Parameters:
|
||||
* layer - {OpenLayers.Layer.Vector} The layer containing features to be
|
||||
* layer - {<OpenLayers.Layer.Vector>} The layer containing features to be
|
||||
* dragged.
|
||||
* options - {Object} Optional object whose properties will be set on the
|
||||
* control.
|
||||
@@ -179,7 +179,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
* This activates the drag handler.
|
||||
*
|
||||
* Parameters:
|
||||
* feature - {OpenLayers.Feature.Vector} The selected feature.
|
||||
* feature - {<OpenLayers.Feature.Vector>} The selected feature.
|
||||
*/
|
||||
overFeature: function(feature) {
|
||||
if(!this.dragHandler.dragging) {
|
||||
@@ -202,7 +202,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
* Called when the drag handler detects a mouse-down.
|
||||
*
|
||||
* Parameters:
|
||||
* pixel - {OpenLayers.Pixel} Location of the mouse event.
|
||||
* pixel - {<OpenLayers.Pixel>} Location of the mouse event.
|
||||
*/
|
||||
downFeature: function(pixel) {
|
||||
this.lastPixel = pixel;
|
||||
@@ -215,7 +215,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
* optional onDrag method.
|
||||
*
|
||||
* Parameters:
|
||||
* pixel - {OpenLayers.Pixel} Location of the mouse event.
|
||||
* pixel - {<OpenLayers.Pixel>} Location of the mouse event.
|
||||
*/
|
||||
moveFeature: function(pixel) {
|
||||
var res = this.map.getResolution();
|
||||
@@ -232,7 +232,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
* optional onComplete method.
|
||||
*
|
||||
* Parameters:
|
||||
* pixel - {OpenLayers.Pixel} Location of the mouse event.
|
||||
* pixel - {<OpenLayers.Pixel>} Location of the mouse event.
|
||||
*/
|
||||
upFeature: function(pixel) {
|
||||
if(!this.over) {
|
||||
@@ -248,7 +248,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
* Called when the drag handler is done dragging.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
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.
|
||||
*
|
||||
* Parameters:
|
||||
* feature - {OpenLayers.Feature.Vector} The feature that the mouse left.
|
||||
* feature - {<OpenLayers.Feature.Vector>} The feature that the mouse left.
|
||||
*/
|
||||
outFeature: function(feature) {
|
||||
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.
|
||||
*
|
||||
* Parameters:
|
||||
* map - {OpenLayers.Map} The control's map.
|
||||
* map - {<OpenLayers.Map>} The control's map.
|
||||
*/
|
||||
setMap: function(map) {
|
||||
this.dragHandler.setMap(map);
|
||||
|
||||
@@ -30,7 +30,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
|
||||
/**
|
||||
* Property: layer
|
||||
* {OpenLayers.Layer.Vector}
|
||||
* {<OpenLayers.Layer.Vector>}
|
||||
*/
|
||||
layer: null,
|
||||
|
||||
@@ -116,7 +116,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
* Create a new modify feature control.
|
||||
*
|
||||
* Parameters:
|
||||
* layer - {OpenLayers.Layer.Vector} Layer that contains features that
|
||||
* layer - {<OpenLayers.Layer.Vector>} Layer that contains features that
|
||||
* will be modified.
|
||||
* options - {Object} Optional object whose properties will be set on the
|
||||
* control.
|
||||
@@ -450,7 +450,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
* Set the map property for the control and all handlers.
|
||||
*
|
||||
* Parameters:
|
||||
* map - {OpenLayers.Map} The control's map.
|
||||
* map - {<OpenLayers.Map>} The control's map.
|
||||
*/
|
||||
setMap: function(map) {
|
||||
this.selectControl.setMap(map);
|
||||
|
||||
@@ -61,6 +61,16 @@ OpenLayers.Control.MousePosition = OpenLayers.Class(OpenLayers.Control, {
|
||||
OpenLayers.Control.prototype.initialize.apply(this, arguments);
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: destroy
|
||||
*/
|
||||
destroy: function() {
|
||||
if (this.map) {
|
||||
this.map.events.unregister('mousemove', this, this.redraw);
|
||||
}
|
||||
OpenLayers.Control.prototype.destroy.apply(this, arguments);
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: draw
|
||||
* {DOMElement}
|
||||
|
||||
@@ -53,7 +53,7 @@ OpenLayers.Control.OverviewMap = OpenLayers.Class(OpenLayers.Control, {
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
minRatio: 8,
|
||||
|
||||
@@ -15,13 +15,13 @@ OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, {
|
||||
|
||||
/**
|
||||
* APIProperty: slideFactor
|
||||
* {Float}
|
||||
* {Integer}
|
||||
*/
|
||||
slideFactor: 50,
|
||||
|
||||
/**
|
||||
* Property: buttons
|
||||
* Array of Button Divs
|
||||
* {Array(DOMElement)} Array of Button Divs
|
||||
*/
|
||||
buttons: null,
|
||||
|
||||
@@ -32,9 +32,12 @@ OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, {
|
||||
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,
|
||||
OpenLayers.Control.PanZoom.Y);
|
||||
OpenLayers.Control.prototype.initialize.apply(this, arguments);
|
||||
@@ -61,7 +64,7 @@ OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, {
|
||||
* px - {<OpenLayers.Pixel>}
|
||||
*
|
||||
* 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) {
|
||||
// initialize our internal div
|
||||
@@ -100,7 +103,7 @@ OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, {
|
||||
*
|
||||
* Returns:
|
||||
* {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) {
|
||||
var imgLocation = OpenLayers.Util.getImagesLocation() + img;
|
||||
@@ -179,5 +182,14 @@ OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, {
|
||||
CLASS_NAME: "OpenLayers.Control.PanZoom"
|
||||
});
|
||||
|
||||
/**
|
||||
* Constant: X
|
||||
* {Integer}
|
||||
*/
|
||||
OpenLayers.Control.PanZoom.X = 4;
|
||||
|
||||
/**
|
||||
* Constant: Y
|
||||
* {Integer}
|
||||
*/
|
||||
OpenLayers.Control.PanZoom.Y = 4;
|
||||
|
||||
@@ -5,7 +5,12 @@
|
||||
/**
|
||||
* @requires OpenLayers/Format/XML.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
|
||||
* Read/Wite GML. Create a new instance with the <OpenLayers.Format.GML>
|
||||
@@ -290,7 +295,7 @@ OpenLayers.Format.GML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
// look for <gml:posList>
|
||||
nodeList = this.getElementsByTagNameNS(node, this.gmlns, "posList");
|
||||
if(nodeList.length > 0) {
|
||||
coordString = nodeList[0].firstChild.nodeValue;
|
||||
coordString = this.concatChildValues(nodeList[0]);
|
||||
coordString = coordString.replace(this.regExes.trimSpace, "");
|
||||
coords = coordString.split(this.regExes.splitSpace);
|
||||
var dim = parseInt(nodeList[0].getAttribute("dimension"));
|
||||
@@ -309,7 +314,7 @@ OpenLayers.Format.GML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
nodeList = this.getElementsByTagNameNS(node, this.gmlns,
|
||||
"coordinates");
|
||||
if(nodeList.length > 0) {
|
||||
coordString = nodeList[0].firstChild.nodeValue;
|
||||
coordString = this.concatChildValues(nodeList[0]);
|
||||
coordString = coordString.replace(this.regExes.trimSpace,
|
||||
"");
|
||||
coordString = coordString.replace(this.regExes.trimComma,
|
||||
@@ -448,7 +453,8 @@ OpenLayers.Format.GML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
grandchildren = child.childNodes;
|
||||
if(grandchildren.length == 1) {
|
||||
grandchild = grandchildren[0];
|
||||
if(grandchild.nodeType == 3) {
|
||||
if(grandchild.nodeType == 3 ||
|
||||
grandchild.nodeType == 4) {
|
||||
name = (child.prefix) ?
|
||||
child.nodeName.split(":")[1] :
|
||||
child.nodeName;
|
||||
|
||||
@@ -4,6 +4,13 @@
|
||||
|
||||
/**
|
||||
* @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
|
||||
* Read and write GeoJSON. Create a new parser with the
|
||||
@@ -86,9 +93,9 @@ OpenLayers.Format.GeoJSON = OpenLayers.Class(OpenLayers.Format.JSON, {
|
||||
break;
|
||||
case "GeometryCollection":
|
||||
results = [];
|
||||
for(var i=0; i<obj.members.length; ++i) {
|
||||
for(var i=0; i<obj.geometries.length; ++i) {
|
||||
try {
|
||||
results.push(this.parseGeometry(obj.members[i]));
|
||||
results.push(this.parseGeometry(obj.geometries[i]));
|
||||
} catch(err) {
|
||||
results = null;
|
||||
OpenLayers.Console.error(err);
|
||||
@@ -108,9 +115,9 @@ OpenLayers.Format.GeoJSON = OpenLayers.Class(OpenLayers.Format.JSON, {
|
||||
}
|
||||
break;
|
||||
case "FeatureCollection":
|
||||
for(var i=0; i<obj.members.length; ++i) {
|
||||
for(var i=0; i<obj.features.length; ++i) {
|
||||
try {
|
||||
results.push(this.parseFeature(obj.members[i]));
|
||||
results.push(this.parseFeature(obj.features[i]));
|
||||
} catch(err) {
|
||||
results = null;
|
||||
OpenLayers.Console.error(err);
|
||||
@@ -118,9 +125,9 @@ OpenLayers.Format.GeoJSON = OpenLayers.Class(OpenLayers.Format.JSON, {
|
||||
}
|
||||
break;
|
||||
case "GeometryCollection":
|
||||
for(var i=0; i<obj.members.length; ++i) {
|
||||
for(var i=0; i<obj.geometries.length; ++i) {
|
||||
try {
|
||||
var geom = this.parseGeometry(obj.members[i]);
|
||||
var geom = this.parseGeometry(obj.geometries[i]);
|
||||
results.push(new OpenLayers.Feature.Vector(geom));
|
||||
} catch(err) {
|
||||
results = null;
|
||||
@@ -429,28 +436,24 @@ OpenLayers.Format.GeoJSON = OpenLayers.Class(OpenLayers.Format.JSON, {
|
||||
"type": null
|
||||
};
|
||||
if(obj instanceof Array) {
|
||||
geojson.members = [];
|
||||
if(obj[0] instanceof OpenLayers.Feature.Vector) {
|
||||
geojson.features = [];
|
||||
} else if (obj[0].CLASS_NAME.search("OpenLayers.Geometry") == 0) {
|
||||
geojson.geometries = [];
|
||||
}
|
||||
for(var i=0; i<obj.length; ++i) {
|
||||
var element = obj[i];
|
||||
if(element instanceof OpenLayers.Feature.Vector) {
|
||||
if(geojson.type == null) {
|
||||
geojson.type = "FeatureCollection";
|
||||
if(element.layer && element.layer.projection) {
|
||||
var proj = element.layer.projection;
|
||||
if(proj.match(/epsg:/i)) {
|
||||
geojson.crs = {
|
||||
"type": "EPSG",
|
||||
"properties": {
|
||||
"code": parseInt(proj.substring(proj.indexOf(":") + 1))
|
||||
}
|
||||
};
|
||||
}
|
||||
geojson.crs = this.createCRSObject(element);
|
||||
}
|
||||
} else if(geojson.type != "FeatureCollection") {
|
||||
OpenLayers.Console.error("FeatureCollection only supports collections of features: " + element);
|
||||
break;
|
||||
}
|
||||
geojson.members.push(this.extract.feature.apply(this, [element]));
|
||||
geojson.features.push(this.extract.feature.apply(this, [element]));
|
||||
} else if (element.CLASS_NAME.search("OpenLayers.Geometry") == 0) {
|
||||
if(geojson.type == null) {
|
||||
geojson.type = "GeometryCollection";
|
||||
@@ -458,7 +461,7 @@ OpenLayers.Format.GeoJSON = OpenLayers.Class(OpenLayers.Format.JSON, {
|
||||
OpenLayers.Console.error("GeometryCollection only supports collections of geometries: " + element);
|
||||
break;
|
||||
}
|
||||
geojson.members.push(this.extract.geometry.apply(this, [element]));
|
||||
geojson.geometries.push(this.extract.geometry.apply(this, [element]));
|
||||
}
|
||||
}
|
||||
} else if (obj.CLASS_NAME.search("OpenLayers.Geometry") == 0) {
|
||||
@@ -466,20 +469,47 @@ OpenLayers.Format.GeoJSON = OpenLayers.Class(OpenLayers.Format.JSON, {
|
||||
} else if (obj instanceof OpenLayers.Feature.Vector) {
|
||||
geojson = this.extract.feature.apply(this, [obj]);
|
||||
if(obj.layer && obj.layer.projection) {
|
||||
var proj = obj.layer.projection;
|
||||
if(proj.match(/epsg:/i)) {
|
||||
geojson.crs = {
|
||||
"type": "EPSG",
|
||||
"properties": {
|
||||
"code": parseInt(proj.substring(proj.indexOf(":") + 1))
|
||||
}
|
||||
};
|
||||
}
|
||||
geojson.crs = this.createCRSObject(obj);
|
||||
}
|
||||
}
|
||||
return OpenLayers.Format.JSON.prototype.write.apply(this,
|
||||
[geojson, pretty]);
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: createCRSObject
|
||||
* Create the CRS object for an object.
|
||||
*
|
||||
* Parameters:
|
||||
* object - {<OpenLayers.Feature.Vector>}
|
||||
*
|
||||
* Returns:
|
||||
* {Object} An object which can be assigned to the crs property
|
||||
* of a GeoJSON object.
|
||||
*/
|
||||
createCRSObject: function(object) {
|
||||
var proj = object.layer.projection;
|
||||
var crs = {}
|
||||
if (proj.match(/epsg:/i)) {
|
||||
var code = parseInt(proj.substring(proj.indexOf(":") + 1));
|
||||
if (code == 4326) {
|
||||
crs = {
|
||||
"type": "OGC",
|
||||
"properties": {
|
||||
"urn": "urn:ogc:def:crs:OGC:1.3:CRS84"
|
||||
}
|
||||
};
|
||||
} else {
|
||||
crs = {
|
||||
"type": "EPSG",
|
||||
"properties": {
|
||||
"code": code
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
return crs;
|
||||
},
|
||||
|
||||
/**
|
||||
* Property: extract
|
||||
|
||||
@@ -3,8 +3,11 @@
|
||||
* for the full text of the license. */
|
||||
|
||||
/**
|
||||
* @requires OpenLayers/Format.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
|
||||
* Read/write GeoRSS parser. Create a new instance with the
|
||||
@@ -35,6 +38,13 @@ OpenLayers.Format.GeoRSS = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
* "http://www.georss.org/georss"
|
||||
*/
|
||||
georssns: "http://www.georss.org/georss",
|
||||
|
||||
/**
|
||||
* APIProperty: geons
|
||||
* {String} W3C Geo namespace to use. Defaults to
|
||||
* "http://www.w3.org/2003/01/geo/wgs84_pos#"
|
||||
*/
|
||||
geons: "http://www.w3.org/2003/01/geo/wgs84_pos#",
|
||||
|
||||
/**
|
||||
* APIProperty: featureTitle
|
||||
|
||||
@@ -3,8 +3,12 @@
|
||||
* for the full text of the license. */
|
||||
|
||||
/**
|
||||
* @requires OpenLayers/Format.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
|
||||
* @requires OpenLayers/Geometry/Collection.js
|
||||
*
|
||||
* Class: OpenLayers.Format.KML
|
||||
* Read/Wite KML. Create a new instance with the <OpenLayers.Format.KML>
|
||||
@@ -44,6 +48,13 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
* {Boolean} Extract attributes from KML. Default is true.
|
||||
*/
|
||||
extractAttributes: true,
|
||||
|
||||
/**
|
||||
* Property: internalns
|
||||
* {String} KML Namespace to use -- defaults to the namespace of the
|
||||
* Placemark node being parsed, but falls back to kmlns.
|
||||
*/
|
||||
internalns: null,
|
||||
|
||||
/**
|
||||
* Constructor: OpenLayers.Format.KML
|
||||
@@ -79,7 +90,7 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
data = OpenLayers.Format.XML.prototype.read.apply(this, [data]);
|
||||
}
|
||||
var featureNodes = this.getElementsByTagNameNS(data,
|
||||
this.kmlns,
|
||||
'*',
|
||||
"Placemark");
|
||||
var numFeatures = featureNodes.length;
|
||||
var features = new Array(numFeatures);
|
||||
@@ -112,7 +123,10 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
var type, nodeList, geometry, parser;
|
||||
for(var i=0; i<order.length; ++i) {
|
||||
type = order[i];
|
||||
nodeList = this.getElementsByTagNameNS(node, this.kmlns, type);
|
||||
this.internalns = node.namespaceURI ?
|
||||
node.namespaceURI : this.kmlns;
|
||||
nodeList = this.getElementsByTagNameNS(node,
|
||||
this.internalns, type);
|
||||
if(nodeList.length > 0) {
|
||||
// only deal with first geometry of this type
|
||||
var parser = this.parseGeometry[type.toLowerCase()];
|
||||
@@ -161,7 +175,7 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
* {<OpenLayers.Geometry.Point>} A point geometry.
|
||||
*/
|
||||
point: function(node) {
|
||||
var nodeList = this.getElementsByTagNameNS(node, this.kmlns,
|
||||
var nodeList = this.getElementsByTagNameNS(node, this.internalns,
|
||||
"coordinates");
|
||||
var coords = [];
|
||||
if(nodeList.length > 0) {
|
||||
@@ -196,7 +210,7 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
* {<OpenLayers.Geometry.LineString>} A linestring geometry.
|
||||
*/
|
||||
linestring: function(node, ring) {
|
||||
var nodeList = this.getElementsByTagNameNS(node, this.kmlns,
|
||||
var nodeList = this.getElementsByTagNameNS(node, this.internalns,
|
||||
"coordinates");
|
||||
var line = null;
|
||||
if(nodeList.length > 0) {
|
||||
@@ -250,7 +264,7 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
* {<OpenLayers.Geometry.Polygon>} A polygon geometry.
|
||||
*/
|
||||
polygon: function(node) {
|
||||
var nodeList = this.getElementsByTagNameNS(node, this.kmlns,
|
||||
var nodeList = this.getElementsByTagNameNS(node, this.internalns,
|
||||
"LinearRing");
|
||||
var numRings = nodeList.length;
|
||||
var components = new Array(numRings);
|
||||
@@ -279,7 +293,7 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
* node - {DOMElement} A KML MultiGeometry node.
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.Geometry.Polygon>} A geometry collection.
|
||||
* {<OpenLayers.Geometry.Collection>} A geometry collection.
|
||||
*/
|
||||
multigeometry: function(node) {
|
||||
var child, parser;
|
||||
@@ -322,7 +336,7 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
grandchildren = child.childNodes;
|
||||
if(grandchildren.length == 1) {
|
||||
grandchild = grandchildren[0];
|
||||
if(grandchild.nodeType == 3) {
|
||||
if(grandchild.nodeType == 3 || grandchild.nodeType == 4) {
|
||||
name = (child.prefix) ?
|
||||
child.nodeName.split(":")[1] :
|
||||
child.nodeName;
|
||||
@@ -634,4 +648,4 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
},
|
||||
|
||||
CLASS_NAME: "OpenLayers.Format.KML"
|
||||
});
|
||||
});
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
/**
|
||||
* @requires OpenLayers/Format.js
|
||||
* @requires OpenLayers/Feature/Vector.js
|
||||
*
|
||||
* Class: OpenLayers.Format.WKT
|
||||
* 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
|
||||
* Deserialize a WKT string and return an OpenLayers.Feature.Vector or an
|
||||
* array of OpenLayers.Feature.Vector. Supports WKT for POINT, MULTIPOINT,
|
||||
* Deserialize a WKT string and return a vector feature or an
|
||||
* array of vector features. Supports WKT for POINT, MULTIPOINT,
|
||||
* LINESTRING, MULTILINESTRING, POLYGON, MULTIPOLYGON, and
|
||||
* GEOMETRYCOLLECTION.
|
||||
*
|
||||
|
||||
@@ -256,6 +256,62 @@ OpenLayers.Format.XML = OpenLayers.Class(OpenLayers.Format, {
|
||||
}
|
||||
return attributeValue;
|
||||
},
|
||||
|
||||
/**
|
||||
* APIMethod: getChildValue
|
||||
* Get the value of the first child node if it exists, or return an
|
||||
* optional default string. Returns an empty string if no first child
|
||||
* exists and no default value is supplied.
|
||||
*
|
||||
* Parameters:
|
||||
* node - {DOMElement} The element used to look for a first child value.
|
||||
* def - {String} Optional string to return in the event that no
|
||||
* first child value exists.
|
||||
*
|
||||
* Returns:
|
||||
* {String} The value of the first child of the given node.
|
||||
*/
|
||||
getChildValue: function(node, def) {
|
||||
var value;
|
||||
try {
|
||||
value = node.firstChild.nodeValue;
|
||||
} catch(e) {
|
||||
value = (def != undefined) ? def : "";
|
||||
}
|
||||
return value;
|
||||
},
|
||||
|
||||
/**
|
||||
* APIMethod: concatChildValues
|
||||
* Concatenate the value of all child nodes if any exist, or return an
|
||||
* optional default string. Returns an empty string if no children
|
||||
* exist and no default value is supplied. Not optimized for large
|
||||
* numbers of child nodes.
|
||||
*
|
||||
* Parameters:
|
||||
* node - {DOMElement} The element used to look for child values.
|
||||
* def - {String} Optional string to return in the event that no
|
||||
* child exist.
|
||||
*
|
||||
* Returns:
|
||||
* {String} The concatenated value of all child nodes of the given node.
|
||||
*/
|
||||
concatChildValues: function(node, def) {
|
||||
var value = "";
|
||||
var child = node.firstChild;
|
||||
var childValue;
|
||||
while(child) {
|
||||
childValue = child.nodeValue;
|
||||
if(childValue) {
|
||||
value += childValue;
|
||||
}
|
||||
child = child.nextSibling;
|
||||
}
|
||||
if(value == "" && def != undefined) {
|
||||
value = def;
|
||||
}
|
||||
return value;
|
||||
},
|
||||
|
||||
/**
|
||||
* APIMethod: hasAttributeNS
|
||||
|
||||
@@ -143,9 +143,10 @@ OpenLayers.Handler.Drag = OpenLayers.Class(OpenLayers.Handler, {
|
||||
* {Boolean} Let the event propagate.
|
||||
*/
|
||||
mousedown: function (evt) {
|
||||
var propagate = true;
|
||||
this.dragging = false;
|
||||
if (this.checkModifiers(evt) && OpenLayers.Event.isLeftClick(evt)) {
|
||||
this.started = true;
|
||||
this.dragging = false;
|
||||
this.start = evt.xy;
|
||||
this.last = evt.xy;
|
||||
// TBD replace with CSS classes
|
||||
@@ -159,9 +160,13 @@ OpenLayers.Handler.Drag = OpenLayers.Class(OpenLayers.Handler, {
|
||||
document.onselectstart = function() {return false;}
|
||||
}
|
||||
|
||||
return false;
|
||||
propagate = false;
|
||||
} else {
|
||||
this.started = false;
|
||||
this.start = null;
|
||||
this.last = null;
|
||||
}
|
||||
return true;
|
||||
return propagate;
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -253,13 +258,8 @@ OpenLayers.Handler.Drag = OpenLayers.Class(OpenLayers.Handler, {
|
||||
* {Boolean} Let the event propagate.
|
||||
*/
|
||||
click: function (evt) {
|
||||
// throw away the first left click event that happens after a mouse up
|
||||
if (this.dragging) {
|
||||
this.dragging = false;
|
||||
return false;
|
||||
}
|
||||
this.started = false;
|
||||
return true;
|
||||
// let the click event propagate only if the mouse moved
|
||||
return (this.start == this.last);
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -284,7 +284,7 @@ OpenLayers.Handler.RegularPolygon = OpenLayers.Class(OpenLayers.Handler.Drag, {
|
||||
* Calculate the angle based on settings.
|
||||
*
|
||||
* Parameters:
|
||||
* point - {OpenLayers.Geometry.Point}
|
||||
* point - {<OpenLayers.Geometry.Point>}
|
||||
* evt - {Event}
|
||||
*/
|
||||
calculateAngle: function(point, evt) {
|
||||
|
||||
@@ -731,20 +731,24 @@ OpenLayers.Layer = OpenLayers.Class({
|
||||
*
|
||||
* Parameters:
|
||||
* bounds - {<OpenLayers.Bounds>}
|
||||
* closest - {Boolean} Find the zoom level that most closely fits the
|
||||
* specified bounds. Note that this may result in a zoom that does
|
||||
* not exactly contain the entire extent.
|
||||
* Default is false.
|
||||
*
|
||||
* Returns:
|
||||
* {Integer} The index of the zoomLevel (entry in the resolutions array)
|
||||
* that still contains the passed-in extent. We do this by calculating
|
||||
* the ideal resolution for the given exteng (based on the map size)
|
||||
* and then find the smallest resolution that is greater than this
|
||||
* ideal resolution.
|
||||
* for the passed-in extent. We do this by calculating the ideal
|
||||
* resolution for the given extent (based on the map size) and then
|
||||
* calling getZoomForResolution(), passing along the 'closest'
|
||||
* parameter.
|
||||
*/
|
||||
getZoomForExtent: function(extent) {
|
||||
getZoomForExtent: function(extent, closest) {
|
||||
var viewSize = this.map.getSize();
|
||||
var idealResolution = Math.max( extent.getWidth() / viewSize.w,
|
||||
extent.getHeight() / viewSize.h );
|
||||
|
||||
return this.getZoomForResolution(idealResolution);
|
||||
return this.getZoomForResolution(idealResolution, closest);
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -764,20 +768,36 @@ OpenLayers.Layer = OpenLayers.Class({
|
||||
*
|
||||
* Parameters:
|
||||
* resolution - {Float}
|
||||
* closest - {Boolean} Find the zoom level that corresponds to the absolute
|
||||
* closest resolution, which may result in a zoom whose corresponding
|
||||
* resolution is actually smaller than we would have desired (if this
|
||||
* is being called from a getZoomForExtent() call, then this means that
|
||||
* the returned zoom index might not actually contain the entire
|
||||
* extent specified... but it'll be close).
|
||||
* Default is false.
|
||||
*
|
||||
* Returns:
|
||||
* {Integer} The index of the zoomLevel (entry in the resolutions array)
|
||||
* that is the smallest resolution that is greater than the passed-in
|
||||
* resolution.
|
||||
* that corresponds to the best fit resolution given the passed in
|
||||
* value and the 'closest' specification.
|
||||
*/
|
||||
getZoomForResolution: function(resolution) {
|
||||
|
||||
for(var i=1; i < this.resolutions.length; i++) {
|
||||
if ( this.resolutions[i] < resolution) {
|
||||
break;
|
||||
getZoomForResolution: function(resolution, closest) {
|
||||
var diff;
|
||||
var minDiff = Number.POSITIVE_INFINITY;
|
||||
for(var i=0; i < this.resolutions.length; i++) {
|
||||
if (closest) {
|
||||
diff = Math.abs(this.resolutions[i] - resolution);
|
||||
if (diff > minDiff) {
|
||||
break;
|
||||
}
|
||||
minDiff = diff;
|
||||
} else {
|
||||
if (this.resolutions[i] < resolution) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return (i - 1);
|
||||
return Math.max(0, i-1);
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -264,18 +264,18 @@ OpenLayers.Layer.Google = OpenLayers.Class(
|
||||
* {GPoint} A GPoint specifying gLatLng translated into "Container" coords
|
||||
*/
|
||||
addContainerPxFunction: function() {
|
||||
if (typeof GMap2 != "undefined" && !GMap2.fromLatLngToContainerPixel) {
|
||||
if ( (typeof GMap2 != "undefined") &&
|
||||
!GMap2.prototype.fromLatLngToContainerPixel) {
|
||||
|
||||
GMap2.prototype.fromLatLngToContainerPixel = function(gLatLng) {
|
||||
|
||||
// first we translate into "DivPixel"
|
||||
var gPoint = this.fromLatLngToDivPixel(gLatLng);
|
||||
var gPoint = this.fromLatLngToDivPixel(gLatLng);
|
||||
|
||||
// locate the sliding "Div" div
|
||||
// it seems like "b" is the main div
|
||||
var div = this.b.firstChild.firstChild;
|
||||
|
||||
// adjust by the offset of "Div" and voila!
|
||||
// locate the sliding "Div" div
|
||||
var div = this.getContainer().firstChild.firstChild;
|
||||
|
||||
// adjust by the offset of "Div" and voila!
|
||||
gPoint.x += div.offsetLeft;
|
||||
gPoint.y += div.offsetTop;
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@ OpenLayers.Layer.Image = OpenLayers.Class(OpenLayers.Layer, {
|
||||
*/
|
||||
setUrl: function(newUrl) {
|
||||
this.url = newUrl;
|
||||
this.draw();
|
||||
this.tile.draw();
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -40,5 +40,29 @@ OpenLayers.Layer.MapServer.Untiled = OpenLayers.Class(OpenLayers.Layer.MapServer
|
||||
OpenLayers.Console.warn(msg);
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: clone
|
||||
* Create a clone of this layer
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.Layer.MapServer.Untiled>} An exact clone of this layer
|
||||
*/
|
||||
clone: function (obj) {
|
||||
|
||||
if (obj == null) {
|
||||
obj = new OpenLayers.Layer.MapServer.Untiled(this.name,
|
||||
this.url,
|
||||
this.params,
|
||||
this.options);
|
||||
}
|
||||
|
||||
//get all additions from superclasses
|
||||
obj = OpenLayers.Layer.MapServer.prototype.clone.apply(this, [obj]);
|
||||
|
||||
// copy/set any non-init, non-simple values here
|
||||
|
||||
return obj;
|
||||
},
|
||||
|
||||
CLASS_NAME: "OpenLayers.Layer.MapServer.Untiled"
|
||||
});
|
||||
|
||||
@@ -13,6 +13,12 @@
|
||||
*/
|
||||
OpenLayers.Layer.TMS = OpenLayers.Class(OpenLayers.Layer.Grid, {
|
||||
|
||||
/**
|
||||
* APIProperty: serviceVersion
|
||||
* {String}
|
||||
*/
|
||||
serviceVersion: "1.0.0",
|
||||
|
||||
/**
|
||||
* APIProperty: isBaseLayer
|
||||
* {Boolean}
|
||||
@@ -91,7 +97,7 @@ OpenLayers.Layer.TMS = OpenLayers.Class(OpenLayers.Layer.Grid, {
|
||||
var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tileSize.w));
|
||||
var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tileSize.h));
|
||||
var z = this.map.getZoom();
|
||||
var path = "1.0.0" + "/" + this.layername + "/" + z + "/" + x + "/" + y + "." + this.type;
|
||||
var path = this.serviceVersion + "/" + this.layername + "/" + z + "/" + x + "/" + y + "." + this.type;
|
||||
var url = this.url;
|
||||
if (url instanceof Array) {
|
||||
url = this.selectUrl(path, url);
|
||||
|
||||
@@ -255,6 +255,7 @@ OpenLayers.Layer.WFS = OpenLayers.Class(
|
||||
this.tile = null;
|
||||
this.tile = new OpenLayers.Tile.WFS(this, pos, tileBounds,
|
||||
url, tileSize);
|
||||
this.addTileMonitoringHooks(this.tile);
|
||||
this.tile.draw();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,5 +40,29 @@ OpenLayers.Layer.WMS.Untiled = OpenLayers.Class(OpenLayers.Layer.WMS, {
|
||||
OpenLayers.Console.warn(msg);
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: clone
|
||||
* Create a clone of this layer
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.Layer.WMS.Untiled>} An exact clone of this layer
|
||||
*/
|
||||
clone: function (obj) {
|
||||
|
||||
if (obj == null) {
|
||||
obj = new OpenLayers.Layer.WMS.Untiled(this.name,
|
||||
this.url,
|
||||
this.params,
|
||||
this.options);
|
||||
}
|
||||
|
||||
//get all additions from superclasses
|
||||
obj = OpenLayers.Layer.WMS.prototype.clone.apply(this, [obj]);
|
||||
|
||||
// copy/set any non-init, non-simple values here
|
||||
|
||||
return obj;
|
||||
},
|
||||
|
||||
CLASS_NAME: "OpenLayers.Layer.WMS.Untiled"
|
||||
});
|
||||
|
||||
@@ -91,6 +91,7 @@ OpenLayers.Layer.Yahoo = OpenLayers.Class(
|
||||
var size = this.getMapObjectSizeFromOLSize(this.map.getSize());
|
||||
this.mapObject = new YMap(this.div, this.type, size);
|
||||
this.mapObject.disableKeyControls();
|
||||
this.mapObject.disableDragMap();
|
||||
} catch(e) {}
|
||||
},
|
||||
|
||||
|
||||
@@ -707,7 +707,7 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
} else {
|
||||
// zoom to oldExtent *and* force zoom change
|
||||
this.setCenter(oldExtent.getCenterLonLat(),
|
||||
this.getZoomForExtent(oldExtent),
|
||||
this.getZoomForExtent(oldExtent, true),
|
||||
false, true);
|
||||
}
|
||||
}
|
||||
@@ -1352,19 +1352,23 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
|
||||
|
||||
/**
|
||||
* APIMethod: getZoomForExteng
|
||||
* APIMethod: getZoomForExtent
|
||||
*
|
||||
* Parameters:
|
||||
* bounds - {<OpenLayers.Bounds>}
|
||||
* closest - {Boolean} Find the zoom level that most closely fits the
|
||||
* specified bounds. Note that this may result in a zoom that does
|
||||
* not exactly contain the entire extent.
|
||||
* Default is false.
|
||||
*
|
||||
* Returns:
|
||||
* {Integer} A suitable zoom level for the specified bounds.
|
||||
* If no baselayer is set, returns null.
|
||||
*/
|
||||
getZoomForExtent: function (bounds) {
|
||||
getZoomForExtent: function (bounds, closest) {
|
||||
var zoom = null;
|
||||
if (this.baseLayer != null) {
|
||||
zoom = this.baseLayer.getZoomForExtent(bounds);
|
||||
zoom = this.baseLayer.getZoomForExtent(bounds, closest);
|
||||
}
|
||||
return zoom;
|
||||
},
|
||||
@@ -1374,15 +1378,22 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
*
|
||||
* Parameter:
|
||||
* resolution - {Float}
|
||||
* closest - {Boolean} Find the zoom level that corresponds to the absolute
|
||||
* closest resolution, which may result in a zoom whose corresponding
|
||||
* resolution is actually smaller than we would have desired (if this
|
||||
* is being called from a getZoomForExtent() call, then this means that
|
||||
* the returned zoom index might not actually contain the entire
|
||||
* extent specified... but it'll be close).
|
||||
* Default is false.
|
||||
*
|
||||
* Returns:
|
||||
* {Integer} A suitable zoom level for the specified resolution.
|
||||
* If no baselayer is set, returns null.
|
||||
*/
|
||||
getZoomForResolution: function(resolution) {
|
||||
getZoomForResolution: function(resolution, closest) {
|
||||
var zoom = null;
|
||||
if (this.baseLayer != null) {
|
||||
zoom = this.baseLayer.getZoomForResolution(resolution);
|
||||
zoom = this.baseLayer.getZoomForResolution(resolution, closest);
|
||||
}
|
||||
return zoom;
|
||||
},
|
||||
|
||||
@@ -991,7 +991,12 @@ OpenLayers.Util.pagePosition = function(forElement) {
|
||||
while(element) {
|
||||
|
||||
if(element == document.body) {
|
||||
if(OpenLayers.Element.getStyle(child, 'position') == 'absolute') {
|
||||
// FIXME: IE, when passed 'window' as the forElement, treats it as
|
||||
// equal to document.body, but window.style fails, so getStyle
|
||||
// fails, so we are paranoid and check this here. This check should
|
||||
// probably move into element.getStyle in 2.6.
|
||||
if(child && child.style &&
|
||||
OpenLayers.Element.getStyle(child, 'position') == 'absolute') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
1
news.txt
1
news.txt
@@ -1,7 +1,6 @@
|
||||
OpenLayers 2.5:
|
||||
r4???
|
||||
Released ??
|
||||
RC1: 09/17/07
|
||||
http://trac.openlayers.org/wiki/Release/2.5/Notes
|
||||
|
||||
OpenLayers 2.4:
|
||||
|
||||
45
tests/Control/test_MousePosition.html
Normal file
45
tests/Control/test_MousePosition.html
Normal file
@@ -0,0 +1,45 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="../../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
function test_MousePosition_constructor(t) {
|
||||
t.plan(2);
|
||||
|
||||
var control = new OpenLayers.Control.MousePosition();
|
||||
t.ok(control instanceof OpenLayers.Control.MousePosition, "new OpenLayers.Control.MousePosition returns object");
|
||||
t.eq(control.displayClass, "olControlMousePosition", "displayClass set correctly");
|
||||
}
|
||||
|
||||
function test_MousePosition_destroy(t) {
|
||||
t.plan(1);
|
||||
|
||||
var map = new OpenLayers.Map('map');
|
||||
var control = new OpenLayers.Control.MousePosition();
|
||||
map.addControl(control);
|
||||
|
||||
var listeners = map.events.listeners.mousemove.length;
|
||||
control.destroy();
|
||||
|
||||
t.eq(map.events.listeners.mousemove.length, listeners - 1, "mousemove event is unregistered");
|
||||
}
|
||||
|
||||
function test_MousePosition_addControl(t) {
|
||||
t.plan(4);
|
||||
|
||||
var map = new OpenLayers.Map('map');
|
||||
var control = new OpenLayers.Control.MousePosition();
|
||||
map.addControl(control);
|
||||
|
||||
t.ok(control.map === map, "Control.map is set to the map object");
|
||||
t.ok(map.controls[map.controls.length - 1] === control, "map.controls contains control");
|
||||
t.eq(parseInt(control.div.style.zIndex), map.Z_INDEX_BASE['Control'] + 5, "Control div zIndexed properly" );
|
||||
t.eq(parseInt(map.viewPortDiv.lastChild.style.zIndex), map.Z_INDEX_BASE['Control'] + 5, "Viewport div contains control div");
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="map" style="width: 1024px; height: 512px;"/>
|
||||
</body>
|
||||
</html>
|
||||
@@ -147,13 +147,14 @@
|
||||
t.eq(data[0].geometry.components.length, 2, "rings length correct");
|
||||
}
|
||||
function test_Format_GML_read_attributes(t) {
|
||||
t.plan(1);
|
||||
t.plan(2);
|
||||
var parser = new OpenLayers.Format.GML();
|
||||
data = parser.read(test_content[0]);
|
||||
t.eq(data[0].attributes['NAME'], "WY", "Simple Attribute data is read correctly.");
|
||||
t.eq(data[0].attributes['LONGNAME'], "Wyoming", "Attribute data is read from CDATA node correctly.");
|
||||
}
|
||||
|
||||
var test_content = ['<?xml version="1.0" encoding="utf-8" ?>\n<ogr:FeatureCollection\n xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n xsi:schemaLocation="http://ogr.maptools.org/ testoutput.xsd"\n xmlns:ogr="http://ogr.maptools.org/"\n xmlns:gml="http://www.opengis.net/gml">\n <gml:boundedBy>\n <gml:Box>\n <gml:coord><gml:X>-1254041.389711702</gml:X><gml:Y>250906.9515983529</gml:Y></gml:coord>\n <gml:coord><gml:X>-634517.1199908922</gml:X><gml:Y>762236.2940800377</gml:Y></gml:coord>\n </gml:Box>\n </gml:boundedBy> \n <gml:featureMember>\n <ogr:states fid="F0">\n <ogr:geometryProperty><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-634517.11999089224,691849.77929356066,0 -653761.64509297756,471181.53429472551,0 -673343.60852865304,250906.9515983529,0 -1088825.734430399,299284.85108220269,0 -1254041.3897117018,324729.27754874947,0 -1235750.4212498858,434167.33911316615,0 -1190777.7803201093,704392.96327195223,0 -1181607.835811228,762236.29408003774,0 -634517.11999089224,691849.77929356066,0</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>\n <ogr:NAME>WY</ogr:NAME>\n </ogr:states>\n </gml:featureMember>\n</ogr:FeatureCollection>\n',
|
||||
var test_content = ['<?xml version="1.0" encoding="utf-8" ?>\n<ogr:FeatureCollection\n xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n xsi:schemaLocation="http://ogr.maptools.org/ testoutput.xsd"\n xmlns:ogr="http://ogr.maptools.org/"\n xmlns:gml="http://www.opengis.net/gml">\n <gml:boundedBy>\n <gml:Box>\n <gml:coord><gml:X>-1254041.389711702</gml:X><gml:Y>250906.9515983529</gml:Y></gml:coord>\n <gml:coord><gml:X>-634517.1199908922</gml:X><gml:Y>762236.2940800377</gml:Y></gml:coord>\n </gml:Box>\n </gml:boundedBy> \n <gml:featureMember>\n <ogr:states fid="F0">\n <ogr:geometryProperty><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-634517.11999089224,691849.77929356066,0 -653761.64509297756,471181.53429472551,0 -673343.60852865304,250906.9515983529,0 -1088825.734430399,299284.85108220269,0 -1254041.3897117018,324729.27754874947,0 -1235750.4212498858,434167.33911316615,0 -1190777.7803201093,704392.96327195223,0 -1181607.835811228,762236.29408003774,0 -634517.11999089224,691849.77929356066,0</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>\n <ogr:NAME>WY</ogr:NAME>\n <ogr:LONGNAME><![CDATA[Wyoming]]></ogr:LONGNAME>\n </ogr:states>\n </gml:featureMember>\n</ogr:FeatureCollection>\n',
|
||||
'<wfs:FeatureCollection' +
|
||||
' xmlns:fs="http://example.com/featureserver"' +
|
||||
' xmlns:wfs="http://www.opengis.net/wfs"' +
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
<script src="../../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var poly_content = '{"type": "FeatureCollection", "members": [{"geometry": {"type": "Polygon", "coordinates": [[[-131.484375, -5.9765625], [-112.5, -58.0078125], [-32.34375, -50.2734375], [-114.609375, 52.3828125], [-167.34375, -35.5078125], [-146.953125, -57.3046875], [-139.921875, -34.1015625], [-131.484375, -5.9765625]]]}, "type": "Feature", "id": 562, "properties": {"strokeColor": "red", "title": "Feature 2", "author": "Your Name Here"}}]}';
|
||||
var poly_content = '{"type": "FeatureCollection", "features": [{"geometry": {"type": "Polygon", "coordinates": [[[-131.484375, -5.9765625], [-112.5, -58.0078125], [-32.34375, -50.2734375], [-114.609375, 52.3828125], [-167.34375, -35.5078125], [-146.953125, -57.3046875], [-139.921875, -34.1015625], [-131.484375, -5.9765625]]]}, "type": "Feature", "id": 562, "properties": {"strokeColor": "red", "title": "Feature 2", "author": "Your Name Here"}}]}';
|
||||
var point_feature = '{"geometry": {"type": "Point", "coordinates": [94.21875, 72.94921875]}, "type": "Feature", "id": 573, "properties": {"strokeColor": "blue", "title": "Feature 5", "author": "Your Name Here"}}'
|
||||
var line_feature = '{"type": "FeatureCollection", "members": [{"geometry": {"type": "LineString", "coordinates": [[-27.0703125, 59.4140625], [-77.6953125, 20.7421875], [30.5859375, -36.2109375], [67.1484375, 34.8046875]]}, "type": "Feature", "id": 559, "properties": {"strokeColor": "red", "title": "Feature 1", "author": "Your Name Here"}}]}';
|
||||
var multiple_features = '{"type": "FeatureCollection", "members": [{"geometry": {"type": "Point", "coordinates": [-91.0546875, 43.9453125]}, "type": "Feature", "id": 577, "properties": {"strokeColor": "red", "title": "Feature 2", "image": "foo.gif", "author": "Your Name Here"}}, {"geometry": {"type": "LineString", "coordinates": [[91.40625, -1.40625], [116.015625, -42.890625], [153.28125, -28.125], [108.984375, 11.25], [75.234375, 8.4375], [76.640625, 9.140625], [67.5, -36.5625], [67.5, -35.859375]]}, "type": "Feature", "id": 576, "properties": {"strokeColor": "red", "title": "Feature 1", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [139.5703125, 57.48046875]}, "type": "Feature", "id": 575, "properties": {"strokeColor": "blue", "title": "Feature 7", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [107.2265625, 82.44140625]}, "type": "Feature", "id": 574, "properties": {"strokeColor": "blue", "title": "Feature 6", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [94.21875, 72.94921875]}, "type": "Feature", "id": 573, "properties": {"strokeColor": "blue", "title": "Feature 5", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [116.3671875, 61.69921875]}, "type": "Feature", "id": 572, "properties": {"strokeColor": "blue", "title": "Feature 4", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [145.8984375, 73.65234375]}, "type": "Feature", "id": 571, "properties": {"strokeColor": "blue", "title": "Feature 3", "author": "Your Name Here"}}, {"geometry": {"type": "Polygon", "coordinates": [[[32.34375, 52.20703125], [87.1875, 70.13671875], [122.6953125, 37.44140625], [75.234375, 42.36328125], [40.078125, 42.36328125], [28.828125, 48.33984375], [18.6328125, 56.77734375], [23.203125, 65.56640625], [32.34375, 52.20703125]]]}, "type": "Feature", "id": 570, "properties": {"strokeColor": "blue", "title": "Feature 2", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [62.578125, -53.4375]}, "type": "Feature", "id": 569, "properties": {"strokeColor": "red", "title": "Feature 3", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [121.640625, 16.875]}, "type": "Feature", "id": 568, "properties": {"strokeColor": "red", "title": "Feature 6", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [135.703125, 8.4375]}, "type": "Feature", "id": 567, "properties": {"strokeColor": "red", "title": "Feature 4", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [137.109375, 48.515625]}, "type": "Feature", "id": 566, "properties": {"strokeColor": "red", "title": "Feature 274", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [0, 5]}, "type": "Feature", "id": 565, "properties": {}}, {"geometry": {"type": "Point", "coordinates": [0, 5]}, "type": "Feature", "id": 564, "properties": {}}, {"geometry": {"type": "Point", "coordinates": [0, 5]}, "type": "Feature", "id": 563, "properties": {}}, {"geometry": {"type": "Polygon", "coordinates": [[[-131.484375, -5.9765625], [-112.5, -58.0078125], [-32.34375, -50.2734375], [-114.609375, 52.3828125], [-167.34375, -35.5078125], [-146.953125, -57.3046875], [-139.921875, -34.1015625], [-131.484375, -5.9765625]]]}, "type": "Feature", "id": 562, "properties": {"strokeColor": "red", "title": "Feature 2", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [48.8671875, -15.8203125]}, "type": "Feature", "id": 560, "properties": {"strokeColor": "red", "title": "Feature 2", "author": "Your Name Here"}}, {"geometry": {"type": "LineString", "coordinates": [[-27.0703125, 59.4140625], [-77.6953125, 20.7421875], [30.5859375, -36.2109375], [67.1484375, 34.8046875]]}, "type": "Feature", "id": 559, "properties": {"strokeColor": "red", "title": "Feature 1", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [12.65625, 16.5234375]}, "type": "Feature", "id": 558, "properties": {"styleUrl": "#allstyle", "title": "Feature 1", "strokeColor": "red", "author": "Your Name Here"}}]}';
|
||||
var line_feature = '{"type": "FeatureCollection", "features": [{"geometry": {"type": "LineString", "coordinates": [[-27.0703125, 59.4140625], [-77.6953125, 20.7421875], [30.5859375, -36.2109375], [67.1484375, 34.8046875]]}, "type": "Feature", "id": 559, "properties": {"strokeColor": "red", "title": "Feature 1", "author": "Your Name Here"}}]}';
|
||||
var multiple_features = '{"type": "FeatureCollection", "features": [{"geometry": {"type": "Point", "coordinates": [-91.0546875, 43.9453125]}, "type": "Feature", "id": 577, "properties": {"strokeColor": "red", "title": "Feature 2", "image": "foo.gif", "author": "Your Name Here"}}, {"geometry": {"type": "LineString", "coordinates": [[91.40625, -1.40625], [116.015625, -42.890625], [153.28125, -28.125], [108.984375, 11.25], [75.234375, 8.4375], [76.640625, 9.140625], [67.5, -36.5625], [67.5, -35.859375]]}, "type": "Feature", "id": 576, "properties": {"strokeColor": "red", "title": "Feature 1", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [139.5703125, 57.48046875]}, "type": "Feature", "id": 575, "properties": {"strokeColor": "blue", "title": "Feature 7", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [107.2265625, 82.44140625]}, "type": "Feature", "id": 574, "properties": {"strokeColor": "blue", "title": "Feature 6", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [94.21875, 72.94921875]}, "type": "Feature", "id": 573, "properties": {"strokeColor": "blue", "title": "Feature 5", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [116.3671875, 61.69921875]}, "type": "Feature", "id": 572, "properties": {"strokeColor": "blue", "title": "Feature 4", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [145.8984375, 73.65234375]}, "type": "Feature", "id": 571, "properties": {"strokeColor": "blue", "title": "Feature 3", "author": "Your Name Here"}}, {"geometry": {"type": "Polygon", "coordinates": [[[32.34375, 52.20703125], [87.1875, 70.13671875], [122.6953125, 37.44140625], [75.234375, 42.36328125], [40.078125, 42.36328125], [28.828125, 48.33984375], [18.6328125, 56.77734375], [23.203125, 65.56640625], [32.34375, 52.20703125]]]}, "type": "Feature", "id": 570, "properties": {"strokeColor": "blue", "title": "Feature 2", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [62.578125, -53.4375]}, "type": "Feature", "id": 569, "properties": {"strokeColor": "red", "title": "Feature 3", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [121.640625, 16.875]}, "type": "Feature", "id": 568, "properties": {"strokeColor": "red", "title": "Feature 6", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [135.703125, 8.4375]}, "type": "Feature", "id": 567, "properties": {"strokeColor": "red", "title": "Feature 4", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [137.109375, 48.515625]}, "type": "Feature", "id": 566, "properties": {"strokeColor": "red", "title": "Feature 274", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [0, 5]}, "type": "Feature", "id": 565, "properties": {}}, {"geometry": {"type": "Point", "coordinates": [0, 5]}, "type": "Feature", "id": 564, "properties": {}}, {"geometry": {"type": "Point", "coordinates": [0, 5]}, "type": "Feature", "id": 563, "properties": {}}, {"geometry": {"type": "Polygon", "coordinates": [[[-131.484375, -5.9765625], [-112.5, -58.0078125], [-32.34375, -50.2734375], [-114.609375, 52.3828125], [-167.34375, -35.5078125], [-146.953125, -57.3046875], [-139.921875, -34.1015625], [-131.484375, -5.9765625]]]}, "type": "Feature", "id": 562, "properties": {"strokeColor": "red", "title": "Feature 2", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [48.8671875, -15.8203125]}, "type": "Feature", "id": 560, "properties": {"strokeColor": "red", "title": "Feature 2", "author": "Your Name Here"}}, {"geometry": {"type": "LineString", "coordinates": [[-27.0703125, 59.4140625], [-77.6953125, 20.7421875], [30.5859375, -36.2109375], [67.1484375, 34.8046875]]}, "type": "Feature", "id": 559, "properties": {"strokeColor": "red", "title": "Feature 1", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [12.65625, 16.5234375]}, "type": "Feature", "id": 558, "properties": {"styleUrl": "#allstyle", "title": "Feature 1", "strokeColor": "red", "author": "Your Name Here"}}]}';
|
||||
var parser = new OpenLayers.Format.GeoJSON();
|
||||
|
||||
function test_Format_GeoJSON_constructor(t) {
|
||||
@@ -145,7 +145,7 @@
|
||||
|
||||
var geomcol = {
|
||||
"type": "GeometryCollection",
|
||||
"members": [
|
||||
"geometries": [
|
||||
{
|
||||
"type": "Point",
|
||||
"coordinates": [100.0, 0.0]
|
||||
@@ -184,12 +184,29 @@
|
||||
t.eq(types, {'Point':15, 'Polygon': 2, 'LineString':2}, "Correct number of each type");
|
||||
}
|
||||
|
||||
function test_Format_GeoJSON_writeWithCRS(t) {
|
||||
t.plan(2)
|
||||
var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,2));
|
||||
feature.fid = 0;
|
||||
var output = '{"type":"Feature","id":0,"properties":{},"geometry":{"type":"Point","coordinates":[1,2]},"crs":{"type":"OGC","properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}';
|
||||
layer = new OpenLayers.Layer.Vector();
|
||||
layer.projection = "EPSG:4326";
|
||||
feature.layer = layer;
|
||||
var parser = new OpenLayers.Format.GeoJSON();
|
||||
test_out = parser.write(feature);
|
||||
t.eq(test_out, output, "Output is equal for vector with layer in EPSG:4326 ");
|
||||
feature.layer.projection = "EPSG:2805";
|
||||
var output = '{"type":"Feature","id":0,"properties":{},"geometry":{"type":"Point","coordinates":[1,2]},"crs":{"type":"EPSG","properties":{"code":2805}}}';
|
||||
test_out = parser.write(feature);
|
||||
t.eq(test_out, output, "Output is equal for vector with point");
|
||||
}
|
||||
|
||||
function test_Format_GeoJSON_write(t) {
|
||||
t.plan(10);
|
||||
|
||||
var line_object = {
|
||||
"type": "FeatureCollection",
|
||||
"members": [
|
||||
"features": [
|
||||
{
|
||||
"geometry": {
|
||||
"type": "LineString",
|
||||
@@ -212,7 +229,7 @@
|
||||
};
|
||||
data = parser.read(line_object);
|
||||
out = parser.write(data);
|
||||
serialized = '{"type":"FeatureCollection","members":[{"type":"Feature","id":559,"properties":{"strokeColor":"red","title":"Feature 1","author":"Your Name Here"},"geometry":{"type":"LineString","coordinates":[[-27.0703125,59.4140625],[-77.6953125,20.7421875],[30.5859375,-36.2109375],[67.1484375,34.8046875]]}}]}';
|
||||
serialized = '{"type":"FeatureCollection","features":[{"type":"Feature","id":559,"properties":{"strokeColor":"red","title":"Feature 1","author":"Your Name Here"},"geometry":{"type":"LineString","coordinates":[[-27.0703125,59.4140625],[-77.6953125,20.7421875],[30.5859375,-36.2109375],[67.1484375,34.8046875]]}}]}';
|
||||
t.eq(out, serialized, "input and output on line collections are the same");
|
||||
|
||||
var serialize_tests = [
|
||||
@@ -253,8 +270,8 @@
|
||||
serialize_tests.push([multiline, '{"type":"MultiLineString","coordinates":[[[1,2],[3,4]],[[1,2],[3,4]]]}']);
|
||||
multipolygon = new OpenLayers.Geometry.MultiPolygon([serialize_tests[4][0], serialize_tests[4][0]]);
|
||||
serialize_tests.push([multipolygon, '{"type":"MultiPolygon","coordinates":[[[[1,2],[3,4],[5,6],[1,2]]],[[[1,2],[3,4],[5,6],[1,2]]]]}']);
|
||||
serialize_tests.push([ [ serialize_tests[0][0] ], '{"type":"FeatureCollection","members":[{"type":"Feature","id":0,"properties":{},"geometry":{"type":"Point","coordinates":[1,2]}}]}' ]);
|
||||
serialize_tests.push([ [ serialize_tests[1][0], serialize_tests[2][0] ], '{"type":"GeometryCollection","members":[{"type":"Point","coordinates":[1,2]},{"type":"MultiPoint","coordinates":[[1,2]]}]}' ]);
|
||||
serialize_tests.push([ [ serialize_tests[0][0] ], '{"type":"FeatureCollection","features":[{"type":"Feature","id":0,"properties":{},"geometry":{"type":"Point","coordinates":[1,2]}}]}' ]);
|
||||
serialize_tests.push([ [ serialize_tests[1][0], serialize_tests[2][0] ], '{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2]},{"type":"MultiPoint","coordinates":[[1,2]]}]}' ]);
|
||||
for (var i = 0; i < serialize_tests.length; i++) {
|
||||
var input = serialize_tests[i][0];
|
||||
var output = serialize_tests[i][1];
|
||||
@@ -268,7 +285,7 @@
|
||||
|
||||
var line_object = {
|
||||
"type": "FeatureCollection",
|
||||
"members": [
|
||||
"features": [
|
||||
{
|
||||
"geometry": {
|
||||
"type": "LineString",
|
||||
|
||||
@@ -26,6 +26,14 @@
|
||||
var data = parser.write([f]);
|
||||
t.eq(data, '<rss xmlns="http://backend.userland.com/rss2"><item><title></title><description></description><georss:line xmlns:georss="http://www.georss.org/georss">45.68 -111.04 45.68 -112.04</georss:line></item></rss>', 'GeoRSS serializes a line correctly');
|
||||
}
|
||||
function test_Format_GeoRSS_w3cgeo(t) {
|
||||
t.plan(2);
|
||||
|
||||
var parser = new OpenLayers.Format.GeoRSS();
|
||||
var data = parser.read('<rss xmlns="http://backend.userland.com/rss2" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"><item><geo:long>-1</geo:long><geo:lat>1</geo:lat></item></rss>');
|
||||
t.eq(data[0].geometry.x, -1, "w3c geo x read correctly");
|
||||
t.eq(data[0].geometry.y, 1, "w3c geo y read correctly");
|
||||
}
|
||||
function test_Format_GeoRSS_roundtrip(t) {
|
||||
t.plan(input.length);
|
||||
var parser = new OpenLayers.Format.GeoRSS();
|
||||
|
||||
@@ -28,6 +28,24 @@
|
||||
"read geometry collection");
|
||||
}
|
||||
|
||||
function test_Format_KML_readCdataAttributes_20(t) {
|
||||
t.plan(2);
|
||||
var cdata = '<kml xmlns="http://earth.google.com/kml/2.0"><Document><Placemark><name><![CDATA[Pezinok]]></name><description><![CDATA[Full of text.]]></description><styleUrl>#rel1.0</styleUrl><Point> <coordinates>17.266666, 48.283333</coordinates></Point></Placemark></Document></kml>';
|
||||
var features = (new OpenLayers.Format.KML()).read(cdata);
|
||||
t.eq(features[0].attributes.description, "Full of text.", "Description attribute in cdata read correctly");
|
||||
t.eq(features[0].attributes.name, "Pezinok", "title attribute in cdata read correctly");
|
||||
|
||||
}
|
||||
|
||||
function test_Format_KML_readCdataAttributes_21(t) {
|
||||
t.plan(2);
|
||||
var cdata = '<kml xmlns="http://earth.google.com/kml/2.1"><Document><Placemark><name><![CDATA[Pezinok]]></name><description><![CDATA[Full of text.]]></description><styleUrl>#rel1.0</styleUrl><Point> <coordinates>17.266666, 48.283333</coordinates></Point></Placemark></Document></kml>';
|
||||
var features = (new OpenLayers.Format.KML()).read(cdata);
|
||||
t.eq(features[0].attributes.description, "Full of text.", "Description attribute in cdata read correctly");
|
||||
t.eq(features[0].attributes.name, "Pezinok", "title attribute in cdata read correctly");
|
||||
|
||||
}
|
||||
|
||||
function test_Format_KML_write(t) {
|
||||
// make sure id, name, and description are preserved
|
||||
t.plan(1);
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
}
|
||||
|
||||
function test_Handler_Drag_callbacks(t) {
|
||||
t.plan(30);
|
||||
t.plan(33);
|
||||
|
||||
var map = new OpenLayers.Map('map', {controls: []});
|
||||
|
||||
@@ -115,10 +115,41 @@
|
||||
var handler = new OpenLayers.Handler.Drag(control, callbacks);
|
||||
handler.activate();
|
||||
|
||||
// test mousedown
|
||||
var oldIsLeftClick = OpenLayers.Event.isLeftClick;
|
||||
var oldStop = OpenLayers.Event.stop;
|
||||
var oldCheckModifiers = handler.checkModifiers;
|
||||
|
||||
// test mousedown with right click
|
||||
OpenLayers.Event.isLeftClick = function() {
|
||||
return false;
|
||||
}
|
||||
handler.checkModifiers = function() {
|
||||
return true;
|
||||
}
|
||||
handler.started = true;
|
||||
handler.start = {x: "foo", y: "bar"};
|
||||
handler.last = {x: "foo", y: "bar"};
|
||||
map.events.triggerEvent("mousedown", testEvents.down);
|
||||
t.ok(!handler.started, "right-click sets started to false");
|
||||
t.eq(handler.start, null, "right-click sets start to null");
|
||||
t.eq(handler.last, null, "right-click sets last to null");
|
||||
|
||||
// test mousedown with improper modifier
|
||||
OpenLayers.Event.isLeftClick = function() {
|
||||
return true;
|
||||
}
|
||||
handler.checkModifiers = function() {
|
||||
return false;
|
||||
}
|
||||
handler.started = true;
|
||||
handler.start = {x: "foo", y: "bar"};
|
||||
handler.last = {x: "foo", y: "bar"};
|
||||
map.events.triggerEvent("mousedown", testEvents.down);
|
||||
t.ok(!handler.started, "bad modifier sets started to false");
|
||||
t.eq(handler.start, null, "bad modifier sets start to null");
|
||||
t.eq(handler.last, null, "bad modifier sets last to null");
|
||||
|
||||
// test mousedown
|
||||
handler.checkModifiers = function(evt) {
|
||||
t.ok(evt.xy.x == testEvents.down.xy.x &&
|
||||
evt.xy.y == testEvents.down.xy.y,
|
||||
@@ -151,8 +182,9 @@
|
||||
t.ok(handler.last.x == testEvents.down.xy.x &&
|
||||
handler.last.y == testEvents.down.xy.y,
|
||||
"mouse down sets handler.last correctly");
|
||||
|
||||
OpenLayers.Event.stop = oldStop;
|
||||
OpenLayers.Event.isLeftClick = oldIsLeftClick;
|
||||
OpenLayers.Event.stop = oldStop;
|
||||
handler.checkModifiers = oldCheckModifiers;
|
||||
|
||||
// test mousemove
|
||||
@@ -227,24 +259,25 @@
|
||||
t.ok(!handler.dragging, "mouseout sets dragging flag to false");
|
||||
OpenLayers.Util.mouseLeft = oldMouseLeft;
|
||||
|
||||
// test click
|
||||
handler.dragging = true;
|
||||
handler.started = "foo";
|
||||
map.events.triggerEvent("click", null);
|
||||
t.ok(!handler.dragging,
|
||||
"click while dragging sets dragging to false");
|
||||
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");
|
||||
// test click with the click.html example - the click method on the
|
||||
// drag handler returns (handler.start == handler.last), stopping
|
||||
// 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);
|
||||
var after = getProperties(handler);
|
||||
t.eq(before, after, "click doesn't mess with handler");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -140,25 +140,25 @@
|
||||
});
|
||||
}
|
||||
|
||||
function test_04_Layer_GeoRSS_icon(t) {
|
||||
t.plan( 3 );
|
||||
layer = new OpenLayers.Layer.GeoRSS('Test Layer', georss_txt);
|
||||
function test_04_Layer_GeoRSS_icon(t) {
|
||||
t.plan( 3 );
|
||||
layer = new OpenLayers.Layer.GeoRSS('Test Layer', georss_txt);
|
||||
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 map = new OpenLayers.Map('map');
|
||||
var otherLayer = new OpenLayers.Layer.GeoRSS('Test Layer', georss_txt,{icon:the_icon});
|
||||
var map = new OpenLayers.Map('map');
|
||||
var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
|
||||
"http://octo.metacarta.com/cgi-bin/mapserv?",
|
||||
{map: "/mapdata/vmap_wms.map", layers: "basic"});
|
||||
map.addLayer(baseLayer);
|
||||
map.addLayers([layer,otherLayer]);
|
||||
map.setCenter(new OpenLayers.LonLat(0,0),0);
|
||||
var defaultIcon = OpenLayers.Marker.defaultIcon();
|
||||
t.delay_call( 1, function() {
|
||||
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(otherLayer.markers[0].icon.url, the_icon.url,"The layer with an icon has that icon.");
|
||||
});
|
||||
}
|
||||
var defaultIcon = OpenLayers.Marker.defaultIcon();
|
||||
t.delay_call( 1, function() {
|
||||
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(otherLayer.markers[0].icon.url, the_icon.url,"The layer with an icon has that icon.");
|
||||
});
|
||||
}
|
||||
function test_Layer_GeoRSS_loadend_Event(t) {
|
||||
var browserCode = OpenLayers.Util.getBrowserName();
|
||||
if (browserCode == "msie") {
|
||||
|
||||
@@ -515,10 +515,10 @@
|
||||
}
|
||||
|
||||
function test_16_Layer_Grid_tileSizeIsInteger(t) {
|
||||
t.plan(1);
|
||||
|
||||
t.plan(1);
|
||||
|
||||
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,
|
||||
ratio: 1.5
|
||||
});
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
}
|
||||
|
||||
function test_50_Layer_Image_tileTests (t) {
|
||||
t.plan(6);
|
||||
t.plan(7);
|
||||
var map = new OpenLayers.Map('map');
|
||||
|
||||
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");
|
||||
map.zoomIn();
|
||||
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");
|
||||
}
|
||||
/******
|
||||
*
|
||||
|
||||
@@ -399,6 +399,17 @@
|
||||
t.eq(parseFloat(tLayer.div.firstChild.firstChild.style.opacity), 0.6, "Opacity on tile is changed correctly");
|
||||
|
||||
}
|
||||
|
||||
// DEPRECATED -- REMOVE IN 3.0
|
||||
function test_Layer_Untiled_MapServer(t) {
|
||||
t.plan(1);
|
||||
|
||||
var layer = new OpenLayers.Layer.MapServer.Untiled();
|
||||
|
||||
var clone = layer.clone();
|
||||
|
||||
t.ok(clone.singleTile, "regression test: clone works. this is for #1013");
|
||||
}
|
||||
|
||||
function test_99_Layer_MapServer_Untiled_destroy (t) {
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
*/
|
||||
function test_10_Layer_TMS_getURL(t) {
|
||||
|
||||
t.plan(2);
|
||||
t.plan(3);
|
||||
|
||||
var map = new OpenLayers.Map('map', options);
|
||||
var options = {'layername':'basic', 'type':'png'};
|
||||
@@ -115,6 +115,12 @@
|
||||
map.setCenter(new OpenLayers.LonLat(0,0), 9);
|
||||
var tileurl = layer.getURL(new OpenLayers.Bounds(3.515625,45,4.21875,45.703125));
|
||||
t.eq(tileurl, "http://labs.metacarta.com/wms-c/Basic.py/1.0.0/basic/9/261/192.png", "Tile URL is correct");
|
||||
|
||||
var layer2 = layer.clone();
|
||||
layer2.serviceVersion = "1.2.3";
|
||||
map.addLayer(layer2);
|
||||
tileurl = layer2.getURL(new OpenLayers.Bounds(3.515625,45,4.21875,45.703125));
|
||||
t.eq(tileurl, "http://labs.metacarta.com/wms-c/Basic.py/1.2.3/basic/9/261/192.png", "TMS serviceVersion is correct");
|
||||
|
||||
layer.url = ["http://tilecache1/", "http://tilecache2/", "http://tilecache3/"];
|
||||
tileurl = layer.getURL(new OpenLayers.Bounds(3.515625,45,4.21875,45.703125));
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
}
|
||||
function test_Layer_Text_loadend_Event(t) {
|
||||
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() {
|
||||
layer.events.register('loadend', layer, function() {
|
||||
t.ok(true, "Loadend event fired");
|
||||
|
||||
@@ -165,9 +165,9 @@
|
||||
var baseLayer = new OpenLayers.Layer.WMS("Base Layer",
|
||||
"http://octo.metacarta.com/cgi-bin/mapserv",
|
||||
{ map: '/mapdata/vmap_wms.map',
|
||||
layers: 'basic',
|
||||
format: 'image/png'});
|
||||
|
||||
layers: 'basic',
|
||||
format: 'image/png'});
|
||||
|
||||
var layer = new OpenLayers.Layer.Vector("Test Layer");
|
||||
var renderer = layer.renderer;
|
||||
var map = new OpenLayers.Map('map');
|
||||
@@ -181,25 +181,25 @@
|
||||
map.zoomToMaxExtent();
|
||||
|
||||
var customStyle1 = new Object({
|
||||
externalGraphic: 'test.png',
|
||||
pointRadius: 10
|
||||
externalGraphic: 'test.png',
|
||||
pointRadius: 10
|
||||
});
|
||||
var customStyle2 = new Object({
|
||||
externalGraphic: 'test.png',
|
||||
graphicWidth: 12
|
||||
externalGraphic: 'test.png',
|
||||
graphicWidth: 12
|
||||
});
|
||||
var customStyle3 = new Object({
|
||||
externalGraphic: 'test.png',
|
||||
graphicHeight: 14
|
||||
externalGraphic: 'test.png',
|
||||
graphicHeight: 14
|
||||
});
|
||||
var customStyle4 = new Object({
|
||||
externalGraphic: 'test.png',
|
||||
graphicWidth: 24,
|
||||
graphicHeight: 16
|
||||
externalGraphic: 'test.png',
|
||||
graphicWidth: 24,
|
||||
graphicHeight: 16
|
||||
});
|
||||
var customStyle5 = new Object({
|
||||
externalGraphic: 'test.png',
|
||||
graphicWidth: 24,
|
||||
graphicWidth: 24,
|
||||
graphicOpacity: 1
|
||||
});
|
||||
var customStyle6 = new Object({
|
||||
@@ -212,43 +212,43 @@
|
||||
|
||||
var root = renderer.root;
|
||||
if (layer.renderer.CLASS_NAME == 'OpenLayers.Renderer.SVG') {
|
||||
feature.style = customStyle1;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
||||
(2*customStyle1.pointRadius).toString(),
|
||||
"given a pointRadius, width equals 2*pointRadius");
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
||||
(2*customStyle1.pointRadius).toString(),
|
||||
"given a pointRadius, height equals 2*pointRadius");
|
||||
feature.style = customStyle2;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
||||
root.firstChild.getAttributeNS(null, 'height'),
|
||||
"given a graphicWidth, width equals height");
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
||||
customStyle2.graphicWidth.toString(),
|
||||
"width is set correctly");
|
||||
feature.style = customStyle3;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
||||
root.firstChild.getAttributeNS(null, 'width'),
|
||||
"given a graphicHeight, height equals width");
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
||||
customStyle3.graphicHeight.toString(),
|
||||
"height is set correctly");
|
||||
feature.style = customStyle4;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
||||
customStyle4.graphicHeight.toString(),
|
||||
"given graphicHeight and graphicWidth, both are set: height");
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
||||
customStyle4.graphicWidth.toString(),
|
||||
"given graphicHeight and graphicWidth, both are set: width");
|
||||
feature.style = customStyle1;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
||||
(2*customStyle1.pointRadius).toString(),
|
||||
"given a pointRadius, width equals 2*pointRadius");
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
||||
(2*customStyle1.pointRadius).toString(),
|
||||
"given a pointRadius, height equals 2*pointRadius");
|
||||
feature.style = customStyle2;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
||||
root.firstChild.getAttributeNS(null, 'height'),
|
||||
"given a graphicWidth, width equals height");
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
||||
customStyle2.graphicWidth.toString(),
|
||||
"width is set correctly");
|
||||
feature.style = customStyle3;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
||||
root.firstChild.getAttributeNS(null, 'width'),
|
||||
"given a graphicHeight, height equals width");
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
||||
customStyle3.graphicHeight.toString(),
|
||||
"height is set correctly");
|
||||
feature.style = customStyle4;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
||||
customStyle4.graphicHeight.toString(),
|
||||
"given graphicHeight and graphicWidth, both are set: height");
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
||||
customStyle4.graphicWidth.toString(),
|
||||
"given graphicHeight and graphicWidth, both are set: width");
|
||||
feature.style = customStyle5;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'style'),
|
||||
'opacity: '+customStyle5.graphicOpacity.toString()+';',
|
||||
"graphicOpacity correctly set");
|
||||
t.eq(root.firstChild.getAttributeNS(null, 'style'),
|
||||
'opacity: '+customStyle5.graphicOpacity.toString()+';',
|
||||
"graphicOpacity correctly set");
|
||||
feature.style = customStyle6;
|
||||
layer.drawFeature(feature);
|
||||
var x = geometryX / renderer.getResolution() + renderer.left;
|
||||
@@ -268,46 +268,46 @@
|
||||
"graphicYOffset correctly set");
|
||||
}
|
||||
if (layer.renderer.CLASS_NAME == 'OpenLayers.Renderer.VML') {
|
||||
feature.style = customStyle1;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.style.width,
|
||||
(2*customStyle1.pointRadius).toString()+'px',
|
||||
"given a pointRadius, width equals 2*pointRadius");
|
||||
t.eq(root.firstChild.style.height,
|
||||
(2*customStyle1.pointRadius).toString()+'px',
|
||||
"given a pointRadius, height equals 2*pointRadius");
|
||||
feature.style = customStyle2;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.style.width,
|
||||
root.firstChild.style.height,
|
||||
"given a graphicWidth, width equals height");
|
||||
t.eq(root.firstChild.style.width,
|
||||
customStyle2.graphicWidth.toString()+'px',
|
||||
"width is set correctly");
|
||||
feature.style = customStyle3;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.style.height,
|
||||
root.firstChild.style.width,
|
||||
"given a graphicHeight, height equals width");
|
||||
t.eq(root.firstChild.style.height,
|
||||
customStyle3.graphicHeight.toString()+'px',
|
||||
"height is set correctly");
|
||||
feature.style = customStyle4;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.style.height,
|
||||
customStyle4.graphicHeight.toString()+'px',
|
||||
"given graphicHeight and graphicWidth, both are set: height");
|
||||
t.eq(root.firstChild.style.width,
|
||||
customStyle4.graphicWidth.toString()+'px',
|
||||
"given graphicHeight and graphicWidth, both are set: width");
|
||||
feature.style = customStyle1;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.style.width,
|
||||
(2*customStyle1.pointRadius).toString()+'px',
|
||||
"given a pointRadius, width equals 2*pointRadius");
|
||||
t.eq(root.firstChild.style.height,
|
||||
(2*customStyle1.pointRadius).toString()+'px',
|
||||
"given a pointRadius, height equals 2*pointRadius");
|
||||
feature.style = customStyle2;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.style.width,
|
||||
root.firstChild.style.height,
|
||||
"given a graphicWidth, width equals height");
|
||||
t.eq(root.firstChild.style.width,
|
||||
customStyle2.graphicWidth.toString()+'px',
|
||||
"width is set correctly");
|
||||
feature.style = customStyle3;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.style.height,
|
||||
root.firstChild.style.width,
|
||||
"given a graphicHeight, height equals width");
|
||||
t.eq(root.firstChild.style.height,
|
||||
customStyle3.graphicHeight.toString()+'px',
|
||||
"height is set correctly");
|
||||
feature.style = customStyle4;
|
||||
layer.drawFeature(feature);
|
||||
t.eq(root.firstChild.style.height,
|
||||
customStyle4.graphicHeight.toString()+'px',
|
||||
"given graphicHeight and graphicWidth, both are set: height");
|
||||
t.eq(root.firstChild.style.width,
|
||||
customStyle4.graphicWidth.toString()+'px',
|
||||
"given graphicHeight and graphicWidth, both are set: width");
|
||||
feature.style = customStyle5;
|
||||
layer.drawFeature(feature);
|
||||
var fill = root.firstChild.getElementsByTagName("fill")[0];
|
||||
if (fill == null) fill = root.firstChild.getElementsByTagName("v:fill");
|
||||
var opacity = fill.getAttribute('opacity');
|
||||
t.eq(opacity,
|
||||
customStyle5.graphicOpacity,
|
||||
"graphicOpacity correctly set");
|
||||
customStyle5.graphicOpacity,
|
||||
"graphicOpacity correctly set");
|
||||
feature.style = customStyle6;
|
||||
layer.drawFeature(feature);
|
||||
var x = geometryX / renderer.getResolution();
|
||||
|
||||
@@ -352,6 +352,17 @@
|
||||
map.destroy();
|
||||
|
||||
}
|
||||
|
||||
// DEPRECATED -- REMOVE IN 3.0
|
||||
function test_Layer_Untiled_WMS(t) {
|
||||
t.plan(1);
|
||||
|
||||
var layer = new OpenLayers.Layer.WMS.Untiled();
|
||||
|
||||
var clone = layer.clone();
|
||||
|
||||
t.ok(clone.singleTile, "regression test: clone works. this is for #1013");
|
||||
}
|
||||
|
||||
function test_99_Layer_WMS_destroy (t) {
|
||||
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
<li>Control/test_OverviewMap.html</li>
|
||||
<li>Control/test_NavToolbar.html</li>
|
||||
<li>Control/test_MouseToolbar.html</li>
|
||||
<li>Control/test_MousePosition.html</li>
|
||||
<li>Control/test_LayerSwitcher.html</li>
|
||||
<li>Control/test_Panel.html</li>
|
||||
<li>Control/test_PanZoom.html</li>
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
|
||||
function test_06_Layer_getZoomForResolution(t) {
|
||||
|
||||
t.plan(4);
|
||||
t.plan(8);
|
||||
|
||||
var layer = new OpenLayers.Layer('Test Layer');
|
||||
|
||||
@@ -167,6 +167,12 @@
|
||||
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(65), 0, "smallest containing res");
|
||||
t.eq(layer.getZoomForResolution(63), 1, "smallest containing res");
|
||||
|
||||
t.eq(layer.getZoomForResolution(65, true), 1, "closest res");
|
||||
t.eq(layer.getZoomForResolution(63, true), 1, "closest res");
|
||||
|
||||
}
|
||||
|
||||
function test_07_Layer_redraw(t) {
|
||||
|
||||
@@ -19,6 +19,13 @@
|
||||
OpenLayers.Util.removeItem(array, 3);
|
||||
t.eq( array.toString(), "1,2,4,5", "Util.removeItem works");
|
||||
}
|
||||
|
||||
function test_03_Util_pagePosition(t) {
|
||||
t.plan( 1 );
|
||||
var pp = OpenLayers.Util.pagePosition(window);
|
||||
t.eq( pp.toString(), "0,0", "Page position doesn't bail if passed 'window'")
|
||||
|
||||
}
|
||||
|
||||
function test_04_Util_createDiv(t) {
|
||||
t.plan( 24 );
|
||||
|
||||
Reference in New Issue
Block a user