[Users] Fit GeoExt PrintPage to extent of a feature
Thomas Colley
it087 at neath-porttalbot.gov.uk
Sun Feb 17 11:02:40 CET 2013
Thanks for your reply Andreas
There are 2 WMS layers on my map, walks (linestrings) and start points
(points). When a user clicks on a start point a WMSGetFeatureInfo
request is made across both layers to bring back the start point feature
that contains all of the attribute information to be displayed in the
popup and sent through to mapfish for the printed map and the feature
for the walk itself just for the geometry. The GML response is then read
and the individual features are extracted.
These features are then passed into the PrintWalk procedure. I guess it
makes sense that the features returned by the GetFeatureInfo don't
actually belong to any layer. I will create a Vector Layer to add the
walk feature to and hopefully that will solve the problem.
Just out of interest is there a reason the code looks for a feature to
belong to a layer as all it needs is the geometry of the feature itself?
Thanks very much for your advice
Tom
map.events.register('click',this,function(e){
var lonLat = map.getLonLatFromPixel(new
OpenLayers.Pixel(e.xy.x, e.xy.y));
var params={
REQUEST: "GetFeatureInfo",
EXCEPTIONS: "application/vnd.ogc.se_xml",
BBOX: map.getExtent().toBBOX(),
X: parseInt(e.xy.x),
Y: parseInt(e.xy.y),
INFO_FORMAT: 'application/vnd.ogc.gml',
QUERY_LAYERS:
['web_walks_start_points','web_walks'],
FEATURE_COUNT: 2,
Srs: 'EPSG:27700',
Layers: ['web_walks_start_points','web_walks'],
Styles: '',
WIDTH: map.size.w,
HEIGHT: map.size.h
};
var
request=OpenLayers.loadURL(GeoServerURL,params,this,function(_response){
var gmlLayer=new OpenLayers.Format.GML({
featureNS: 'http://www.npt.gov.uk/',
featurePrefix: 'npt',
geometryName: 'geom',
extractAttributes: true
});
var
features=gmlLayer.read(_response.responseText);
if (features.length!=2){
return;
}
startFeat = features[0]
walkFeat = features[1]
blurb = OpenLayers.Request.GET({
url: "1.html", //test
web page, will dynamically point to formatted feature page for popup
callback: function Pop(){
var popup = new
OpenLayers.Popup.FramedCloud(
'infopop',
lonLat,
new OpenLayers.Size(10,
10),
blurb.responseText +
'<input type="button" value="Print..."
onclick="PrintWalk(walkFeat,startFeat);">',
{ offset: { x: 0, y: 0
}, size: new OpenLayers.Size(0, 0) },
true
);
map.addPopup(popup, true);
}
});
});
OpenLayers.Event.stop(e);
})
-----Original Message-----
From: andreas.hocevar at gmail.com [mailto:andreas.hocevar at gmail.com] On
Behalf Of Andreas Hocevar
Sent: 15 February 2013 17:02
To: Thomas Colley
Cc: Users at geoext.org
Subject: Re: [Users] Fit GeoExt PrintPage to extent of a feature
This looks like the feature you pass to PrintWalk does not belong to a
layer. You will need to provide more context so we can see what is
wrong.
Andreas.
On Fri, Feb 15, 2013 at 10:01 AM, Thomas Colley
<it087 at neath-porttalbot.gov.uk> wrote:
> Hi Everyone
>
>
>
> I am trying to add a print function to a map using GeoExt and the
> Geoserver print module.
>
>
>
> Users click on a feature to bring up an information popup with a print
> button in it. When the print button is clicked I would like the
> PrintPage extent to fit to the feature. I am not having much luck so
> far. Below is the print function.
>
>
>
> PrintWalk = function(feature) {
>
> var featGeom = feature.geometry
>
> printPage.fit(feature, true);
>
> }
>
>
>
> The error I get is:
>
> TypeError: fitTo.layer is null GeoExt.js
(line
> 166)
>
>
>
> I have also tried printPage.fit(featGeom, true); instead it is looking
> for the geometry rather than the feature itself but then I get
>
> TypeError: map.getExtent is not a function GeoExt.js
(line
> 167)
>
>
>
> The feature geometry being passed through is a multilinestring.
>
>
>
> Using printPage.fit(map, true) prints fine.
>
>
>
> I would be very grateful if anyone has any ideas what I'm doing wrong.
>
>
>
> Thanks
>
>
>
> Tom
>
>
>
>
>
>
> _______________________________________________
> Users mailing list
> Users at geoext.org
> http://www.geoext.org/cgi-bin/mailman/listinfo/users
>
--
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.
More information about the Users
mailing list