Thank you so much Arnd, that works perfectly! Still need to tweak it a bit, but that shouldn't be too difficult.
Thanks again, Alex. On Tue, Jun 29, 2010 at 9:35 PM, Arnd Wippermann <[email protected]>wrote: > Hi Alex, > > that's how I would do it. Use an Ajax request to get the GML-file and then > parse it and add every feature to an new vector layer. > > If your GML-file residents on the same server (use relative path to the > gml), then you don't need a proxy script. > > If have tested the below code locally with the example > "spherical-mercator.html". > > var formats = { > wkt: new OpenLayers.Format.WKT(), > geojson: new OpenLayers.Format.GeoJSON(), > georss: new OpenLayers.Format.GeoRSS(), > gml: new OpenLayers.Format.GML(), > kml: new OpenLayers.Format.KML() > }; > > function getGML() > { > theUrl = "/OLClient/some.gml"; > > var myAjax = new OpenLayers.Ajax.Request( > theUrl, > { > method: 'get', > onComplete: showResponse, > onFailure: showResponseFailure > }); > } > > var arr = []; > > function showResponse(response) > { > var theParser = formats["gml"]; > theParser.internalProjection = null; > theParser.externalProjection = null; > theParser.extractStyles = false; > theParser.extractAttributes = true; > > var features = theParser.read(response.responseText); > > if(features) > { > if(features.constructor != Array) > features = [features]; > > //iterate the features and put them on a vector layer > for(var i=0;i<features.length;i++) > { > //get the feature type > var ftType = > features[i].geometry.CLASS_NAME.replace(/OpenLayers.Geometry./,""); > //count the feature of a type > arr[ftType] = arr[ftType] + 1; > > var ftLyr = new OpenLayers.Layer.Vector(ftType + " " + > arr[ftType]); > map.addLayer(ftLyr); > ftLyr.addFeatures(features[i]); > } > > //to zoom to the features > var bounds = features[0].geometry.getBounds().clone(); > for(var i=1;i<features.length;i++) > bounds.extend(features[i].geometry.getBounds()); > map.zoomToExtent(bounds,false); > } > else > alert('Bad input ' + type); > } > > function showResponseFailure(response) > { > alert(response); > } > > getGML(); > > Arnd > ________________________________ > > Von: Alex Brandsen [mailto:[email protected]] > Gesendet: Dienstag, 29. Juni 2010 12:23 > An: Arnd Wippermann > Cc: [email protected] > Betreff: Re: [OpenLayers-Users] parsing a GML file into different layers > > > Hi Arnd, > > thanks for your reply, this seems like it should work. I've been trying it > out, but can't get it to work.. What should go in the brackets after 'GML', > and where does 'response' come from? Sorry if these are really basic > questions, but I don't have much experience in JS or OL... > > Thanks again, > > Alex. > > > On Sun, Jun 27, 2010 at 2:44 PM, Arnd Wippermann <[email protected]> > wrote: > > > Hi, > > something like this should work: > > var features = new OpenLayers.Format.GML().read(response); > > if(features) > { > if(features.constructor != Array) > features = [features]; > > for(var i=0;i<features.length;i++) > { > var ftLyr = new OpenLayers.Layer.Vector("Feature " + i); > addLayer(ftLyr); > ftLyr.addFeatures(features[i]); > } > } > > Arnd > > ________________________________ > > Von: [email protected] > [mailto:[email protected]] Im Auftrag von Alex Brandsen > Gesendet: Sonntag, 27. Juni 2010 14:43 > An: Eric Lemoine > Cc: [email protected] > Betreff: Re: [OpenLayers-Users] parsing a GML file into different > layers > > > Hi Eric, > > thanks for your reply. I probably need to use OpenLayers. > Format.GML.read() , but how do I then split the array it returns into > different layers? > > Thanks, > > Alex. > > > On Sat, Jun 26, 2010 at 7:12 AM, Eric Lemoine > <[email protected]> wrote: > > > On Friday, June 25, 2010, Alex Brandsen > <[email protected]> wrote: > > Hi all, > > > > I'm building a map of a medieval wallpainting, and the > graffiti inscribed in this wall, which can be found on > www.thomasav.com/DurhamGraffiti/ (still quite buggy though!). > > I was wondering if there is a way for OpenLayers to > dynamically turn features from a single GML file into seperate layers, by > providing an array of feature id's. I've been looking through the > documentation and been googling around, but I can't seem to find anything > useful. Perhaps "OpenLayers. Filter. FeatureId" could do something like > this, but the documentation on this is quite sparse.. > > > > Ofcourse, I could just write a php script that would > pre-parse the gml into seperate, temporary gml files, but I think using > OpenLayers itself would be preferable. > > > > If anyone has any ideas, I would be very grateful! > > > > Hi > > The protocol or format that you use will give you an array > of > features. You are then free to dispatch the features to > separate > vector layers, for example based on their ids. > > I hope it helps, > > > -- > Eric Lemoine > > Camptocamp France SAS > Savoie Technolac, BP 352 > 73377 Le Bourget du Lac, Cedex > > Tel : 00 33 4 79 44 44 96 > Mail : [email protected] > http://www.camptocamp.com > > > > > >
_______________________________________________ Users mailing list [email protected] http://openlayers.org/mailman/listinfo/users
