[OpenLayers-Users] Vectors on the move

bradleyspencer brad at cubewerx.com.au
Thu Apr 17 01:02:42 EDT 2008


Chris,

You are correct. I am using a Handle.Box control and the loX, LoY, HiX, HiY
is available which I then simply use to draw into a temporary vector layer.

This leaves me with a blue box over the area I selected.

So I am already doing as you suggest I believe. My snippet of code is as
follows:

//set up the getfeature info alert on shift mouse box select
control = new OpenLayers.Control();
OpenLayers.Util.extend(control,
	{
		draw: function ()
		{
			// this Handler.Box will intercept the shift-mousedown before
Control.MouseDefault gets to see it
			this.box = new OpenLayers.Handler.Box( control, {"done":
this.notice},{keyMask: OpenLayers.Handler.MOD_SHIFT});
			this.box.activate();
		},	notice: function (bounds)
			{
				removeCreateVectors() 	// this will clear out any previous vectors

// use the shift mouse control to drag a box and now get the coords of box
				ll = map.getLonLatFromPixel(new OpenLayers.Pixel(bounds.left,
bounds.bottom));
				ur = map.getLonLatFromPixel(new OpenLayers.Pixel(bounds.right,
bounds.top));
				centX = (bounds.left + bounds.right)/2
				centY = (bounds.bottom + bounds.top)/2
				var loX = ll.lon.toFixed(12);
				var loY = ll.lat.toFixed(12);
				var hiX = ur.lon.toFixed(12);
				var hiY = ur.lat.toFixed(12);
				BBox = loX+","+loY+"%20"+ hiX+ ","+hiY;   // used in GFI request

				// OK now draw out the drag box as vectors
				drawSelectBox(loX,loY,hiX,hiY) 	// this just draws a box
		}
	});
	map.addControl(control);

However, after I have finished doing what I want any vertical pan movement
'floats' the vectors relative to the base map and the selected features.

Cheers,

Brad Spencer


-----Original Message-----
From: Christopher Schmidt [mailto:crschmidt at metacarta.com]
Sent: Thursday, 17 April 2008 2:18 PM
To: bradleyspencer
Cc: openlayers users
Subject: Re: [OpenLayers-Users] Vectors on the move

On Thu, Apr 17, 2008 at 02:10:51PM +1000, bradleyspencer wrote:
> I am creating a selection box with a Shift-Mouse control and using this as
a
> BBox criteria to do a getfeatureInfo request. That works just fine. I also
> draw the box on a vector layer and that is fine as well.
>
> However, when you pan up and down the select box 'floats' relative to the
> base map. Has anyone seen this and if so is there a workaround?
>
> If this is new I will make a little test app.

You're using a Handler.Box, I assume? How are you getting this to stay
on the map? every implementation I know of, it disappears when you let
go.

In general, controls are stationary: if you want something to stick on
the map, you're going to need to draw it in some other way than as a
control, because it needs to be in the viewport div in order to move
with the map. The best way to do this is probably via a temporary vector
layer, since this will correctly handle things like map zooms, drags,
etc.

Regards,
--
Christopher Schmidt
MetaCarta




More information about the Users mailing list