[Users] Fit GeoExt PrintPage to extent of a feature
Thomas Colley
it087 at neath-porttalbot.gov.uk
Sun Feb 17 12:20:42 CET 2013
Thanks for the explanation Andreas, that makes sense.
I added the following code and that has solved the problem.
var selection = new OpenLayers.Layer.Vector("Selected
Walk", {
});
map.addLayer(selection)
selection.addFeatures(walkFeat)
walkFeat = selection.features[0]
Thanks again
Tom
-----Original Message-----
From: Andreas Hocevar [mailto:ahocevar at opengeo.org]
Sent: 17 February 2013 10:24
To: Thomas Colley
Cc: Users at geoext.org
Subject: Re: [Users] Fit GeoExt PrintPage to extent of a feature
Hey,
the code needs the map, and it gets the map through the
feature.layer.map reference. If you don't add the feature to a layer,
you may want to do something like the following instead of using the
fit() method:
printMapPanel.map.zoomToExtent(feature.getBounds());
Andreas.
On Sun, Feb 17, 2013 at 11:02 AM, Thomas Colley
<it087 at neath-porttalbot.gov.uk> wrote:
> 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.
>
>
--
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.
More information about the Users
mailing list