Files
openlayers/lib/OpenLayers/Layer/Text.js
crschmidt 519fb6da15 Add working version of text file layer. (For those of you playing along at home, this was about 45 minutes of work -- part of which was trying to figure out why the data file wouldn't work, only to find out I had expandtab on in vim -- so I wasn't typing tabs, i was typing spaces!)
This has uncovered the fact that there is some logical error in our code somewhere: Visit markers.html then click the purple marker repeatedly.  Despite the fact that you start clicking in the sea, the marker moves north, as does your center point.

This text file layer does not yet support popups or anything else, just drawing the images at a lat/lon with an 'image' given in the textfile.


git-svn-id: http://svn.openlayers.org/trunk/openlayers@172 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
2006-05-19 02:26:00 +00:00

74 lines
2.9 KiB
JavaScript

/**
* @class
*/
OpenLayers.Layer.Text = Class.create();
OpenLayers.Layer.Text.prototype =
Object.extend( new OpenLayers.Layer.Marker(), {
/** store url of text file
* @type str */
location:null,
/**
* @constructor
*
* @param {String} name
*/
initialize: function(name, location) {
OpenLayers.Layer.Marker.prototype.initialize.apply(this, [name]);
this.location = location;
new Ajax.Request(location,
{ 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 name = ""; 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] == 'locationName')
name = vals[valIndex];
else if (columns[valIndex] == 'image')
icon.url = vals[valIndex];
else if (columns[valIndex] == 'title')
location.title = vals[valIndex];
else if (columns[valIndex] == 'description')
location.description = vals[valIndex];
}
}
if (set) {
this.addMarker(new OpenLayers.Marker(icon, location));
}
}
}
}
}
});