Create Format.Text, and have Layer.Text use it. (Closes #1033)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@5412 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
107
lib/OpenLayers/Format/Text.js
Normal file
107
lib/OpenLayers/Format/Text.js
Normal file
@@ -0,0 +1,107 @@
|
||||
/* Copyright (c) 2006-2007 MetaCarta, Inc., published under a modified BSD license.
|
||||
* See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
|
||||
* for the full text of the license. */
|
||||
|
||||
/**
|
||||
* @requires OpenLayers/Feature/Vector.js
|
||||
* @requires OpenLayers/Geometry/Point.js
|
||||
*
|
||||
* Class: OpenLayers.Format.Text
|
||||
* Read Text format. Create a new instance with the <OpenLayers.Format.Text>
|
||||
* constructor. This reads text which is formatted like CSV text, using
|
||||
* tabs as the seperator by default. It provides parsing of data originally
|
||||
* used in the MapViewerService, described on the wiki. This Format is used
|
||||
* by the <OpenLayers.Layer.Text> class.
|
||||
*
|
||||
* Inherits from:
|
||||
* - <OpenLayers.Format>
|
||||
*/
|
||||
OpenLayers.Format.Text = OpenLayers.Class(OpenLayers.Format, {
|
||||
|
||||
/**
|
||||
* Constructor: OpenLayers.Format.Text
|
||||
* Create a new parser for TSV Text.
|
||||
*
|
||||
* Parameters:
|
||||
* options - {Object} An optional object whose properties will be set on
|
||||
* this instance.
|
||||
*/
|
||||
initialize: function(options) {
|
||||
OpenLayers.Format.prototype.initialize.apply(this, [options]);
|
||||
},
|
||||
|
||||
/**
|
||||
* APIMethod: read
|
||||
* Return a list of features from a Tab Seperated Values text string.
|
||||
*
|
||||
* Parameters:
|
||||
* data - {String}
|
||||
*
|
||||
* Returns:
|
||||
* An Array of <OpenLayers.Feature.Vector>s
|
||||
*/
|
||||
read: function(text) {
|
||||
var lines = text.split('\n');
|
||||
var columns;
|
||||
var features = [];
|
||||
// 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 geometry = new OpenLayers.Geometry.Point(0,0);
|
||||
var attributes = {};
|
||||
var style = {};
|
||||
var icon, iconSize, iconOffset, overflow;
|
||||
var set = false;
|
||||
for (var valIndex = 0; valIndex < vals.length; valIndex++) {
|
||||
if (vals[valIndex]) {
|
||||
if (columns[valIndex] == 'point') {
|
||||
var coords = vals[valIndex].split(',');
|
||||
geometry.y = parseFloat(coords[0]);
|
||||
geometry.x = parseFloat(coords[1]);
|
||||
set = true;
|
||||
} else if (columns[valIndex] == 'lat') {
|
||||
geometry.y = parseFloat(vals[valIndex]);
|
||||
set = true;
|
||||
} else if (columns[valIndex] == 'lon') {
|
||||
geometry.x = parseFloat(vals[valIndex]);
|
||||
set = true;
|
||||
} else if (columns[valIndex] == 'title')
|
||||
attributes['title'] = vals[valIndex];
|
||||
else if (columns[valIndex] == 'image' ||
|
||||
columns[valIndex] == 'icon')
|
||||
style['externalGraphic'] = vals[valIndex];
|
||||
else if (columns[valIndex] == 'iconSize') {
|
||||
var size = vals[valIndex].split(',');
|
||||
style['graphicWidth'] = parseFloat(size[0]);
|
||||
style['graphicHeight'] = parseFloat(size[1]);
|
||||
} else if (columns[valIndex] == 'iconOffset') {
|
||||
var offset = vals[valIndex].split(',');
|
||||
style['graphicXOffset'] = parseFloat(offset[0]);
|
||||
style['graphicYOffset'] = parseFloat(offset[1]);
|
||||
} else if (columns[valIndex] == 'description') {
|
||||
attributes['description'] = vals[valIndex];
|
||||
} else if (columns[valIndex] == 'overflow') {
|
||||
attributes['overflow'] = vals[valIndex];
|
||||
}
|
||||
}
|
||||
}
|
||||
if (set) {
|
||||
var feature = new OpenLayers.Feature.Vector(geometry, attributes, style);
|
||||
features.push(feature);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return features;
|
||||
},
|
||||
|
||||
CLASS_NAME: "OpenLayers.Format.Text"
|
||||
});
|
||||
Reference in New Issue
Block a user