[OpenLayers-Users] Measure Control - get distance on mouse move
- part 2
Matt Foster
Matthew.Foster at noaa.gov
Thu Apr 23 15:01:55 EDT 2009
I'm a tad confused here. Is none of this possible in 2.7?
Matt
Josh Rosenthal wrote:
> D'oh! Yes, that should have been obvious. Either use whatever is
> being triggered by the modify callback, or set a custom one if the
> control isn't already using one.
>
> Much obliged,
>
> Josh
>
>
> On Wed, Apr 22, 2009 at 4:35 PM, Andreas Hocevar <ahocevar at opengeo.org
> <mailto:ahocevar at opengeo.org>> wrote:
>
> Josh Rosenthal wrote:
>
> Thanks a lot for the solution using callbacks. I was
> wondering if you could suggest how that might be adapted to
> give the measurements on a draw feature. It's much easier
> than what I was previously doing for measure and drawFeature
> (passing a customized modifyFeature function in the options,
> where the new function was the same as the original, but also
> had the requisite getLength statements - functional, but it
> seems like this should be far more version dependent than the
> callback solution).
>
> When I try to use callbacks-modify on a drawFeature (as
> below), my modify callback doesn't seem to get used (the
> console.log(this) never fires). I assume this is because
> measureControls didn't already use a modify callback, whereas
> drawFeature does, and as such drawFeature overrides any modify
> callback I might try to pass in? Is there any way to append
> to the normal modify callback? Am I missing something obvious?
>
>
> The best way to achieve this would be to listen for the
> sketchmodified event of the DrawFeature control. this is what
> actually gets triggered in the modify callback of the handler that
> is configured with DrawFeature.
>
> Regards,
> Andreas.
>
>
> Thanks!
> Josh
>
> broken: uses callbacks - modify: selectDrawCircle = new
> OpenLayers.Control.DrawFeature(selectLayerPoly,
> OpenLayers.Handler.RegularPolygon,{
>
> displayClass:"olControlSelectDrawCircle",
>
> element:document.getElementById('SelectControl_Distance'),
>
> unitElement:document.getElementById('SelectControl_mapUnit'),
> callbacks:{
> modify: function (point,feature) {
> console.log(this);
>
> this.element.value=this.radius.toFixed(2);
>
> this.unitElement.innerHTML=this.map.getUnits();
> }
> },
> handlerOptions:{
> sides:40
> }
> });
> functional: uses slightly
> customized modifyGeometry function passed in as an option
> selectDrawCircle = new
> OpenLayers.Control.DrawFeature(selectLayerPoly,
> OpenLayers.Handler.RegularPolygon,{
>
> displayClass:"olControlSelectDrawCircle",
> handlerOptions:{
> sides:40,
>
> element:document.getElementById('SelectControl_Distance'),
>
> unitElement:document.getElementById('SelectControl_mapUnit'),
> modifyGeometry: function() {
> var angle, dx, dy, point;
> var ring =
> this.feature.geometry.components[0];
> // if the number of sides
> ever changes, create a new geometry
> if(ring.components.length
> != (this.sides + 1)) {
> this.createGeometry();
> ring =
> this.feature.geometry.components[0];
> }
> for(var i=0; i<this.sides;
> ++i) {
> point = ring.components[i];
> angle = this.angle + (i
> * 2 * Math.PI / this.sides);
> point.x = this.origin.x
> + (this.radius * Math.cos(angle));
> point.y = this.origin.y
> + (this.radius * Math.sin(angle));
> point.clearBounds();
> }
> // note, only val b/c this
> is an input field.
>
> this.element.value=this.radius.toFixed(2);
>
> this.unitElement.innerHTML=this.map.getUnits();
> }
> }});
>
>
> On Wed, Apr 22, 2009 at 8:22 AM, Andreas Hocevar
> <ahocevar at opengeo.org <mailto:ahocevar at opengeo.org>
> <mailto:ahocevar at opengeo.org <mailto:ahocevar at opengeo.org>>>
> wrote:
>
> Hi,
>
> the solution (if you're using trunk or 2.8) is quite
> simple. The snippet
> below replaces the definition of measureControls in the
> measure example
> (starting around L65)
>
> measureControls = {
> line: new OpenLayers.Control.Measure(
> OpenLayers.Handler.Path, {
> callbacks: {
> modify: function(point, feature) {
>
> measureControls.line.measurePartial(point,
> feature.geometry);
> }
> },
> persist: true,
> handlerOptions: {
> layerOptions: {styleMap: styleMap}
> }
> }
> ),
> polygon: new OpenLayers.Control.Measure(
> OpenLayers.Handler.Polygon, {
> callbacks: {
> modify: function(point, feature) {
>
> measureControls.polygon.measurePartial(point,
> feature.geometry);
> }
> },
> persist: true,
> handlerOptions: {
> layerOptions: {styleMap: styleMap}
> }
> }
> )
> };
>
> As you can see, the trick is to add a modify callback to
> the handler,
> calling the control's measurePartial method.
>
> Regards,
> Andreas.
>
> pribram pribram wrote:
> > Hi,
> > Is there anything new about measuring + getting distance on
> mousemove?
> >
>
> http://n2.nabble.com/Measure-Control---get-distance-on-mouse-move-td2503580.html
> > If there is a solution, please publish it.
> >
> > Thanks,
> > Pribram
> > _______________________________________________
> > Users mailing list
> > Users at openlayers.org <mailto:Users at openlayers.org>
> <mailto:Users at openlayers.org <mailto:Users at openlayers.org>>
>
> > http://openlayers.org/mailman/listinfo/users
> >
>
>
> --
> Andreas Hocevar
> OpenGeo - http://opengeo.org/
> Expert service straight from the developers.
>
> _______________________________________________
> Users mailing list
> Users at openlayers.org <mailto:Users at openlayers.org>
> <mailto:Users at openlayers.org <mailto:Users at openlayers.org>>
>
> http://openlayers.org/mailman/listinfo/users
>
>
>
>
> --
> Andreas Hocevar
> OpenGeo - http://opengeo.org/
> Expert service straight from the developers.
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>
--
Do not go where the path may lead; go instead where there is no path and leave a trail.
-- Ralph Waldo Emerson
-------------- next part --------------
A non-text attachment was scrubbed...
Name: matthew_foster.vcf
Type: text/x-vcard
Size: 229 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/openlayers-users/attachments/20090423/51c274c8/matthew_foster.vcf
More information about the Users
mailing list