/* $Id$ */ /** * @file * GMap Marker Loader * GeoRSS markers. * This doesn't work at the moment. */ /*global Drupal, GDownloadUrl, GXml */ Drupal.gmap.addHandler('gmap', function (elem) { var obj = this; var feed, i, j, marker, tmp; if (obj.vars.feed) { // Inject markers as soon as the icon loader is ready. obj.bind('iconsready', function () { for (i = 0; i < obj.vars.feed.length; i++) { feed = obj.vars.feed[i]; var getfn = function (markername) { return function (data, responseCode) { var xml = GXml.parse(data); var offset = 0; var items = xml.getElementsByTagName('item'); // Ugly. var f = function (name, ns) { var item = items[j].getElementsByTagName(name); if (item.length < 1) { // Try again with prefix. if (ns) { item = items[j].getElementsByTagName(ns + ':' + name); } else { return false; } } if (item.length > 0) { return item[0].firstChild.nodeValue; } else { return false; } }; for (j = 0; j < items.length ;j++) { marker = {}; marker.opts = {}; marker.opts.title = f('title'); if (obj.vars.markermode === 0) { marker.text = f('description'); } else { marker.link = f('link'); } // GeoRSS Simple if ((tmp = f('point', 'georss'))) { tmp = tmp.split(' '); marker.latitude = tmp[0]; marker.longitude = tmp[1]; } // GeoRSS GML else if ((tmp = f('pos', 'gml'))) { tmp = tmp.split(' '); marker.latitude = tmp[0]; marker.longitude = tmp[1]; } // Misc. else { marker.latitude = f('lat', 'geo') || f('latitude', 'geourl') || f('latitude', 'icbm'); marker.longitude = f('lon', 'geo') || f('longitude', 'geourl') || f('longitude', 'icbm'); } marker.markername = markername; marker.offset = offset; offset++; // Pass around the object, bindings can change it if necessary. obj.change('preparemarker', -1, marker); // And add it. obj.change('addmarker', -1, marker); } }; }; // This sucks, but jQuery and IE don't get along here. GDownloadUrl(feed.url, getfn(feed.markername)); } obj.change('markersready', -1); }); } });