Move ol.Sphere#circle to ol.geom.Polygon.circular

Previously, ol.geom.Polygon was a transitive dependency of ol.proj (since ol.proj requires ol.sphere.NORMAL, and all spheres were capable of generating circular polygons).  Instead, ol.proj should be lower-level.  Since it deals only with coordinate arrays, it shouldn't depend on all of the geometry code.

By adding a static `circular` function to `ol.geom.Polygon`, the dependency tree makes more sense.  If you want to create a polygon that approximates a circle on a sphere, you require `ol.geom.Polygon` and `ol.Sphere` (or one of the constants).

This makes room for geometries to have a `transform` method that takes projection-like arguments (meaning that `ol.geom.Geometry` will require `ol.proj`).
This commit is contained in:
Tim Schaub
2014-05-02 11:25:44 -06:00
parent 015aab8af3
commit 1110da37e1
4 changed files with 32 additions and 31 deletions

View File

@@ -1,6 +1,7 @@
goog.require('ol.Feature');
goog.require('ol.Map');
goog.require('ol.View2D');
goog.require('ol.geom.Polygon');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.source.TileWMS');
@@ -38,7 +39,7 @@ var map = new ol.Map({
var radius = 800000;
for (var x = -180; x < 180; x += 30) {
for (var y = -90; y < 90; y += 30) {
var geometry = ol.sphere.WGS84.circle([x, y], radius, 64);
vectorSource.addFeature(new ol.Feature(geometry));
var circle = ol.geom.Polygon.circular(ol.sphere.WGS84, [x, y], radius, 64);
vectorSource.addFeature(new ol.Feature(circle));
}
}