views:

109

answers:

4

if im loading data for the markers from a database do i write the output queried from the db into a javascript file or is there a cleaner way of doing it?

thanks

A: 

The needed Javascript can of course be wrapped in whatever language you prefer to use, see e.g. pymaps for a Python example. While pymaps is actualally inserting the JS code into an HTML template, if you're writing a web app you can perfectly well choose to serve that JS code on the fly at an appropriate URL and use that URL in a <script> tag in your pages.

Alex Martelli
+1  A: 

Yeah, writing to a file is a good way to do it. Just write the data as JSON. Your file would look like:

var map = {waypoints:[...]};

And then you can do:

for(var i=o; i<map.waypoints.length; ++i) {
  addWaypoint(map.waypoints[i]);
}

I actually do some static caching of nodes using this method: http://www.trailbehind.com/site_media/javascript/gen/national-parks.js

We use that set of National Parks a lot, so we cache it. But we also have urls where you can fetch JSON for a node on the fly, such as: http://www.trailbehind.com/map/node/7538973/632/735/

This URL gets the map for node 7538973, and specifies the dimensions of their map in pixels as well.

Andrew Johnson
A: 

I agree with Andrew's answer (+1).

I guess the only point I would add is that rather than including some server side generated JavaScript, you could use an AJAX request to grab that data. Something like:

var request = new Request.JSON (url: 'get_some_json.php',
                           onSuccess: function(data) {
                               // do stuff with the data
                           }).get ();

(This is a Mootools AJAX thing, but you could use any kind of AJAX request object).

Edit: ChrisB makes a good point about the performance of parsing JSON responses and re-reading my answer I certainly didn't make myself clear. I think AJAX requests are suitable for re-requesting data based on parameters generated by user interaction. I guess an example use case might be, a user filtering the data displayed on the map. You might grab the filtered data via an AJAX/SJON request rather than re-loading the page.

Cannonade
A: 

Depending on the size of your application, you may want to consider printing out plain javascript.

I have a map that uses server-side clustering, so markers update frequently. I found that parsing JSON markers slowed the app significantly, and simply wasn't necessary.

If speed is an issue, I'd suggesting removing all of the unnecessary layers possible (JSON, AJAX, etc.). If it's not, you'll be just fine with JSON, which is cleaner.

Chris B