Add support for reprojection of vector formats when loading data. This allows
for the definition of a 'projection' option on a layer. IF this projection object exists, it will be used to create the format's internal/external projection options, making it such that any data loaded will be reprojected to the map's projection automatically. r=pagameba (Closes #1273, #1225, #1269) git-svn-id: http://svn.openlayers.org/trunk/openlayers@5828 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -53,6 +53,13 @@ OpenLayers.Layer.Text = OpenLayers.Class(OpenLayers.Layer.Markers, {
|
||||
* Array({<OpenLayers.Feature>})
|
||||
*/
|
||||
features: null,
|
||||
|
||||
/**
|
||||
* APIProperty: formatOptions
|
||||
* {Object} Hash of options which should be passed to the format when it is
|
||||
* created. Must be passed in the constructor.
|
||||
*/
|
||||
formatOptions: null,
|
||||
|
||||
/**
|
||||
* Property: selectedFeature
|
||||
@@ -72,16 +79,6 @@ OpenLayers.Layer.Text = OpenLayers.Class(OpenLayers.Layer.Markers, {
|
||||
initialize: function(name, options) {
|
||||
OpenLayers.Layer.Markers.prototype.initialize.apply(this, arguments);
|
||||
this.features = new Array();
|
||||
if (this.location != null) {
|
||||
|
||||
var onFail = function(e) {
|
||||
this.events.triggerEvent("loadend");
|
||||
};
|
||||
|
||||
this.events.triggerEvent("loadstart");
|
||||
OpenLayers.loadURL(this.location, null,
|
||||
this, this.parseData, onFail);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -98,6 +95,43 @@ OpenLayers.Layer.Text = OpenLayers.Class(OpenLayers.Layer.Markers, {
|
||||
this.features = null;
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: loadText
|
||||
* Start the load of the Text data. Don't do this when we first add the layer,
|
||||
* since we may not be visible at any point, and it would therefore be a waste.
|
||||
*/
|
||||
loadText: function() {
|
||||
if (!this.loaded) {
|
||||
if (this.location != null) {
|
||||
|
||||
var onFail = function(e) {
|
||||
this.events.triggerEvent("loadend");
|
||||
};
|
||||
|
||||
this.events.triggerEvent("loadstart");
|
||||
OpenLayers.loadURL(this.location, null,
|
||||
this, this.parseData, onFail);
|
||||
this.loaded = true;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: moveTo
|
||||
* If layer is visible and Text has not been loaded, load Text.
|
||||
*
|
||||
* Parameters:
|
||||
* bounds - {Object}
|
||||
* zoomChanged - {Object}
|
||||
* minor - {Object}
|
||||
*/
|
||||
moveTo:function(bounds, zoomChanged, minor) {
|
||||
OpenLayers.Layer.Markers.prototype.moveTo.apply(this, arguments);
|
||||
if(this.visibility && !this.loaded){
|
||||
this.events.triggerEvent("loadstart");
|
||||
this.loadText();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: parseData
|
||||
@@ -107,7 +141,17 @@ OpenLayers.Layer.Text = OpenLayers.Class(OpenLayers.Layer.Markers, {
|
||||
*/
|
||||
parseData: function(ajaxRequest) {
|
||||
var text = ajaxRequest.responseText;
|
||||
var parser = new OpenLayers.Format.Text();
|
||||
|
||||
var options = {};
|
||||
|
||||
OpenLayers.Util.extend(options, this.formatOptions);
|
||||
|
||||
if (this.map && !this.projection.equals(this.map.getProjectionObject())) {
|
||||
options.externalProjection = this.projection;
|
||||
options.internalProjection = this.map.getProjectionObject();
|
||||
}
|
||||
|
||||
var parser = new OpenLayers.Format.Text(options);
|
||||
features = parser.read(text);
|
||||
for (var i = 0; i < features.length; i++) {
|
||||
var data = {};
|
||||
|
||||
Reference in New Issue
Block a user