[OpenLayers-Users] Displaying attributes by onmouseover

Kai Behncke Kai-Behncke at gmx.de
Tue Feb 24 11:15:14 EST 2009


Hi Till,


thank you for the code :-)
It`s quite helpful,although I didn`t get it to run as I want so far.

The wfs is correctly visualized, I use that one:
http://www.gastronomap.de/cgi-bin/mapserv?map=/home/promotion/behncke/gastronomap_wms/gastronomap_wfs.map&SERVICE=WFS&VERSION=1.0.0&Request=GetFeature&Typename=gastronomie_wfs

If I do a mouseover at the different points of the wfs the following

feature_info_hover(arguments[0], gastronomap_wfs) is called.


I try:

function feature_info_hover(feature, myWfsLayer)
{
alert (myWfsLayer.getFeatureById(feature.gid));


...and get always an alert with "null".

(an "alert (feature);" gives an alert with [object Object], so I think the arguments[0]-parameter is transported correctly).

Has anybody an idea why the gid of the feature doesn`t appear in the alert?

Best regards, Kai
-------- Original-Nachricht --------
> Datum: Tue, 24 Feb 2009 15:20:45 +0100
> Von: Till Adams <adams at terrestris.de>
> An: Kai Behncke <Kai-Behncke at gmx.de>, users at openlayers.org
> Betreff: Re: [OpenLayers-Users] Displaying attributes by onmouseover

> Kai Behncke schrieb:
> > Dear Openlayers-Users,
> >
> >
> > I use an application with a couple of point objects (500) visualized by
> a wms in the map.
> >
> > I´m looking for a function that pops up a small window (for example
> with the name of an object) if I do a mouseover at an object in the map.
> > I think for this using a second layer ("invisible" wfs) could be best
> practise (or which other possibilities shall be usable)??
> >
> > As far as I can see a script like that does not exist in the examples
> (if I haven`t overseen it.....).
> > I would like to try to write one and supply it.
> > What is the way if I want to supply a script like that to the examples?
> >
> > Best regards, Kai Behncke
> >   
> Kai,
> 
> 
> we use WFS and the select feature from OL::
> 
> **
>  * -------------------------------------------------------------------
>  * feature_info_hover
>  * function to hover a feature open a new pop up window and destroy
>  * it after 3000 milliseconds (variable at end of function)
>  *
>  * @feature
>  * -------------------------------------------------------------------
>  */
> function feature_info_hover(feature, myWfsLayer)
> {
>     if (this.popup && NABU.MAP && NABU.MAP.popups && 
> NABU.MAP.popups.length > 0)
>     {
>         window.clearTimeout(this.autodestroy);
>         this.popup.destroy();
>         this.popup = null;
>     }
>     var myFeature = myWfsLayer.getFeatureById(feature.id);
>    
>     if (myFeature)
>     {
>    
>         var window_position = new 
> OpenLayers.LonLat(myFeature.geometry.x, myFeature.geometry.y);
>         this.popup = new OpenLayers.Popup("ol-info-popup", 
> window_position, null, '<div class="map-kurzinfo-popup"><span>' + 
> myFeature.data.name + '</span><br><span onclick="javascript:OpenInfo(\'' 
> + myFeature.data.gid + '\',\'' + myWfsLayer.typename + '\')" 
> style="cursor:pointer;">weitere Informationen</span></div>', false);
>         this.popup.autoSize = true;
>         map.addPopup(this.popup, true);
>         this.autodestroy = window.setTimeout(function()
>         {
>             if (map && map.popups && map.popups.length > 0)
>             {
>                 var len = map.popups.length;
>                 for (var i = 0; i < len; i++)
>                 {
>                     if (map.popups[i] && map.popups[i].destroy)
>                     {
>                         map.popups[i].destroy();
>                     }
>                 }
>             }
>         }, 3000);
>     }
> }
> 
> See that we refer manually to "myFeature.data.gid", 
> "myFeature.data.name" and "myFeature.data.typename" which is not really 
> them ost elegant way...
> 
> Then initiate it through that code in the ol init function:
> 
> 
>     hover.parken = new OpenLayers.Control.SelectFeature(tbl_p_parken, {
>         callbacks: {
>             'over': function()
>             {
>                 feature_info_hover(arguments[0], tbl_p_parken);
>             }
>         }
>     });
>     map.addControl(hover.parken);
>     hover.parken.activate();
> 
> 
> Where "tbl_p_parken" is our WFS defined in the layer section of the ol 
> init function. This only works for one layer as the select feature of OL 
> in the moment only handles one layer, this is to be changed on the next 
> OL versions.
> 
> Regards, Till
> 
> 
> ----------------------------------------------------------
> terrestris GmbH & Co. KG
> Irmintrudisstrasse 17
> 53111 Bonn
> Germany
> 
> Till Adams
> Geschäftsführung
> 
> Tel: +49 (0)228 / 962 899-52
> Fax: +49 (0)228 / 962 899-57
> adams at terrestris.de http://www.terrestris.de
> Amtsgericht Bonn, HRA 6835
> ---------------------------------------------------------
> 
> Komplementärin:
> 
> terrestris Verwaltungs GmbH
> 
> vertreten durch:
> Hinrich Paulsen, Till Adams

-- 
Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger01



More information about the Users mailing list