[OpenLayers-Users] some questions about popup extent & hyperlink
P Kishor
punk.kish at gmail.com
Mon Dec 21 10:31:59 EST 2009
On Mon, Dec 21, 2009 at 9:22 AM, beppe <beppenapo at gmail.com> wrote:
> Hi,
> I'm an italian OL's newbie, I come from a mapserver world and I'm very
> happy to discover every day something about OpenLayers!
> I've this code [1] and this mapfile [2], the geographic elements are
> stored in a postgis table.
> The code works but in the popup window, info are displayed like this:
> "GetFeatureInfo results: Layer 'ut' Feature 78: paese = 'Coredo'
> localita = 'S. Barbara'"
> Obviously I don't want info about "GetFeatureInfo", "Layer" and
> "Feature", but only about "paese" and "localita".
> The info, then, are print like a "text string". I'd want print the info
> in table style...but I don't know how !!!
>
You don't have a TEMPLATE in your mapfile... (it says TEMPLATE void).
Define a TEMPLATE, and in that template (an HTML file), create your
table like so
<TABLE>
<TR><TD>Paese</TD><TD>[paese]</TR>
<TR><TD>Localita</TD><TD>[localita]</TR>
</TABLE>
> Question 2.
> I'd like to have in popup an hyperlink to a page in wich print a map
> with the extent of the selected feature, but:
> 1. my feature are point
> 2. I don't know how write the code!!!
>
> Any ideas, example or tutorial?
> thanks
>
> -beppe-
>
> [1]
> OpenLayers.ProxyHost = "http://localhost/cgi-bin/proxy.cgi?url=";
>
> var map;
> var info;
> // pink tile avoidance
> OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;
> // make OL compute scale according to WMS spec
> OpenLayers.DOTS_PER_INCH = 25.4 / 0.28;
>
> function init(){
> var format = 'image/png';
> var bounds = new OpenLayers.Bounds(
> 653890.824038, 5121367.412500, 673982.300962, 5139410.087500
> );
> var options = {
> controls: [],
> maxExtent: bounds,
> maxResolution: 40.83535156249854,
> projection: "EPSG:3003",
> units: 'm'
> };
>
> map = new OpenLayers.Map('map', options);
>
> // setup comuni
> var comuni = new OpenLayers.Layer.WMS(
> "comuni",
> "http://localhost/cgi-bin/mapserv?map=/var/www/vervo/config/default/pmapper_demo.map&",
> {layers: 'confini_com',
> tiled: 'true',
> tilesOrigin : "657732.15,5120937.825",
> },{buffer: 0}
> );
> map.addLayer(comuni);
>
>
> var ctr = new OpenLayers.Layer.WMS("ctr",
> "http://localhost/cgi-bin/mapserv?map=/var/www/vervo/config/default/pmapper_demo.map&",
> {layers: 'ctr',
> srs: 'EPSG:3003',
> tiled: 'true',
> transparent: 'true',
> format: format});
> map.addLayer(ctr);
>
> // setup ut
> var ut = new OpenLayers.Layer.WMS(
> "ut",
> "http://localhost/cgi-bin/mapserv?map=/var/www/vervo/config/default/pmapper_demo.map&",
> {srs: 'EPSG:3003',
> layers: 'ut',
> styles: '',
> format: format,
> tiled: 'true',
> tilesOrigin : "658390.746875,5121279.4",
> transparent: 'true'
> },
> {buffer: 0}
> );
> map.addLayer(ut);
>
> // build up all controls
> map.addControl(new OpenLayers.Control.PanZoomBar({
> position: new OpenLayers.Pixel(2, 15)
> }));
> map.addControl(new OpenLayers.Control.Navigation());
> map.addControl(new OpenLayers.Control.Scale($('scale')));
> map.addControl(new OpenLayers.Control.MousePosition({element:
> $('location')}));
> map.zoomToExtent(bounds);
>
> //Crea pop-up info
> var createPopup = function(response) {
> var lonlat = map.getLonLatFromViewPortPx(this.xy);
> var popup = new OpenLayers.Popup.FramedCloud(
> "chicken",lonlat, null,response.responseText,null,true);
> popup.setBackgroundColor("#c1cdc1");
> popup.setOpacity(0.7);
> map.addPopup(popup, true /* exclusive */);
>
> function onFeatureUnselect(event) {
> var feature = event.feature;
> if(feature.popup) {
> map.removePopup(feature.popup);
> feature.popup.destroy();
> delete feature.popup;
> }
> }
> };
>
> // support GetFeatureInfo
> map.events.register('click', map, function (e) {
> var params = ut.getFullRequestString ({
> REQUEST: "GetFeatureInfo",
> EXCEPTIONS: "application/vnd.ogc.se_xml",
> BBOX: map.getExtent().toBBOX(),
> X: e.xy.x,
> Y: e.xy.y,
> INFO_FORMAT: 'text/plain',
> //QUERY_LAYERS: ut.params.LAYERS,
> QUERY_LAYERS: ut,
> FEATURE_COUNT: 50,
> RADIUS: 5,
> Srs: 'EPSG:3003',
> Layers: 'ut',
> //Layers: 'topp:unita\'_territoriali',
> //Styles: '',
> WIDTH: map.size.w,
> HEIGHT: map.size.h,
> format: format},
> "http://localhost/cgi-bin/mapserv?map=/var/www/vervo/config/default/pmapper_demo.map&SERVICE=WMS&VERSION=1.1.1&QUERY_LAYERS=ut"
> );
> // updateFeatureInfoFilters(params);
> OpenLayers.loadURL(params, '', e, createPopup);
> OpenLayers.Event.stop(e);
> });
> }
> -------------------------------------------------
> [2]
> LAYER
> NAME 'ut'
> TYPE POINT
> CONNECTIONTYPE postgis
> CONNECTION "dbname='mydb' host=localhost port=5432 user='myuser'
> password='mypwd'"
> DATA 'ut_geo FROM public.ut using unique "id_ut" using SRID=3003'
> PROJECTION
> "init=epsg:3003"
> END
> TOLERANCEUNITS pixels
> TOLERANCE 10
> DUMP TRUE
> TEMPLATE void
> METADATA
> "RESULT_FIELDS" "paese,localita"
> "RESULT_HEADERS" "Paese, Localita'"
> "wfs_title" "ut"
> "wfs_featureid" "ut"
> "wms_include_items" "paese,localita"
> "ows_include_items" "paese, localita"
> END
> CLASS
> NAME "Unita' territoriali"
> STYLE
> SYMBOL 'circle'
> SIZE 8
> OUTLINECOLOR 0 0 0
> COLOR 222 255 22
> END
> END
> END
>
More information about the Users
mailing list