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
This commit is contained in:
@@ -48,6 +48,7 @@ catch(e){
|
||||
"OpenLayers/Layer/Google.js",
|
||||
"OpenLayers/Layer/Grid.js",
|
||||
"OpenLayers/Layer/Marker.js",
|
||||
"OpenLayers/Layer/Text.js",
|
||||
"OpenLayers/Layer/WMS.js",
|
||||
"OpenLayers/Control.js",
|
||||
"OpenLayers/Control/PanZoom.js",
|
||||
|
||||
73
lib/OpenLayers/Layer/Text.js
Normal file
73
lib/OpenLayers/Layer/Text.js
Normal file
@@ -0,0 +1,73 @@
|
||||
/**
|
||||
* @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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
map.addLayer(layer);
|
||||
var markers = new OpenLayers.Layer.Marker( "Markers" );
|
||||
map.addLayer(markers);
|
||||
var newl = new OpenLayers.Layer.Text( "text", "./textfile.txt" );
|
||||
map.addLayer(newl);
|
||||
var icon = new OpenLayers.Icon('http://boston.openguides.org/markers/AQUA.png',new OpenLayers.Size(10,17));
|
||||
markers.addMarker(new OpenLayers.Marker(icon, new OpenLayers.LonLat(0,0)));
|
||||
markers.addMarker(new OpenLayers.Marker(icon, new OpenLayers.LonLat(-5,-10)));
|
||||
|
||||
4
textfile.txt
Normal file
4
textfile.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
point image
|
||||
10,20 http://boston.openguides.org/markers/ORANGE.png
|
||||
2,4 http://boston.openguides.org/markers/AQUA.png
|
||||
42,-71 http://boston.openguides.org/markers/PURPLE.png
|
||||
Reference in New Issue
Block a user