diff --git a/examples/wkt.html b/examples/wkt.html new file mode 100644 index 0000000000..5c3f7e15a8 --- /dev/null +++ b/examples/wkt.html @@ -0,0 +1,50 @@ + + + + + + + + + + + WKT example + + + + + +
+ +
+
+
+
+
+ +
+ +
+

WKT example

+

Example of using the WKT parser.

+
+

See the wkt.js source to see how this is done.

+
+
WKT Well Known Text
+
+
+ +
+ + + + + + + diff --git a/examples/wkt.js b/examples/wkt.js new file mode 100644 index 0000000000..793de87854 --- /dev/null +++ b/examples/wkt.js @@ -0,0 +1,33 @@ +goog.require('ol.Map'); +goog.require('ol.RendererHint'); +goog.require('ol.View2D'); +goog.require('ol.layer.Tile'); +goog.require('ol.layer.Vector'); +goog.require('ol.parser.WKT'); +goog.require('ol.proj'); +goog.require('ol.source.OSM'); +goog.require('ol.source.Vector'); + +var raster = new ol.layer.Tile({ + source: new ol.source.OSM() +}); + +var vector = new ol.layer.Vector({ + source: new ol.source.Vector({ + parser: new ol.parser.WKT(), + projection: ol.proj.get('EPSG:4326'), + data: 'POLYGON((10.689697265625 -25.0927734375, 34.595947265625 ' + + '-20.1708984375, 38.814697265625 -35.6396484375, 13.502197265625 ' + + '-39.1552734375, 10.689697265625 -25.0927734375))' + }) +}); + +var map = new ol.Map({ + layers: [raster, vector], + renderer: ol.RendererHint.CANVAS, + target: 'map', + view: new ol.View2D({ + center: [2952104.019976033, -3277504.823700756], + zoom: 4 + }) +}); diff --git a/src/ol/parser/wktparser.js b/src/ol/parser/wktparser.js index 8e79e0a1e5..6a5838e558 100644 --- a/src/ol/parser/wktparser.js +++ b/src/ol/parser/wktparser.js @@ -2,6 +2,7 @@ goog.provide('ol.parser.WKT'); goog.require('goog.array'); goog.require('goog.string'); +goog.require('ol.Feature'); goog.require('ol.geom.Geometry'); goog.require('ol.geom.GeometryCollection'); goog.require('ol.geom.LineString'); @@ -11,12 +12,14 @@ goog.require('ol.geom.MultiPolygon'); goog.require('ol.geom.Point'); goog.require('ol.geom.Polygon'); goog.require('ol.parser.Parser'); +goog.require('ol.parser.StringFeatureParser'); /** * @constructor * @extends {ol.parser.Parser} + * @implements {ol.parser.StringFeatureParser} * @todo stability experimental */ ol.parser.WKT = function() { @@ -341,6 +344,24 @@ ol.parser.WKT.prototype.read = function(str) { }; +/** + * Parse a WKT document provided as a string. + * @param {string} str WKT document. + * @return {ol.parser.ReadFeaturesResult} Features and metadata. + */ +ol.parser.WKT.prototype.readFeaturesFromString = function(str) { + var geom = this.read(str); + var obj = /** @type {ol.parser.ReadFeaturesResult} */ + ({}); + if (goog.isDef(geom)) { + var feature = new ol.Feature(); + feature.setGeometry(geom); + obj.features = [feature]; + } + return obj; +}; + + /** * Write out a geometry as a WKT string. * @param {ol.geom.Geometry} geom The geometry to encode.