[OpenLayers-Users] since I'm a little dense...

Nicholas Efremov-Kendall n.e.kendall at gmail.com
Mon Aug 3 12:54:31 EDT 2009


Adrian,

Thanks a lot! (you've also inadvertently answered another question of mine).
I was considering trying to implement something similar, but with having
php-reload the page on submit, thus changing the static GML resource when
the page refreshed. I think the javascript option is a little bit more
elegant and will probably work better with my page structure (I'm switching
the body html with a php array).

Essentially, I'm re-writing one of the KML export tutorials off of the web,
I've fudged it for now with 'Content-type: application/opengis.net/gml+xml'
which I'm sure is wrong (I'm going to test it today), so if someone has any
experience with writing their own gml, or manipulating it I'd also be very
grateful for any suggestions on how to structure this bit here.

No, essentially, I don't expect particularly high-volume or prolonged use (I
also don't have tons of features).

On Mon, Aug 3, 2009 at 10:29 AM, Adrian Popa
<adrian_gh.popa at romtelecom.ro>wrote:

>  Hello Nick,
>
> Here's some code - it's not complete - because it mostly lacks variable
> definitions which should be globals. However, they should be easy to add:
>
> //layer definition
> markers = new OpenLayers.Layer.Vector("Alarms", {
>                         projection: map.displayProjection, strategies: [new
> OpenLayers.Strategy.BBOX()],
>                         protocol: new OpenLayers.Protocol.HTTP({ url:
> "kml_alarms.pl", format: new OpenLayers.Format.KML({ extractStyles: true,
> extractAttributes: true })})});
>         map.addLayer(markers);
>
>        //if you want to select the markers later, you will need to add the
> necessary functions.
>         select = new OpenLayers.Control.SelectFeature(markers,
> {toggle:true});
>         markers.events.on({ "featureselected": onMarkerSelect,
> "featureunselected": onMarkerUnselect, "visibilitychanged": onMarkerToggle
> });
>         map.addControl(select);
>         select.activate();
>
> //.........
> // onSubmit: - layer is the layer variable, options are the options packed
> as a JSON/javascript object. Call refreshLayer like: refreshLayer(markers,
> options);
>
> function refreshLayer(layer, options){
>
>     if(options == null){
>         layer.refresh({force: true});
>     }
>     else{
>         if(layer.CLASS_NAME == "OpenLayers.Layer.Vector"){
>             layer.protocol.options.params = options; //override the
> parameters sent to kml_alarms.pl
>             layer.refresh({force: true});
>         }
>     }
> }
>
> If you're using KML format, make sure your serverside script outputs
> content-type application/vnd.google-earth.kml+xml. Something similar should
> exist for GML.
> From this code you're missing a function to pack the search form into the
> "options" object. The object should look like:
> options[name] = value;
> options[name2] = value2;
>
>
> Good luck!
> Adrian.
>
> P.S. If you intent your application to run for hours and to automatically
> refresh your POIs, you should consider doing a full page reload from time to
> time so that IE won't eat all available memory...
>
>
>
> Nick Kendall wrote:
>
> Adrian, I'd love some code examples. I was toting with the idea of a gml
> writing php function that re-writes a gml file on the server, and reloading
> the pages on submit, thus changing the static resource but your way sounds
> more elegant
>
> Nicholas Efremov-Kendall  (917) 399-6939
> Sent from my mobile device
>
> On Aug 3, 2009, at 9:50 AM, Adrian Popa <adrian_gh.popa at romtelecom.ro>
> wrote:
>
>  Hello,
>
> I had a similar task - of showing dynamic POIs and I chose to implement it
> like this:
> - a Vector layer with KML data.
> - the path to the KML file is actually a path to a serverside script wich
> generates KMLs.
> - on searchbox submit a javascript creates new parameters for the
> serverside script
> - I force a layer refresh
>
> It works great - but it tends to crash Internet Explorer after a while -
> because IE keeps deleted markers in memory (silly behaviour). You can get
> around this by refreshing the whole page, but it's nasty.
>
> Let me know if you need some code examples.
> Regards,
> Adrian
>
> Nicholas Efremov-Kendall wrote:
>
> Hi all,
>
>  I'm still trying to make a dynamic POI, or marker, or points layer,
> whatever you want to call it, that changes the points in the map in response
> to user's searches. I can't use mapserver or a pre-programmed server-side
> option, so I'm forced to write my own gml or wkt. I'm still not quite sure
> how to get this GML to OL and then replace it by the next search.
>
>  I think there are two options. One of which would be to send data to a
> markers layer and have JS write the markers out. The other would be to have
> php re-write the gml file on the server and theoretically, this should
> create a new set of points each time the search is submitted. Not sure what
> the best/easiest option would be with respect to coding (either on the
> browser or server-side) or from a performance perspective. Does anyone have
> any recommendations? I'm basically copying a php/mysql kml tutorial and
> adapting it to GML (for largely ideological reasons). I've just re-read the
> GML documentation, and it states that the GML is meant to only be loaded
> once, so should I be focusing on a dynamic marker layer or what?
>
>  In effect, all I really want is a simple ajax function to load the
> POI/markers that correspond to search criteria, such that every search
> produces a unique (within a limited span of variation of course). The maps
> centering won't really change, just the make up of the sites displayed in
> the map. I can write the gml server side, and I can send the request, but
> I'm not sure what to do with the call-back or how to feed that info to OL.�
>
>  Thank you in advance for any advice/help.
> (incidentally, I'd be willing to consider contracting someone to do this)
>
>  best,
> Nick
>
> ------------------------------
>
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>
>
>
>
>
> --
> ---
> Adrian Popa
> NOC Division
> Network Engineer
> Divizia Centrul National de Operare Retea
> Departament Transport IP & Metro
> Compartiment IP Core & Backbone
> Phone: +40 21 400 3099
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20090803/76085198/attachment.html


More information about the Users mailing list