I use the control below to allow my users to draw a "bounding box" on a
map that uses the Google layers.
The problem arises when they draw a shape that crosses the dateline, as
it creates a shape longitudly inverse to what they wanted.
Any suggestions as to the best way to handle this?


[javascript]

//bbox
_bboxDrawControl = new OpenLayers.Control({
    draw: function () {
        this.box = new OpenLayers.Handler.Box( _bboxDrawControl,{
                        done: this.notice
                },{});
                this.box.boxDivClassName = 'Control_DrawBox';
    },
    notice: function (bounds){
                this.box.deactivate();
                var newbounds = new OpenLayers.Bounds();
                newbounds.extend(_map.getLonLatFromPixel(new
OpenLayers.Pixel(bounds.left, bounds.bottom)));
                newbounds.extend(_map.getLonLatFromPixel(new
OpenLayers.Pixel(bounds.right, bounds.top)));
                
                var bbox = new
OpenLayers.Feature.Vector(newbounds.toGeometry());
                bbox.id = 'SW_customBoundingBox';
                _bboxLayer.addFeatures(bbox);
                _map.zoomToExtent(newbounds);
    }
});
_map.addControl(_bboxDrawControl);

[end javascript]


I could snip the shape off entirely at the dateline, but id like to
avoid that.

I could cut it in half and create two shapes, but while producing a more
accurate result it would render on different sides of the map,
and if its not coherent its not very user friendly.

A third option would be to force the draw control to be unable to cross
the date line,
but I don't have any idea how to accomplish that.

Ultimately id like one shape(or look like one) that truly represents the
shape drawn.
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to