| 49 | | * APIMethod: read |
|---|
| 50 | | * Return a list of features from a GeoRSS doc |
|---|
| 51 | | |
|---|
| 52 | | * Parameters: |
|---|
| 53 | | * data - {Element} |
|---|
| 54 | | * |
|---|
| 55 | | * Returns: |
|---|
| 56 | | * An Array of <OpenLayers.Feature.Vector>s |
|---|
| 57 | | */ |
|---|
| 58 | | read: function(doc) { |
|---|
| 59 | | if (typeof doc == "string") { |
|---|
| 60 | | doc = OpenLayers.Format.XML.prototype.read.apply(this, [doc]); |
|---|
| 61 | | } |
|---|
| 62 | | |
|---|
| 63 | | /* Try RSS items first, then Atom entries */ |
|---|
| 64 | | var itemlist = null; |
|---|
| 65 | | itemlist = this.getElementsByTagNameNS(doc, '*', 'item'); |
|---|
| 66 | | if (itemlist.length == 0) { |
|---|
| 67 | | itemlist = this.getElementsByTagNameNS(doc, '*', 'entry'); |
|---|
| 68 | | } |
|---|
| 69 | | |
|---|
| 70 | | var features = []; |
|---|
| 71 | | for(var i=0; i<itemlist.length; i++) { |
|---|
| 72 | | // this is horrendous - please change this |
|---|
| 73 | | var point = OpenLayers.Util.getNodes(itemlist[i], 'georss:point'); |
|---|
| 74 | | var lat = OpenLayers.Util.getNodes(itemlist[i], 'geo:lat'); |
|---|
| 75 | | var lon = OpenLayers.Util.getNodes(itemlist[i], 'geo:long'); |
|---|
| | 49 | * Method: createGeometryFromItem |
|---|
| | 50 | * Return an {<OpenLayers.Geometry>} from an XML dom GeoRSS Item. |
|---|
| | 51 | */ |
|---|
| | 52 | createGeometryFromItem: function(item) { |
|---|
| | 53 | var point = OpenLayers.Util.getNodes(item, 'georss:point'); |
|---|
| | 54 | var line = OpenLayers.Util.getNodes(item, 'georss:line'); |
|---|
| | 55 | var polygon = OpenLayers.Util.getNodes(item, 'georss:polygon'); |
|---|
| | 56 | var lat = OpenLayers.Util.getNodes(item, 'geo:lat'); |
|---|
| | 57 | var lon = OpenLayers.Util.getNodes(item, 'geo:long'); |
|---|
| | 58 | if (point.length > 0 || (lat.length > 0 && lon.length > 0)) { |
|---|
| 88 | | parseFloat(location[0])); |
|---|
| 89 | | |
|---|
| | 69 | parseFloat(location[0])); |
|---|
| | 70 | } else if (line.length > 0) { |
|---|
| | 71 | var coords = line[0].firstChild.nodeValue.trim().split(/\s+/); |
|---|
| | 72 | var components = []; |
|---|
| | 73 | for (var i=0; i < coords.length; i+=2) { |
|---|
| | 74 | var point = new OpenLayers.Geometry.Point(parseFloat(coords[i+1]), parseFloat(coords[i])); |
|---|
| | 75 | components.push(point); |
|---|
| | 76 | } |
|---|
| | 77 | geometry = new OpenLayers.Geometry.LineString(components); |
|---|
| | 78 | } else if (polygon.length > 0) { |
|---|
| | 79 | var coords = polygon[0].firstChild.nodeValue.trim().split(/\s+/); |
|---|
| | 80 | var components = []; |
|---|
| | 81 | for (var i=0; i < coords.length; i+=2) { |
|---|
| | 82 | var point = new OpenLayers.Geometry.Point(parseFloat(coords[i+1]), parseFloat(coords[i])); |
|---|
| | 83 | components.push(point); |
|---|
| | 84 | } |
|---|
| | 85 | geometry = new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(components)]); |
|---|
| | 86 | } |
|---|
| | 87 | return geometry; |
|---|
| | 88 | }, |
|---|
| | 89 | |
|---|
| | 90 | /** |
|---|
| | 91 | * Method: createGeometryFromItem |
|---|
| | 92 | * Return an {<OpenLayers.Feature.Vector>} from an XML dom GeoRSS Item. |
|---|
| | 93 | */ |
|---|
| | 94 | createFeatureFromItem: function(item) { |
|---|
| | 95 | var geometry = this.createGeometryFromItem(item); |
|---|
| 130 | | features.push(new OpenLayers.Feature.Vector(geometry, data)); |
|---|
| | 144 | var feature = new OpenLayers.Feature.Vector(geometry, data); |
|---|
| | 145 | feature.fid = id; |
|---|
| | 146 | return feature; |
|---|
| | 147 | }, |
|---|
| | 148 | |
|---|
| | 149 | /** |
|---|
| | 150 | * APIMethod: read |
|---|
| | 151 | * Return a list of features from a GeoRSS doc |
|---|
| | 152 | |
|---|
| | 153 | * Parameters: |
|---|
| | 154 | * data - {Element} |
|---|
| | 155 | * |
|---|
| | 156 | * Returns: |
|---|
| | 157 | * An Array of <OpenLayers.Feature.Vector>s |
|---|
| | 158 | */ |
|---|
| | 159 | read: function(doc) { |
|---|
| | 160 | if (typeof doc == "string") { |
|---|
| | 161 | doc = OpenLayers.Format.XML.prototype.read.apply(this, [doc]); |
|---|
| | 162 | } |
|---|
| | 163 | |
|---|
| | 164 | /* Try RSS items first, then Atom entries */ |
|---|
| | 165 | var itemlist = null; |
|---|
| | 166 | itemlist = this.getElementsByTagNameNS(doc, '*', 'item'); |
|---|
| | 167 | if (itemlist.length == 0) { |
|---|
| | 168 | itemlist = this.getElementsByTagNameNS(doc, '*', 'entry'); |
|---|
| | 169 | } |
|---|
| | 170 | |
|---|
| | 171 | var features = []; |
|---|
| | 172 | for(var i=0; i<itemlist.length; i++) { |
|---|
| | 173 | // this is horrendous - please change this |
|---|
| | 174 | var item = itemlist[i]; |
|---|
| | 175 | features.push(this.createFeatureFromItem(item)); |
|---|