[OpenLayers-Users] Displaying attributes by onmouseover

Kai Behncke Kai-Behncke at gmx.de
Sat Feb 28 21:18:16 EST 2009


Dear Till, Christopher and Alexandre,

thank you again. Some steps further but not at the target :-(

@Till: I got your example doing an onmouseover with an OpenLayers.Popup.
The internal id is recognised but I don`t get for example 
the name, gid or other attributes as you did by:

"myFeature.data.gid", 
"myFeature.data.name" etc.

An "alert (myFeature.data.gid);" in my case is undefined: --->

http://www.tourismus-maps.de/behncke/openlayers/workshop/test_wfs_1.html?lon_lat=8.05612609964141,52.2713145994324

Is there a special way you declared the "data"-Object?

@Alexandre: I got your example to run locally with your WFS, but not yet with mine:

http://www.tourismus-maps.de/behncke/openlayers/workshop/test_wfs_2.html?lon_lat=8.05612609964141,52.2713145994324


In your example you did:

-----------
         wfs = new OpenLayers.Layer.Vector("States (SVG)", {
                styleMap: styleMap,
                projection: new OpenLayers.Projection("EPSG:4326"),
                strategies: [new OpenLayers.Strategy.BBOX()],
                protocol: new OpenLayers.Protocol.WFS({
                    version:       "1.0.0",
                    url:           "http://sigma.openplans.org/geoserver/ows",
                    featureType:   "states",
                    srsName:       "EPSG:4326",
                    featureNS:     "http://www.openplans.org/topp",
                    geometryName:  "the_geom",
                    schema:         "http://sigma.openplans.org/geoserver/wfs?service=WFS&version=1.0.0&request=DescribeFeatureType&typeName=topp:states"
                })
            });
------------

As it`s written here (http://dev.openlayers.org/apidocs/files/OpenLayers/Protocol/WFS/v1-js.html) the URL should be the WFS-Service I think, but so far no succes
(neither with:
http://www.tourismus-maps.de/cgi-bin/mapserv?map=/home/promotion/behncke/gastronomap_wms/gastronomap_wfs.map&SERVICE=WFS&VERSION=1.0.0&Request=GetFeature&Typename=gastronomie_wfs

nor with:http://www.tourismus-maps.de/cgi-bin/mapserv?map=/home/promotion/behncke/gastronomap_wms/gastronomap_wfs.map)

I wonder what happens at your:   featureNS:     "http://www.openplans.org/topp" ?

In the moment I try with:
------------------
      wfs = new OpenLayers.Layer.Vector("gastronomy", {
                styleMap: styleMap,
                projection: new OpenLayers.Projection("EPSG:900913"),
                strategies: [new OpenLayers.Strategy.BBOX()],
                protocol: new OpenLayers.Protocol.WFS({
                    version:       "1.0.0",
                    url:           "http://www.tourismus-maps.de/cgi-bin/mapserv?map=/home/promotion/behncke/gastronomap_wms/gastronomap_wfs.map",
                    featureType:   "gastronomie_wfs",
                    srsName:       "EPSG:900913",
                    featurePrefix:     "feature",
                    geometryName:  "the_geom_900913",
                    schema:         "http://www.tourismus-maps.de/cgi-bin/mapserv?map=/home/promotion/behncke/gastronomap_wms/gastronomap_wfs.map&service=WFS&version=1.0.0&request=DescribeFeatureType&typeName=gastronomie_wfs"
                })
            });
-------------


....but neither the wfs-objects are visualized nor does the popup-window appear.

I think it might has something to do with featureNS:??

Might the problem occur because I`m using a WFS by UMN MapServer, it shouldn`t, should it?

Has anybody an idea please?

Thank you in advance, Kai



-------- Original-Nachricht --------
> Datum: Thu, 26 Feb 2009 11:19:53 -0500
> Von: Alexandre Dube <adube at mapgears.com>
> An: Kai Behncke <Kai-Behncke at gmx.de>
> CC: Till Adams <adams at terrestris.de>, users at openlayers.org
> Betreff: Re: [OpenLayers-Users] Displaying attributes by onmouseover

> Hi Kai,
> 
>   I've accomplished this kind of feature by customizing my own control.  
> Its main purpose is to "highlight" features, but there's already a 
> "displayPopup" property set to true by default.  You could customize the 
> content of the popup to do what you want it to do and that should do the 
> trick.
> 
>   See an example and the code :
> 
> http://dev.openlayers.org/sandbox/adube/openlayers/examples/highlight-feature.html
> http://svn.openlayers.org/sandbox/adube/openlayers/lib/OpenLayers/Control/HighlightFeature.js
> 
>   Or, you could use displayPopup:false and register your own featureset 
> event, like in this example which displays Ext.Windows instead of a OL 
> popup : ( click on the "edit road" button )
> 
> http://dev4.mapgears.com/bdga-mapfish/bdgaWFS-T.html
> 
>   Hope this helps,
> 
> Alexandre
> 
> Kai Behncke wrote:
> > 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
> >>     
> >
> >   
> 
> 
> -- 
> Alexandre Dubé
> Mapgears
> www.mapgears.com

-- 
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