I have done something like that but it didn't fill in any form component... Check it out: http://pastebin.com/m6336e5e6 If you want to use it, you will have to replace the alert with the code that fills in your form.
Btw, all projections on this example are EPSG:4326. On Fri, Nov 13, 2009 at 4:56 PM, Scott Lewis <[email protected]> wrote: > Ah, sorry about that, I misunderstood the problem you were having! > > J. Cliff Dyer wrote: > > Thanks. That's definitely a cleaner setup, but it didn't really solve > > the problem I was having. Before the box would look like it was being > > drawn properly, but then the persistent copy would be vertically offset. > > Now it's offset from the time I start drawing. Which is an improvement, > > because at least it will be easier for users to draw the box they want. > > Here's a screenshot to show what I mean: > > > > http://imgur.com/5cJ4H > > > > The Box was drawn exactly from Cape Fear to Cape Hatteras, marked with > > little black dots on the screenshot. However, the box itself starts > > drawing a bit above the location of the cursor. It seems the further I > > get from the top of the display, the further displaced the box is. It > > is impossible to get closer than ~2cm from the bottom of the map. There > > also seems to be a very slight horizontal displacement. > > > > Any thoughts on what might cause this displacement? At this point, no > > transformation is being done--at least not in any of my code. > > > > Cheers, > > Cliff > > > > > > > > On Fri, 2009-11-13 at 09:58 -0700, Scott Lewis wrote: > >> I did something like this using one of the examples on the OpenLayers > >> site, modified slightly. Here's what I used: > >> > >> boxControl = new OpenLayers.Control(); > >> OpenLayers.Util.extend(boxControl, { > >> draw: function() { > >> this.box = new OpenLayers.Handler.RegularPolygon(boxControl, > >> {"done": this.notice}, {sides:4, irregular:true, persist:true}); > >> this.box.activate(); > >> }, > >> > >> notice: function(geom) { > >> // whatever you want it to do after the box has been drawn > >> } > >> }); > >> > >> // then add the boxControl to the map > >> > >> This works pretty nicely. Note that "geom" will be in the same > >> projection as the map, so if you want the output to be in another > >> projection (like a latitude/longitude display) you will have to go > >> through the geometry and transform the points. Also, you may have to go > >> through the geometry to determine which point is which (it doesn't > >> always start with the upper-left corner, and it's not always clockwise > >> or counter-clockwise). If interested, I can post some of the functions > >> I do for that. > >> > >> I hope this helps, > >> > >> Scott Lewis > >> NSIDC > >> > >> J. Cliff Dyer wrote: > >>> I'm trying to draw a box on a map, have it persist until another box > >>> gets drawn, and submit the coordinates of the box to a form. I'm doing > >>> this to allow the user to search for objects within a given area. > >>> > >>> I'm doing this by using an OpenLayers.Handler.Box tool in a custom > >>> OpenLayers.Control, which then uses to the "done" callback of the draw > >>> method to create (or recreate) an OpenLayers.Feature.Vector and > populate > >>> (or repopulate) a search form. > >>> > >>> My immediate problem is that the persistent box is not in quite the > same > >>> location as the box the user just drew. I suspect this has something > to > >>> do with projections, but since I never explicitly set projections, I'm > >>> not sure where the error sneaked in. > >>> > >>> More generally, I'm not sure I'm taking the optimal route from the > >>> bounds passed to the callback to the Vector feature. Currently, I do > >>> the following: > >>> > >>> 1) Take the incoming OpenLayers.Bounds object, > >>> 2) Get an OpenLayers.Pixel from the the corners > >>> 3) Get the coordinates of each pixel using map.getLonLatFromPixel > >>> 4) Create a new OpenLayers.Bounds > >>> 5) Extend it to my new coordinates > >>> 6) Convert it to a geometry > >>> 7) Convert it to an OpenLayers.Feature.Vector > >>> > >>> Then I take the coordinates from step 3) and populate a form with them, > >>> which I then submit to my application server side. > >>> > >>> The code for this is pasted here: http://pastebin.com/m300c24a5 > >>> > >>> Any pointers on how to do this more cleanly would be much appreciated. > >>> > >>> Cheers, > >>> Cliff > >>> > >>> > >>> > >>> _______________________________________________ > >>> Users mailing list > >>> [email protected] > >>> http://openlayers.org/mailman/listinfo/users > > > > > > _______________________________________________ > > Users mailing list > > [email protected] > > http://openlayers.org/mailman/listinfo/users > _______________________________________________ > Users mailing list > [email protected] > http://openlayers.org/mailman/listinfo/users >
_______________________________________________ Users mailing list [email protected] http://openlayers.org/mailman/listinfo/users
