Shouldn't be braging about too early. Now I get this: <?xml version="1.0" encoding="UTF-8"?> <ows:ExceptionReport version="1.0.0" xsi:schemaLocation="http://www.opengis.net/ows http://karsamaki.digikartta.net:80/asemakaavat/schemas/ows/1.0.0/owsExceptionReport.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows"> <ows:Exception exceptionCode="NoApplicableCode" locator="org.vfny.geoserver.util.requests.readers.XmlRequestReader"> <ows:ExceptionText>org.xml.sax.SAXParseException: Content is not allowed in prolog. Content is not allowed in prolog.</ows:ExceptionText> </ows:Exception> </ows:ExceptionReport>
Maybe a geoserver issue, but any thoughts..? - mika - Lehtonen, Mika kirjoitti: > I got it working. Not the highlighting, but GetFeature. Those of you who > don't know what I have been up to, I've been trying to do what is done > in http://www.openlayers.org/dev/examples/getfeatureinfo.html , but with > GetFeature. With this code I get feature's data by clicking it like in > that example. You can decode the filter e.g. in > http://meyerweb.com/eric/tools/dencoder/ . What was wrong with other > browsers than FF3, was that I forgot apostrophes off around the filter > declaration. In FF3, I noticed that it doesn't care about URL encoding, > just stick your staff into it as it is. > > cheers, > mika > > map.events.register('click', null, function (e) { > OpenLayers.Util.getElement('nodelist').innerHTML = "Please wait..."; > var hiiri = wfs.map.getLonLatFromPixel(e.xy); > var hiirixy = (hiiri.lat+','+hiiri.lon); > > var url = wfs.getFullRequestString({ > SERVICE: 'WFS', > VERSION: '1.1.0', > REQUEST: 'GetFeature', > OUTPUTFORMAT: 'json', > PROPERTYNAME: 'the_geom,LAYER', > MAXFEATURES: 5, > TYPENAME: 'dikanet:karsa_region', > SRSNAME: 'EPSG:2393', > FILTER: > '%3Cwfs%3AFeatureCollection%20xmlns%3Awfs%3D%22http%3A//www.opengis.net/wfs%22%3E%3Cgml%3AfeatureMember%20xmlns%3Agml%3D%22http%3A//www.opengis.net/gml%22%3E%3CFilter%3E%3CContains%3E%3CPropertyName%3Ethe_geom%3C/PropertyName%3E%3Cgml%3APoint%3E%3Cgml%3Acoordinates%3E%7Bhiirixy%7D%3C/gml%3Acoordinates%3E%3C/gml%3APoint%3E%3C/Contains%3E%3C/Filter%3E%3C/gml%3AfeatureMember%3E%3C/wfs%3AFeatureCollection%3E' > },"http://karsamaki.digikartta.net/asemakaavat/wfs" > ); > > OpenLayers.loadURL(url,'',this,yourFunction); > > Event.stop(e); > }); > > function yourFunction(response) { // this will only zoom into selected > feature.. > // alert(response.responseText); > g = new OpenLayers.Format.JSON(); > jsonni = g.read(response.responseText); > var rajat = new > OpenLayers.Bounds(jsonni.bbox[0],jsonni.bbox[1],jsonni.bbox[2],jsonni.bbox[3]); > map.zoomToExtent(rajat); > > }; > > Lehtonen, Mika kirjoitti: > >> Hi Brad, >> >> cool site you have! >> >> You know, I went on with my own style, as stubborn is my middle name.. I >> got my code working so far; to get JSON out of the selected polygon >> (nice thing to move on .. ;-) ), but... >> you don't happen to know how I'll get this working also in IE. Here is >> the snippet. I guess it got something to do with the URL encoding ...? >> Debugger blames the filter, which obviously is the guilty one. (IE excl. >> :-) ). >> >> map.events.register('click', null, function (e) { >> OpenLayers.Util.getElement('nodelist').innerHTML = "Odota hetki..."; >> var hiiri = wfs.map.getLonLatFromPixel(e.xy); >> var hiirixy = (hiiri.lat+','+hiiri.lon); >> >> var url = wfs.getFullRequestString({ >> SERVICE: 'WFS', >> VERSION: '1.1.0', >> REQUEST: 'GetFeature', >> OUTPUTFORMAT: 'json', >> PROPERTYNAME: 'the_geom,LAYER', >> MAXFEATURES: 5, >> TYPENAME: 'dikanet:karsa_region', >> SRSNAME: 'EPSG:2393', >> FILTER: <wfs:FeatureCollection >> xmlns:wfs="http://www.opengis.net/wfs"><gml:featureMember >> xmlns:gml="http://www.opengis.net/gml"><Filter> >> >> <Contains><PropertyName>the_geom</PropertyName><gml:Point><gml:coordinates>{hiirixy}</gml:coordinates></gml:Point></Contains> >> </Filter></gml:featureMember></wfs:FeatureCollection> >> }, >> "http://karsamaki.digikartta.net/asemakaavat/wfs" >> ); >> .............................................. >> >> OpenLayers.loadURL(url,'',this,testJSON); >> Event.stop(e); >> }); >> >> ............................................ >> function testJSON (response) { >> // alert(response.responseText); >> g = new OpenLayers.Format.JSON(); >> jsonni = g.read(response.responseText); >> var rajat = new >> OpenLayers.Bounds(jsonni.bbox[0],jsonni.bbox[1],jsonni.bbox[2],jsonni.bbox[3]); >> map.zoomToExtent(rajat); >> }; >> .......................................................... >> Doesn't do anything else so far than zooms into the selected polygon. >> >> - mika - >> >> >> Brad Spencer kirjoitti: >> >> >>> Mika, >>> >>> I typically use getFeature when I need the geometry as well and one way to >>> reduce the number of polygons returned is to set up a Shift-drag event that >>> can be used to reduce the BBox of the GetFeature request to be limited to >>> the user's discretion. However, this will be a rectangle and will probably >>> still return more or less polygons than you need. The request I use >>> typically looks something like this: >>> >>> &typename=MESHBLOCKS&datastore=ABS&service=wfs&request=GetFeature&filter=<Fi >>> lter><BBOX><Box><coordinates>151.042611,-33.947448%20151.043,-33.9</coordina >>> tes></Box></BBOX></Filter>&outputformat=BXFS >>> >>> This returns an GML file into DOM that I can parse to get all the >>> coordinates of the polygons returned. >>> >>> However, if you are interacting via a single clicking process and do not >>> need the geometry then all you need is a getFeatureInfo request. I have >>> built an application that does this see >>> http://demos.numaps.com.au/polypika.html. Just doubleclick any red polygon >>> and what happens in the background is the click generates a getFeatureInfo >>> request which looks something like: >>> >>> REQUEST=GetFeatureInfo&VERSION=1.1.3&SERVICE=WMS&SRS=EPSG:900913&BBOX=128495 >>> 99.340828,-3816959.290073,12980306.659172,-3708418.709927&X=474&Y=369&QUERY_ >>> LAYERS=INDIGENOUS_LOC:ABS&WIDTH=855&HEIGHT=710&RADIUS=0&FEATURE_COUNT=1&INFO >>> _FORMAT=text/xml >>> >>> This returns a an XML file into the DOM which I can parse to get the Polygon >>> Id. Then I do the SLD thing. >>> >>> Hope these suggestions help you. >>> >>> Cheers, Brad Spencer.... >>> >>> >>> >>> -----Original Message----- >>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On >>> Behalf Of Lehtonen, Mika >>> Sent: Tuesday, September 09, 2008 10:43 PM >>> To: Openlayers Users List >>> Subject: Re: [OpenLayers-Users] Highlighting the selected geometry >>> >>> Yep, >>> thanks. I am using Geoserver so SLD approach is ok. One stupid question. >>> I started to play around with GetFeature, but how can you get just the >>> feature you clicked. I tried something similar like in OL example [1], >>> but with GetFeature and WFS. So the following is what I tried: >>> >>> map.events.register('click', null, function (e) { >>> OpenLayers.Util.getElement('nodelist').innerHTML = "Odota hetki..."; >>> var url = wfs.getFullRequestString({ >>> SERVICE: 'WFS', >>> VERSION: '1.0.0', >>> REQUEST: 'GetFeature', >>> OUTPUTFORMAT: 'text/xml; subtype=gml/2.1.2', >>> PROPERTYNAME: 'LAYER', >>> MAXFEATURES: 3, >>> TYPENAME: 'dikanet:karsa_region', >>> SRSNAME: 'EPSG:2393', >>> BBOX: wfs.map.getExtent().toBBOX()}, >>> "http://karsamaki.digikartta.net/asemakaavat/wfs" >>> ); >>> OpenLayers.loadURL(url,'',this,setHTML); >>> Event.stop(e); >>> }); >>> >>> function setHTML(response) { >>> OpenLayers.Util.getElement('nodelist').innerHTML = >>> response.responseText; >>> }; >>> >>> But this gives me all the feautures in the current viewport. How can I >>> filter out the rest and just take the one I clicked? >>> >>> - mika - >>> >>> [1] http://www.openlayers.org/dev/examples/getfeatureinfo.html >>> >>> Brad Spencer kirjoitti: >>> >>> >>> >>>> Mika, >>>> >>>> Does the map server support (style Layer descriptors) SLDs? If so this is >>>> the best way to highlight polygons in my experience. Vectors may misalign >>>> depending on browsers/projections. Also there are capacity limits on >>>> >>>> >>>> >>> vectors >>> >>> >>> >>>> at the client which can be problematic. The easiest way to make sure this >>>> does not happen is to have the layer render again via a new SLD. What I do >>>> is run a GetFeatureinfo(WMS) or getfeaturte(WFS) bring back the list of >>>> polygons (must have unique identifiers) then I build an SLD on the fly via >>>> >>>> >>>> >>> a >>> >>> >>> >>>> PHP script save it and then apply that to the current layer. Of course if >>>> you have the polygon names already accessible in the client (e.g. in a >>>> select box) then you can just jump to the SLD building part. Works a >>>> >>>> >>>> >>> treat. >>> >>> >>> >>>> Cheers, Brad.... >>>> >>>> -----Original Message----- >>>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] >>>> >>>> >>>> >>> On >>> >>> >>> >>>> Behalf Of Lehtonen, Mika >>>> Sent: Tuesday, September 09, 2008 5:02 PM >>>> To: Openlayers Users List >>>> Subject: [OpenLayers-Users] Highlighting the selected geometry >>>> >>>> Hi, >>>> >>>> is there any examples available which I could use with the following >>>> task? Tried to google, but didn't find any good ones. >>>> >>>> I have two wms-layers in my map. The another one includes some polygons. >>>> In order to get some info out when clicking the polygon, I built a >>>> system which does that. But I would also like to get the selected >>>> polygon to render with a different style, so that it'd be sort of >>>> highlighted. I thought I could copy it into vector layer having >>>> different style. But frankly said, I don't know how to do it. Just >>>> learning OL. >>>> >>>> - mika - >>>> _______________________________________________ >>>> Users mailing list >>>> [email protected] >>>> http://openlayers.org/mailman/listinfo/users >>>> >>>> >>>> >>>> >>> _______________________________________________ >>> Users mailing list >>> [email protected] >>> http://openlayers.org/mailman/listinfo/users >>> >>> >>> >> _______________________________________________ >> Users mailing list >> [email protected] >> http://openlayers.org/mailman/listinfo/users >> >> > > _______________________________________________ > Users mailing list > [email protected] > http://openlayers.org/mailman/listinfo/users > _______________________________________________ Users mailing list [email protected] http://openlayers.org/mailman/listinfo/users
