[OpenLayers-Users] Strange behaviour with panel and custom
control
avlee
slinavlee at gmail.com
Thu Oct 15 21:46:15 EDT 2009
You should specify the handlers in the constructor of your control, and you
should call activate/deactivate method of OpenLayers.Control when you
overrite the activate/deactivate method.
And you can using the SelectFeature control instead of yourself.
David Alda Fernandez de Lezea wrote:
>
> Hello list,
>
> Sorry but I don't know how the previous message was sent incomplete and by
> mistake. I'll go on:
>
> I managed to develope a custom control called IktSelectTool.js which
> basically selects and highlights fetures from a WFS layer . The control
> doesn't select features, but it registers a click event on the map to
> select the WFS features (that's my idea). The registry of the event and
> the selection of the features works fine, and know I want to make a tool.
> Basically the source of this file is:
>
> /* Copyright (c) 2006-2007 MetaCarta, Inc., published under the Clear BSD
> * license. See http://svn.openlayers.org/trunk/openlayers/license.txt
> for the
> * full text of the license. */
>
> /**
> * @requires OpenLayers/Control.js
> *
> * Class: OpenLayers.Control.IktSelectTool
> *
> * Inherits from:
> * - <OpenLayers.Control>
> */
> OpenLayers.Control.IktSelectTool = OpenLayers.Class(OpenLayers.Control, {
> /**
> * Property: type
> * {OpenLayers.Control.TYPE}
> */
> type: OpenLayers.Control.TYPE_TOOL,
>
> /**
> * Constructor: OpenLayers.Control.Switch
> * Fires a user defined function when toggled on/off
> *
> * Parameters:
> * options - {func} An optional object whose properties will be used
> * to extend the control.
> */
> initialize: function(on, off, options) {
> OpenLayers.Control.prototype.initialize.apply(this, [options]);
> this.userOn = on;
> this.userOff = off;
> },
>
> /**
> * Method: activate
> * Override OpenLayers.Control.activate to call user defined "on"
> function
> */
> activate: function () {
> if (this.active) {
> return false;
> }
> if (this.handler) {
> this.handler.activate();
> }
> this.active = true;
> this.userOn();
> return true;
> },
>
> /**
> * Method: deactivate
> * Override OpenLayers.Control.deactivate to call user defined "off"
> function
> */
> deactivate: function () {
> if (this.active) {
> if (this.handler) {
> this.handler.deactivate();
> }
> this.active = false;
> this.userOff();
> return true;
> }
> return false;
> },
>
>
> /**
> * Method: userOn
> * placeholder for the user defined function that will be fired when
> Switch is activated
> */
> userOn: function(){
> },
> /**
> * Method: userOn
> * placeholder for the user defined function that will be fired when
> Switch is deactivated
> */
> userOff: function(){
> },
>
> CLASS_NAME: "OpenLayers.Control.IktSelectTool"
> });
>
> I create the control in my init function in this way:
>
> var oDrawSelCtrl = new OpenLayers.Control.IktSelectTool(f1,f2,{
> id:"oSelFeatureCtrl", title: 'Selección', displayClass:
> 'olSelectFeature'});
>
> where f1 is the function which is triggered when the control is activated
> and f2 is the function which is triggered when the function is
> deactivated. For my test they are only two functions that do nothing (just
> create somo strings to see if they work), but the idea is to register or
> unregister a map event. Then I add this control to my panel by this way:
>
> panel.addControls([oDragPanCtrl,history.next,
> history.previous,zoombox,oZoomBoxOutCtrl,
> zoomtomaxextent,oDrawLnCtrl,oDrawPtCtrl,oDrawPolCtrl,oDrawSelCtrl]);
>
> And in my index.html I've defined the corresponding CSS class:
>
> /* SelectFeature */
> .olControlPanel .olSelectFeatureItemActive{
> background-image: url("images/Select_on.png");
> background-repeat: no-repeat;
> background-position: 0px 0px;
> }
>
> .olControlPanel .olSelectFeatureItemInactive{
> background-image: url("images/Select_off.png");
> background-repeat: no-repeat;
> background-position: 0px 0px;
> }
>
> At this point everything is OK, the page can be loaded without errors and
> all that stuff. The strange behaviour I'm talking about is that when I
> select the tool, the tool's image is not uploaded, I mean, it doesn't
> change from Select_off.png to Select_on.png, but if I drag a bit on the
> map or make a zoom, the tool's image is uploaded. I'd like to figure out
> what's happening because the user, future user of the app, won't know that
> the tool is activated until he makes a zoom or something related to the
> map.
>
>
> Can someone, please, help me with this problem.
>
> Thanks again.
>
>
>
>
>
>
> Un saludo,
>
>
>
> ··················································································
>
>
> David Alda Fernández de Lezea
>
> Lurralde eta Biodibertsitate Saila / Dpto. de Territorio y Biodiversidad
>
>
>
> IKT
>
> Granja Modelo s/n · 01192 · Arkaute (Araba)
>
>
> ··················································································
> Tlfnos.: 945-00-32-95 Fax: 945-00.32.90
> ··················································································
> email: dalda at ikt.es web: www.ikt.es
> <http://www.ikt.es/>
> ··················································································
>
>
>
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>
>
--
View this message in context: http://n2.nabble.com/Strange-behaviour-with-panel-and-custom-control-tp3828331p3833135.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.
More information about the Users
mailing list