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 <[email protected] <mailto:[email protected]>> 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
[email protected] <mailto:[email protected]>
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

_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to