[OpenLayers-Users] Displaying attributes by onmouseover
Alexandre Dube
adube at mapgears.com
Mon Mar 2 08:36:53 EST 2009
Hi Kai,
Here's a setting I use with a mapserver wfs server (1). Check with
firebug what's going wrong and why it's going wrong.
Regards,
Alexandre
(1)
//---------------------- in the HTML---------------------//
var szBDGAMapPath = "/home/adube/proj/bdga/msp/wms/bdga.map";
var szHost = "http://127.0.0.1:8080/";
var szMSURL = szHost+"cgi-bin/mapserv";
olWFSReg = new OpenLayers.Layer.Vector("Regions - WFS", {
strategies: [new OpenLayers.Strategy.BBOX()],
protocol: new OpenLayers.Protocol.WFS({
version: "1.0.0",
url: szMSURL+"?map="+szBDGAMapPath,
featureType: "BDGA_REGIO_S_POLY_1M_13M",
srsName: "EPSG:32198",
featureNS: szHost,
geometryName: "the_geom",
schema:
szMSURL+"?service=WFS&version=1.0.0&request=DescribeFeatureType&TypeName=BDGA_REGIO_S_POLY_1M_13M"
})
});
//---------------------- in the MAPFILE---------------------//
# add this in the WEB section of the MAP
"wfs_namespace_prefix" "feature"
"wfs_namespace_uri" "http://127.0.0.1:8080/"
Kai Behncke wrote:
> 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
>>
>
>
--
Alexandre Dubé
Mapgears
www.mapgears.com
More information about the Users
mailing list