diff --git a/lib/OpenLayers/Layer/Text.js b/lib/OpenLayers/Layer/Text.js index 49549ac49d..35239ff033 100644 --- a/lib/OpenLayers/Layer/Text.js +++ b/lib/OpenLayers/Layer/Text.js @@ -21,60 +21,78 @@ OpenLayers.Layer.Text.prototype = { method: 'get', onComplete:this.parseData.bind(this) } ); }, parseData: function(ajaxRequest) { - var text = ajaxRequest.responseText; - var lines = text.split('\n'); - var columns; - // length - 1 to allow for trailing new line - for (var lcv = 0; lcv < (lines.length - 1); lcv++) { - var currLine = lines[lcv].replace(/^\s*/,'').replace(/\s*$/,''); - - if (currLine.charAt(0) != '#') { /* not a comment */ - - if (!columns) { - //First line is columns - columns = currLine.split('\t'); - } else { - var vals = currLine.split('\t'); - var location = new OpenLayers.LonLat(0,0); - var title = ""; var description = ""; - var icon = new OpenLayers.Icon('http://boston.openguides.org/markers/AQUA.png',new OpenLayers.Size(10,17)); - var set = false; - for (var valIndex = 0; valIndex < vals.length; valIndex++) { - if (vals[valIndex]) { - if (columns[valIndex] == 'point') { - var coords = vals[valIndex].split(','); - location.lat = parseFloat(coords[0]); - location.lon = parseFloat(coords[1]); - set = true; - } else if (columns[valIndex] == 'lat') { - location.lat = parseFloat(vals[valIndex]); - set = true; - } else if (columns[valIndex] == 'lon') { - location.lon = parseFloat(vals[valIndex]); - set = true; - } else if (columns[valIndex] == 'title') - title = vals[valIndex]; - else if (columns[valIndex] == 'image') - icon.url = vals[valIndex]; - else if (columns[valIndex] == 'title') - title = vals[valIndex]; - else if (columns[valIndex] == 'description') { - description = vals[valIndex]; - } - } - } - if (set) { - var marker = new OpenLayers.Marker(location, icon); - var popup = new OpenLayers.Popup(null, location, null, '

'+title+'

'+description+'

'); - marker.events.register('click', this, function(evt) { this.map.addPopup(popup); Event.stop(evt); } ); //this.map.addPopup(popup); }); - this.addMarker(marker); - } - } - } + var text = ajaxRequest.responseText; + var lines = text.split('\n'); + var columns; + // length - 1 to allow for trailing new line + for (var lcv = 0; lcv < (lines.length - 1); lcv++) { + var currLine = lines[lcv].replace(/^\s*/,'').replace(/\s*$/,''); + + if (currLine.charAt(0) != '#') { /* not a comment */ + + if (!columns) { + //First line is columns + columns = currLine.split('\t'); + } else { + var vals = currLine.split('\t'); + var location = new OpenLayers.LonLat(0,0); + var title; var url; + var icon, iconSize, iconOffset; + var set = false; + for (var valIndex = 0; valIndex < vals.length; valIndex++) { + if (vals[valIndex]) { + if (columns[valIndex] == 'point') { + var coords = vals[valIndex].split(','); + location.lat = parseFloat(coords[0]); + location.lon = parseFloat(coords[1]); + set = true; + } else if (columns[valIndex] == 'lat') { + location.lat = parseFloat(vals[valIndex]); + set = true; + } else if (columns[valIndex] == 'lon') { + location.lon = parseFloat(vals[valIndex]); + set = true; + } else if (columns[valIndex] == 'title') + title = vals[valIndex]; + else if (columns[valIndex] == 'image' || + columns[valIndex] == 'icon') + url = vals[valIndex]; + else if (columns[valIndex] == 'iconSize') { + var size = vals[valIndex].split(','); + iconSize = new OpenLayers.Size(parseFloat(size[0]), + parseFloat(size[1])); + } else if (columns[valIndex] == 'iconOffset') { + var offset = vals[valIndex].split(','); + iconOffset = new OpenLayers.Pixel(parseFloat(offset[0]), + parseFloat(offset[1])); + } else if (columns[valIndex] == 'title') { + title = vals[valIndex]; + } else if (columns[valIndex] == 'description') { + description = vals[valIndex]; + } + } + } + if (set) { + var data = {}; + data['iconURL'] = url; + data['iconSize'] = iconSize; + data['iconOffset'] = iconOffset; + data['popupContentHTML'] = '

'+title+'

'+description+'

'; + var feature = new OpenLayers.Feature(this, location, data); + var marker = feature.createMarker(); + marker.events.register('click', feature, this.markerClick); + this.addMarker(marker); + } + } + } } }, - testFunction: function() { - alert('tesT'); + markerClick: function(evt) { + for(var i=0; i < this.layer.map.popups.length; i++) { + this.layer.map.removePopup(this.layer.map.popups[i]); + } + this.layer.map.addPopup(this.createPopup()); + Event.stop(evt); } });