On Tue, Sep 11, 2012 at 6:20 PM, Puneet Kishor <[email protected]> wrote:
>
> On Sep 10, 2012, at 7:16 PM, Richard Greenwood <[email protected]> 
> wrote:
>
>> On Mon, Sep 10, 2012 at 1:38 PM, Puneet Kishor <[email protected]> wrote:
>>> In OL 2.11 I used to do the following successfully
>>>
>>>    map.events.register(
>>>        "click",
>>>        map,
>>>        function(e) {
>>>            fancyFunction({evt: e, other_params: "foo"});
>>>        }
>>>    );
>>>
>>> The above has stopped working in Firefox (currently using FF v. 15.0.1) 
>>> without any errors. It does work in Safari 6, but gives the following 
>>> warning in the console.log
>>>
>>>> event.layerX and event.layerY are broken and deprecated in WebKit. They 
>>>> will be removed from the engine in the near future.
>>>
>>> Suggestions to fix both problems would be welcomed with thanks.
>>
>>
>> I believe the correct way to register a click handler is something like:
>>
>> var click = new OpenLayers.Control.Click( {
>>  trigger: function(e) {
>>    /* do stuff */
>>  }
>> });
>> map.addControl(click);
>> click.activate();
>>
>
>
> Perhaps. But, when I use the above code, I get the following error
>
>         TypeError: OpenLayers.Control.Click is not a constructor

Sorry, I did the same thing the last time I tried to answer this
question. You need to first create a new class:

//   based on:
//   http://dev.openlayers.org/docs/files/OpenLayers/Handler/Click-js.html
OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
  defaultHandlerOptions: {
    'single': true,
    'double': false,
    'pixelTolerance': 0,
    'stopSingle': false,
    'stopDouble': false
  },
  initialize: function(options) {
    this.handlerOptions = OpenLayers.Util.extend(
      {}, this.defaultHandlerOptions
    );
    OpenLayers.Control.prototype.initialize.apply(
      this, arguments
    );
    this.handler = new OpenLayers.Handler.Click(
      this, {
        'click': this.trigger
      }, this.handlerOptions
    );
  }
});


Based on my foggy recollection of previous threads I still believe
that the above is the preferred method rather than
    map.events.register("click", ...)
I realize that register("click") exists in examples, but some of them
are pretty dated. Have a look at:
   http://dev.openlayers.org/docs/files/OpenLayers/Handler/Click-js.html

Rich

-- 
Richard Greenwood
[email protected]
www.greenwoodmap.com
_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to