Merge changes from trunk to 2.4:
svn merge trunk/openlayers/@3088 trunk/openlayers/@HEAD branches/openlayers/2.4/ Changes include: * Improved GML parsing to catch fid better * Letting panels pass mouseup through * Fixing small bug in panel example * Display of markers/layers when out of range on startup. * Fix to aspect ratio of Overview Map. git-svn-id: http://svn.openlayers.org/branches/openlayers/2.4@3112 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
54
examples/outOfRangeMarkers.html
Normal file
54
examples/outOfRangeMarkers.html
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<style type="text/css">
|
||||||
|
#map {
|
||||||
|
width: 650px;
|
||||||
|
height: 550px;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAKsGpqSOKkB-Ih2JopAmNbBTv_3ENzieGiNBMV02NiUJp8KZGIRTQWhul8K0wiNOHDxOF0-W2RmFoRg'></script>
|
||||||
|
<script src="../lib/OpenLayers.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
<!--
|
||||||
|
function init(){
|
||||||
|
|
||||||
|
// Variables
|
||||||
|
var map = new OpenLayers.Map('map', { controls: [] });
|
||||||
|
var lon = 35;
|
||||||
|
var lat = -6;
|
||||||
|
var zoom = 6;
|
||||||
|
var map, layer;
|
||||||
|
|
||||||
|
// Map Controls
|
||||||
|
map.addControl(new OpenLayers.Control.PanZoomBar());
|
||||||
|
map.addControl(new OpenLayers.Control.MouseToolbar());
|
||||||
|
map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
|
||||||
|
map.addControl(new OpenLayers.Control.MousePosition());
|
||||||
|
|
||||||
|
|
||||||
|
// Map Layers
|
||||||
|
var GMapsSat = new OpenLayers.Layer.Google( "Google Satellite" , {type: G_SATELLITE_MAP, 'maxZoomLevel':18} );
|
||||||
|
var GMapsHybr = new OpenLayers.Layer.Google( "Google Hybrid" , {type: G_HYBRID_TYPE, 'maxZoomLevel':18} );
|
||||||
|
var GMapsStreets = new OpenLayers.Layer.Google( "Google Steets" , {type: G_NORMAL_MAP, 'maxZoomLevel':18} );
|
||||||
|
var MarkersLayer2 = new OpenLayers.Layer.Text( "Region info", {location: "outOfRangeMarkers.txt", maxResolution: 0.02});
|
||||||
|
|
||||||
|
// Add Layers
|
||||||
|
map.addLayers([GMapsHybr, GMapsStreets, GMapsSat, MarkersLayer2]);
|
||||||
|
|
||||||
|
|
||||||
|
// Visual
|
||||||
|
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
|
||||||
|
if (!map.getCenter()) map.zoomToMaxExtent();
|
||||||
|
}
|
||||||
|
// -->
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
<body onload="init()">
|
||||||
|
|
||||||
|
<div id="map"></div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
3
examples/outOfRangeMarkers.txt
Normal file
3
examples/outOfRangeMarkers.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
point title description icon
|
||||||
|
-4.14,37.90 Kilimanjaro Beskrivning http://www.villageografica.com/Africa-Webmap/img/marker-blue.png
|
||||||
|
-3.24,34.35 Shinyanga Beskrivning http://www.villageografica.com/Africa-Webmap/img/marker-blue.png
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
|
|
||||||
|
|
||||||
zb = new OpenLayers.Control.ZoomBox();
|
zb = new OpenLayers.Control.ZoomBox();
|
||||||
panel = new OpenLayers.Control.Panel({defaultControl: zb});
|
var panel = new OpenLayers.Control.Panel({defaultControl: zb});
|
||||||
panel.addControls([
|
panel.addControls([
|
||||||
new OpenLayers.Control.MouseDefaults(),
|
new OpenLayers.Control.MouseDefaults(),
|
||||||
zb,
|
zb,
|
||||||
|
|||||||
@@ -520,8 +520,8 @@ OpenLayers.Control.OverviewMap.prototype =
|
|||||||
this.ovmap.size.w - this.wComp);
|
this.ovmap.size.w - this.wComp);
|
||||||
this.extentRectangle.style.top = parseInt(top) + 'px';
|
this.extentRectangle.style.top = parseInt(top) + 'px';
|
||||||
this.extentRectangle.style.left = parseInt(left) + 'px';
|
this.extentRectangle.style.left = parseInt(left) + 'px';
|
||||||
this.extentRectangle.style.height = parseInt(bottom - top)+ 'px';
|
this.extentRectangle.style.height = parseInt(Math.max(bottom - top, 0))+ 'px';
|
||||||
this.extentRectangle.style.width = parseInt(right - left) + 'px';
|
this.extentRectangle.style.width = parseInt(Math.max(right - left, 0)) + 'px';
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -129,6 +129,8 @@ OpenLayers.Control.Panel.prototype =
|
|||||||
// Give each control a panel_div which will be used later.
|
// Give each control a panel_div which will be used later.
|
||||||
// Access to this div is via the panel_div attribute of the
|
// Access to this div is via the panel_div attribute of the
|
||||||
// control added to the panel.
|
// control added to the panel.
|
||||||
|
// Also, stop mousedowns and clicks, but don't stop mouseup,
|
||||||
|
// since they need to pass through.
|
||||||
for (var i = 0; i < controls.length; i++) {
|
for (var i = 0; i < controls.length; i++) {
|
||||||
var element = document.createElement("div");
|
var element = document.createElement("div");
|
||||||
var textNode = document.createTextNode(" ");
|
var textNode = document.createTextNode(" ");
|
||||||
@@ -137,8 +139,6 @@ OpenLayers.Control.Panel.prototype =
|
|||||||
this.onClick.bind(this, controls[i]));
|
this.onClick.bind(this, controls[i]));
|
||||||
OpenLayers.Event.observe(controls[i].panel_div, "mousedown",
|
OpenLayers.Event.observe(controls[i].panel_div, "mousedown",
|
||||||
OpenLayers.Event.stop.bindAsEventListener());
|
OpenLayers.Event.stop.bindAsEventListener());
|
||||||
OpenLayers.Event.observe(controls[i].panel_div, "mouseup",
|
|
||||||
OpenLayers.Event.stop.bindAsEventListener());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.map) { // map.addControl() has already been called on the panel
|
if (this.map) { // map.addControl() has already been called on the panel
|
||||||
|
|||||||
@@ -84,13 +84,11 @@ OpenLayers.Format.GML.prototype =
|
|||||||
|
|
||||||
var feature = new OpenLayers.Feature.Vector();
|
var feature = new OpenLayers.Feature.Vector();
|
||||||
|
|
||||||
if (xmlNode.firstChild.attributes && xmlNode.firstChild.attributes['fid']) {
|
|
||||||
feature.fid = xmlNode.firstChild.attributes['fid'].nodeValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// match MultiPolygon
|
// match MultiPolygon
|
||||||
if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon").length != 0) {
|
if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon").length != 0) {
|
||||||
var multipolygon = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon")[0];
|
var multipolygon = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon")[0];
|
||||||
|
feature.fid = multipolygon.parentNode.parentNode.getAttribute('fid');
|
||||||
|
|
||||||
geom = new OpenLayers.Geometry.MultiPolygon();
|
geom = new OpenLayers.Geometry.MultiPolygon();
|
||||||
var polygons = OpenLayers.Ajax.getElementsByTagNameNS(multipolygon,
|
var polygons = OpenLayers.Ajax.getElementsByTagNameNS(multipolygon,
|
||||||
this.gmlns, "gml", "Polygon");
|
this.gmlns, "gml", "Polygon");
|
||||||
@@ -104,6 +102,7 @@ OpenLayers.Format.GML.prototype =
|
|||||||
this.gmlns, "gml", "MultiLineString").length != 0) {
|
this.gmlns, "gml", "MultiLineString").length != 0) {
|
||||||
var multilinestring = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
|
var multilinestring = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
|
||||||
this.gmlns, "gml", "MultiLineString")[0];
|
this.gmlns, "gml", "MultiLineString")[0];
|
||||||
|
feature.fid = multilinestring.parentNode.parentNode.getAttribute('fid');
|
||||||
|
|
||||||
geom = new OpenLayers.Geometry.MultiLineString();
|
geom = new OpenLayers.Geometry.MultiLineString();
|
||||||
var lineStrings = OpenLayers.Ajax.getElementsByTagNameNS(multilinestring, this.gmlns, "gml", "LineString");
|
var lineStrings = OpenLayers.Ajax.getElementsByTagNameNS(multilinestring, this.gmlns, "gml", "LineString");
|
||||||
@@ -122,6 +121,7 @@ OpenLayers.Format.GML.prototype =
|
|||||||
this.gmlns, "gml", "MultiPoint").length != 0) {
|
this.gmlns, "gml", "MultiPoint").length != 0) {
|
||||||
var multiPoint = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
|
var multiPoint = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
|
||||||
this.gmlns, "gml", "MultiPoint")[0];
|
this.gmlns, "gml", "MultiPoint")[0];
|
||||||
|
feature.fid = multiPoint.parentNode.parentNode.getAttribute('fid');
|
||||||
|
|
||||||
geom = new OpenLayers.Geometry.MultiPoint();
|
geom = new OpenLayers.Geometry.MultiPoint();
|
||||||
|
|
||||||
@@ -138,6 +138,7 @@ OpenLayers.Format.GML.prototype =
|
|||||||
this.gmlns, "gml", "Polygon").length != 0) {
|
this.gmlns, "gml", "Polygon").length != 0) {
|
||||||
var polygon = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
|
var polygon = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
|
||||||
this.gmlns, "gml", "Polygon")[0];
|
this.gmlns, "gml", "Polygon")[0];
|
||||||
|
feature.fid = polygon.parentNode.parentNode.getAttribute('fid');
|
||||||
|
|
||||||
geom = this.parsePolygonNode(polygon);
|
geom = this.parsePolygonNode(polygon);
|
||||||
}
|
}
|
||||||
@@ -146,6 +147,8 @@ OpenLayers.Format.GML.prototype =
|
|||||||
this.gmlns, "gml", "LineString").length != 0) {
|
this.gmlns, "gml", "LineString").length != 0) {
|
||||||
var lineString = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
|
var lineString = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
|
||||||
this.gmlns, "gml", "LineString")[0];
|
this.gmlns, "gml", "LineString")[0];
|
||||||
|
feature.fid = lineString.parentNode.parentNode.getAttribute('fid');
|
||||||
|
|
||||||
p = this.parseCoords(lineString);
|
p = this.parseCoords(lineString);
|
||||||
if (p.points) {
|
if (p.points) {
|
||||||
geom = new OpenLayers.Geometry.LineString(p.points);
|
geom = new OpenLayers.Geometry.LineString(p.points);
|
||||||
@@ -157,6 +160,7 @@ OpenLayers.Format.GML.prototype =
|
|||||||
this.gmlns, "gml", "Point").length != 0) {
|
this.gmlns, "gml", "Point").length != 0) {
|
||||||
var point = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
|
var point = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
|
||||||
this.gmlns, "gml", "Point")[0];
|
this.gmlns, "gml", "Point")[0];
|
||||||
|
feature.fid = point.parentNode.parentNode.getAttribute('fid');
|
||||||
|
|
||||||
p = this.parseCoords(point);
|
p = this.parseCoords(point);
|
||||||
if (p.points) {
|
if (p.points) {
|
||||||
|
|||||||
@@ -286,6 +286,8 @@ OpenLayers.Layer.prototype = {
|
|||||||
|
|
||||||
if (!this.isBaseLayer) {
|
if (!this.isBaseLayer) {
|
||||||
this.inRange = this.calculateInRange();
|
this.inRange = this.calculateInRange();
|
||||||
|
var show = ((this.visibility) && (this.inRange));
|
||||||
|
this.div.style.display = show ? "" : "none";
|
||||||
}
|
}
|
||||||
|
|
||||||
// deal with gutters
|
// deal with gutters
|
||||||
|
|||||||
@@ -21,6 +21,15 @@ OpenLayers.Layer.Markers.prototype =
|
|||||||
/** internal marker list
|
/** internal marker list
|
||||||
* @type Array(OpenLayers.Marker) */
|
* @type Array(OpenLayers.Marker) */
|
||||||
markers: null,
|
markers: null,
|
||||||
|
|
||||||
|
|
||||||
|
/** internal state of drawing. This is a workaround for the fact
|
||||||
|
* that the map does not call moveTo with a zoomChanged when the
|
||||||
|
* map is first starting up. This lets us catch the case where we
|
||||||
|
* have *never* drawn the layer, and draw it even if the zoom hasn't
|
||||||
|
* changed.
|
||||||
|
* @type Boolean */
|
||||||
|
drawn: false,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
@@ -51,8 +60,9 @@ OpenLayers.Layer.Markers.prototype =
|
|||||||
moveTo:function(bounds, zoomChanged, dragging) {
|
moveTo:function(bounds, zoomChanged, dragging) {
|
||||||
OpenLayers.Layer.prototype.moveTo.apply(this, arguments);
|
OpenLayers.Layer.prototype.moveTo.apply(this, arguments);
|
||||||
|
|
||||||
if (zoomChanged) {
|
if (zoomChanged || !this.drawn) {
|
||||||
this.redraw();
|
this.redraw();
|
||||||
|
this.drawn = true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -248,6 +248,12 @@ OpenLayers.Layer.Vector.prototype =
|
|||||||
this.features = OpenLayers.Util.removeItem(this.features, feature);
|
this.features = OpenLayers.Util.removeItem(this.features, feature);
|
||||||
|
|
||||||
this.renderer.eraseGeometry(feature.geometry);
|
this.renderer.eraseGeometry(feature.geometry);
|
||||||
|
|
||||||
|
//in the case that this feature is one of the selected features,
|
||||||
|
// remove it from that array as well.
|
||||||
|
if (OpenLayers.Util.indexOf(this.selectedFeatures, feature) != -1){
|
||||||
|
OpenLayers.Util.removeItem(this.selectedFeatures, feature);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
57
tests/Format/test_GML.html
Normal file
57
tests/Format/test_GML.html
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script src="../../lib/OpenLayers.js"></script>
|
||||||
|
<script type="text/javascript"><!--
|
||||||
|
|
||||||
|
var test_content = '<wfs:FeatureCollection' +
|
||||||
|
' xmlns:fs="http://example.com/featureserver"' +
|
||||||
|
' xmlns:wfs="http://www.opengis.net/wfs"' +
|
||||||
|
' xmlns:gml="http://www.opengis.net/gml"' +
|
||||||
|
' xmlns:ogc="http://www.opengis.net/ogc"' +
|
||||||
|
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
|
||||||
|
' xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengeospatial.net//wfs/1.0.0/WFS-basic.xsd">' +
|
||||||
|
' ' +
|
||||||
|
'' +
|
||||||
|
' <gml:featureMember>' +
|
||||||
|
' \n<fs:scribble fid="221">' +
|
||||||
|
' <fs:geometry>' +
|
||||||
|
' <gml:Polygon>' +
|
||||||
|
' ' +
|
||||||
|
' <gml:outerBoundaryIs><gml:LinearRing>' +
|
||||||
|
' <gml:coordinates>149.105072021,-35.1816558838 149.100608826,-35.1844024658 149.098892212,-35.1898956299 149.105072021,-35.1816558838</gml:coordinates>' +
|
||||||
|
' </gml:LinearRing></gml:outerBoundaryIs>' +
|
||||||
|
' ' +
|
||||||
|
' </gml:Polygon>' +
|
||||||
|
' </fs:geometry>' +
|
||||||
|
' <fs:title>random test features</fs:title>' +
|
||||||
|
' </fs:scribble>' +
|
||||||
|
'</gml:featureMember> ' +
|
||||||
|
' <gml:featureMember><fs:scribble fid="8"> <fs:geometry> <gml:Point><gml:coordinates>-81.38671875,27.0703125</gml:coordinates></gml:Point> </fs:geometry> ' +
|
||||||
|
' <fs:down>south</fs:down><fs:title>Florida</fs:title> </fs:scribble></gml:featureMember>' +
|
||||||
|
'</wfs:FeatureCollection>';
|
||||||
|
|
||||||
|
|
||||||
|
function test_Format_GML_constructor(t) {
|
||||||
|
t.plan(4);
|
||||||
|
|
||||||
|
var options = {'foo': 'bar'};
|
||||||
|
var format = new OpenLayers.Format.GML(options);
|
||||||
|
t.ok(format instanceof OpenLayers.Format.GML,
|
||||||
|
"new OpenLayers.Format.GML returns object" );
|
||||||
|
t.eq(format.foo, "bar", "constructor sets options correctly");
|
||||||
|
t.eq(typeof format.read, "function", "format has a read function");
|
||||||
|
t.eq(typeof format.write, "function", "format has a write function");
|
||||||
|
}
|
||||||
|
function test_Format_GML_getFid(t) {
|
||||||
|
t.plan(2);
|
||||||
|
var parser = new OpenLayers.Format.GML();
|
||||||
|
data = parser.read(test_content);
|
||||||
|
t.eq(data[0].fid, '221', 'fid on polygons set correctly (with whitespace)');
|
||||||
|
t.eq(data[1].fid, '8', 'fid on linestrings set correctly with whitespace');
|
||||||
|
}
|
||||||
|
// -->
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function test_03_Layer_Vector_removeFeatures(t) {
|
function test_03_Layer_Vector_removeFeatures(t) {
|
||||||
t.plan(2);
|
t.plan(3);
|
||||||
|
|
||||||
var layer = new OpenLayers.Layer.Vector(name);
|
var layer = new OpenLayers.Layer.Vector(name);
|
||||||
|
|
||||||
@@ -43,6 +43,9 @@
|
|||||||
|
|
||||||
t.ok(layer.features.length == 1, "OpenLayers.Layer.Vector.removeFeatures removes a feature from the features array");
|
t.ok(layer.features.length == 1, "OpenLayers.Layer.Vector.removeFeatures removes a feature from the features array");
|
||||||
layer.addFeatures([pointFeature1.clone(), pointFeature2.clone()]);
|
layer.addFeatures([pointFeature1.clone(), pointFeature2.clone()]);
|
||||||
|
layer.selectedFeatures.push(layer.features[0]);
|
||||||
|
layer.removeFeatures(layer.features[0]);
|
||||||
|
t.eq(layer.selectedFeatures, [], "Remove features removes selected features");
|
||||||
var features = layer.removeFeatures(layer.features);
|
var features = layer.removeFeatures(layer.features);
|
||||||
|
|
||||||
t.ok(layer.features.length == 0,
|
t.ok(layer.features.length == 0,
|
||||||
@@ -69,12 +72,16 @@
|
|||||||
var feature = new OpenLayers.Feature.Vector(geometry);
|
var feature = new OpenLayers.Feature.Vector(geometry);
|
||||||
|
|
||||||
var f, s;
|
var f, s;
|
||||||
|
|
||||||
|
// Layer renderer needs a destroy, and draw, for functional tests.
|
||||||
layer.renderer = {
|
layer.renderer = {
|
||||||
drawFeature: function(feature, style) {
|
drawFeature: function(feature, style) {
|
||||||
f = feature;
|
f = feature;
|
||||||
s = style;
|
s = style;
|
||||||
}
|
},
|
||||||
|
destroy: function() { }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
layer.drawFeature(feature);
|
layer.drawFeature(feature);
|
||||||
t.ok(geometry.equals(f.geometry),
|
t.ok(geometry.equals(f.geometry),
|
||||||
@@ -112,7 +119,8 @@
|
|||||||
layer.renderer = {
|
layer.renderer = {
|
||||||
eraseFeatures: function(features) {
|
eraseFeatures: function(features) {
|
||||||
f = features[0];
|
f = features[0];
|
||||||
}
|
},
|
||||||
|
destroy: function() { }
|
||||||
};
|
};
|
||||||
|
|
||||||
layer.eraseFeatures([feature]);
|
layer.eraseFeatures([feature]);
|
||||||
|
|||||||
@@ -178,185 +178,4 @@
|
|||||||
<body>
|
<body>
|
||||||
<div id="map" style="width:500px;height:550px"></div>
|
<div id="map" style="width:500px;height:550px"></div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<script src="../../lib/OpenLayers.js"></script>
|
|
||||||
<script type="text/javascript"><!--
|
|
||||||
var box;
|
|
||||||
|
|
||||||
function test_01_Box_constructor (t) {
|
|
||||||
t.plan( 7 );
|
|
||||||
|
|
||||||
OpenLayers.Marker.Box.prototype._setBorder =
|
|
||||||
OpenLayers.Marker.Box.prototype.setBorder;
|
|
||||||
OpenLayers.Marker.Box.prototype.setBorder = function (x,y) {
|
|
||||||
g_Color = x;
|
|
||||||
g_Width = y;
|
|
||||||
};
|
|
||||||
|
|
||||||
var bounds = new OpenLayers.Bounds(1,2,3,4);
|
|
||||||
var borderColor = "blue";
|
|
||||||
var borderWidth = 55;
|
|
||||||
|
|
||||||
|
|
||||||
g_Color = g_Width = null;
|
|
||||||
box = new OpenLayers.Marker.Box(bounds, borderColor, borderWidth);
|
|
||||||
|
|
||||||
t.ok( box instanceof OpenLayers.Marker.Box, "new OpenLayers.Marker.Box returns Box object" );
|
|
||||||
t.ok( box.bounds.equals(bounds), "bounds object correctly set");
|
|
||||||
t.ok( box.div != null, "div created");
|
|
||||||
t.eq( box.div.style.overflow, "hidden", "div style overflow hidden");
|
|
||||||
t.ok( box.events != null, "events object created");
|
|
||||||
t.eq( g_Color, borderColor, "setBorder called with correct border color");
|
|
||||||
t.eq( g_Width, borderWidth, "setBorder called with correct border width");
|
|
||||||
|
|
||||||
|
|
||||||
OpenLayers.Marker.Box.prototype.setBorder =
|
|
||||||
OpenLayers.Marker.Box.prototype._setBorder;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function test_02_Box_setBorder(t) {
|
|
||||||
t.plan( 2 );
|
|
||||||
|
|
||||||
var box = {
|
|
||||||
div: {
|
|
||||||
style: {}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//defaults
|
|
||||||
var args = [];
|
|
||||||
OpenLayers.Marker.Box.prototype.setBorder.apply(box, args);
|
|
||||||
t.eq(box.div.style.border, "2px solid red", "style correctly set with no good values (defaults work)");
|
|
||||||
|
|
||||||
//good vals
|
|
||||||
var borderColor = "blue";
|
|
||||||
var borderWidth = 55;
|
|
||||||
|
|
||||||
args = [borderColor, borderWidth];
|
|
||||||
OpenLayers.Marker.Box.prototype.setBorder.apply(box, args);
|
|
||||||
t.eq(box.div.style.border, borderWidth + "px solid " + borderColor, "style correctly set with both good values");
|
|
||||||
|
|
||||||
}
|
|
||||||
function test_03_Box_draw(t) {
|
|
||||||
t.plan( 5 );
|
|
||||||
|
|
||||||
OpenLayers.Util._modifyDOMElement =
|
|
||||||
OpenLayers.Util.modifyDOMElement;
|
|
||||||
OpenLayers.Util.modifyDOMElement =
|
|
||||||
function (element, id, px, sz) {
|
|
||||||
g_Element = element;
|
|
||||||
g_Id = id;
|
|
||||||
g_Px = px;
|
|
||||||
g_Sz = sz;
|
|
||||||
};
|
|
||||||
|
|
||||||
var box = {
|
|
||||||
div: {}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
var px = {};
|
|
||||||
var sz = {};
|
|
||||||
var args = [px, sz];
|
|
||||||
|
|
||||||
g_Element = g_Id = g_Px = g_Sz = null;
|
|
||||||
var retVal = OpenLayers.Marker.Box.prototype.draw.apply(box, args);
|
|
||||||
|
|
||||||
t.eq(g_Element, box.div, "modifyDOMElement passes box's div for element");
|
|
||||||
t.eq(g_Id, null, "modifyDOMElement passes null for id");
|
|
||||||
t.eq(g_Px, px, "modifyDOMElement passes new px value for px");
|
|
||||||
t.eq(g_Sz, sz, "modifyDOMElement passes new sz value for sz");
|
|
||||||
t.ok(retVal == box.div, "draw returns box's div");
|
|
||||||
|
|
||||||
OpenLayers.Util.modifyDOMElement =
|
|
||||||
OpenLayers.Util._modifyDOMElement;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function test_04_Box_onScreen(t) {
|
|
||||||
t.plan( 2 );
|
|
||||||
|
|
||||||
var map = new OpenLayers.Map("map");
|
|
||||||
|
|
||||||
var url = "http://octo.metacarta.com/cgi-bin/mapserv";
|
|
||||||
layer = new OpenLayers.Layer.WMS(name, url);
|
|
||||||
|
|
||||||
map.addLayer(layer);
|
|
||||||
|
|
||||||
mlayer = new OpenLayers.Layer.Boxes('Test Layer');
|
|
||||||
map.addLayer(mlayer);
|
|
||||||
|
|
||||||
map.zoomToExtent(new OpenLayers.Bounds(-50,-50,50,50));
|
|
||||||
|
|
||||||
//onscreen box
|
|
||||||
var bounds = new OpenLayers.Bounds(-1,-1,1,1);
|
|
||||||
var box = new OpenLayers.Marker.Box(bounds);
|
|
||||||
mlayer.addMarker(box);
|
|
||||||
|
|
||||||
t.ok( box.onScreen(), "box knows it's onscreen" );
|
|
||||||
|
|
||||||
//offscreen box
|
|
||||||
var bounds = new OpenLayers.Bounds(100,100,150,150);
|
|
||||||
var box2 = new OpenLayers.Marker.Box(bounds);
|
|
||||||
mlayer.addMarker(box2);
|
|
||||||
|
|
||||||
t.ok( !box2.onScreen(), "box knows it's offscreen" );
|
|
||||||
map.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
function test_05_Box_display(t) {
|
|
||||||
t.plan( 2 );
|
|
||||||
|
|
||||||
var box = {
|
|
||||||
div: {
|
|
||||||
style: {}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//display(true)
|
|
||||||
var args = [true];
|
|
||||||
OpenLayers.Marker.Box.prototype.display.apply(box, args);
|
|
||||||
t.eq(box.div.style.display, "", "style.display correctly set to '' when display(true)");
|
|
||||||
|
|
||||||
//display(false)
|
|
||||||
var args = [false];
|
|
||||||
OpenLayers.Marker.Box.prototype.display.apply(box, args);
|
|
||||||
t.eq(box.div.style.display, "none", "style.display correctly set to 'none' when display(false)");
|
|
||||||
}
|
|
||||||
|
|
||||||
function test_99_Box_destroy(t) {
|
|
||||||
t.plan(3);
|
|
||||||
|
|
||||||
OpenLayers.Marker.prototype._destroy =
|
|
||||||
OpenLayers.Marker.prototype.destroy;
|
|
||||||
OpenLayers.Marker.prototype.destroy = function() {
|
|
||||||
g_Destroy = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
var bounds = new OpenLayers.Bounds(1,2,3,4);
|
|
||||||
var borderColor = "blue";
|
|
||||||
var borderWidth = 55;
|
|
||||||
|
|
||||||
g_Destroy = null;
|
|
||||||
box = new OpenLayers.Marker.Box(bounds, borderColor, borderWidth);
|
|
||||||
box.destroy();
|
|
||||||
|
|
||||||
t.eq(box.bounds, null, "bounds nullified");
|
|
||||||
t.eq(box.div, null, "div nullified");
|
|
||||||
t.ok(g_Destroy == true, "OpenLayers.Marker.destroy() called");
|
|
||||||
|
|
||||||
|
|
||||||
OpenLayers.Marker.prototype.destroy =
|
|
||||||
OpenLayers.Marker.prototype._destroy;
|
|
||||||
}
|
|
||||||
|
|
||||||
// -->
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="map" style="width:500px;height:550px"></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
<li>Geometry/test_Rectangle.html</li>
|
<li>Geometry/test_Rectangle.html</li>
|
||||||
<li>Geometry/test_Surface.html</li>
|
<li>Geometry/test_Surface.html</li>
|
||||||
<li>test_Format.html</li>
|
<li>test_Format.html</li>
|
||||||
|
<li>Format/test_GML.html</li>
|
||||||
<li>Format/test_WKT.html</li>
|
<li>Format/test_WKT.html</li>
|
||||||
<li>test_Icon.html</li>
|
<li>test_Icon.html</li>
|
||||||
<li>test_Marker.html</li>
|
<li>test_Marker.html</li>
|
||||||
|
|||||||
Reference in New Issue
Block a user