Named exports from ol/geom/flat/geodesic

This commit is contained in:
Frederic Junod
2018-01-26 15:21:16 +01:00
parent 6da3e6e2c5
commit e6a491856d
2 changed files with 33 additions and 40 deletions

View File

@@ -6,7 +6,7 @@ import {intersects, getCenter} from './extent.js';
import GeometryLayout from './geom/GeometryLayout.js';
import LineString from './geom/LineString.js';
import Point from './geom/Point.js';
import _ol_geom_flat_geodesic_ from './geom/flat/geodesic.js';
import {meridian, parallel} from './geom/flat/geodesic.js';
import {clamp} from './math.js';
import {get as getProjection, equivalent as equivalentProjection, getTransform, transformExtent} from './proj.js';
import RenderEventType from './render/EventType.js';
@@ -565,9 +565,8 @@ Graticule.prototype.getMap = function() {
* @param {number} index Index.
* @private
*/
Graticule.prototype.getMeridian_ = function(lon, minLat, maxLat,
squaredTolerance, index) {
const flatCoordinates = _ol_geom_flat_geodesic_.meridian(lon,
Graticule.prototype.getMeridian_ = function(lon, minLat, maxLat, squaredTolerance, index) {
const flatCoordinates = meridian(lon,
minLat, maxLat, this.projection_, squaredTolerance);
const lineString = this.meridians_[index] !== undefined ?
this.meridians_[index] : new LineString(null);
@@ -595,9 +594,8 @@ Graticule.prototype.getMeridians = function() {
* @param {number} index Index.
* @private
*/
Graticule.prototype.getParallel_ = function(lat, minLon, maxLon,
squaredTolerance, index) {
const flatCoordinates = _ol_geom_flat_geodesic_.parallel(lat,
Graticule.prototype.getParallel_ = function(lat, minLon, maxLon, squaredTolerance, index) {
const flatCoordinates = parallel(lat,
minLon, maxLon, this.projection_, squaredTolerance);
const lineString = this.parallels_[index] !== undefined ?
this.parallels_[index] : new LineString(null);

View File

@@ -3,18 +3,16 @@
*/
import {squaredSegmentDistance, toRadians, toDegrees} from '../../math.js';
import {get as getProjection, getTransform} from '../../proj.js';
const _ol_geom_flat_geodesic_ = {};
/**
* @private
* @param {function(number): ol.Coordinate} interpolate Interpolate function.
* @param {ol.TransformFunction} transform Transform from longitude/latitude to
* projected coordinates.
* @param {number} squaredTolerance Squared tolerance.
* @return {Array.<number>} Flat coordinates.
*/
_ol_geom_flat_geodesic_.line_ = function(interpolate, transform, squaredTolerance) {
function line(interpolate, transform, squaredTolerance) {
// FIXME reduce garbage generation
// FIXME optimize stack operations
@@ -77,22 +75,20 @@ _ol_geom_flat_geodesic_.line_ = function(interpolate, transform, squaredToleranc
}
return flatCoordinates;
};
}
/**
* Generate a great-circle arcs between two lat/lon points.
* @param {number} lon1 Longitude 1 in degrees.
* @param {number} lat1 Latitude 1 in degrees.
* @param {number} lon2 Longitude 2 in degrees.
* @param {number} lat2 Latitude 2 in degrees.
* Generate a great-circle arcs between two lat/lon points.
* @param {number} lon1 Longitude 1 in degrees.
* @param {number} lat1 Latitude 1 in degrees.
* @param {number} lon2 Longitude 2 in degrees.
* @param {number} lat2 Latitude 2 in degrees.
* @param {ol.proj.Projection} projection Projection.
* @param {number} squaredTolerance Squared tolerance.
* @return {Array.<number>} Flat coordinates.
*/
_ol_geom_flat_geodesic_.greatCircleArc = function(
lon1, lat1, lon2, lat2, projection, squaredTolerance) {
* @param {number} squaredTolerance Squared tolerance.
* @return {Array.<number>} Flat coordinates.
*/
export function greatCircleArc(lon1, lat1, lon2, lat2, projection, squaredTolerance) {
const geoProjection = getProjection('EPSG:4326');
const cosLat1 = Math.cos(toRadians(lat1));
@@ -103,11 +99,11 @@ _ol_geom_flat_geodesic_.greatCircleArc = function(
const sinDeltaLon = Math.sin(toRadians(lon2 - lon1));
const d = sinLat1 * sinLat2 + cosLat1 * cosLat2 * cosDeltaLon;
return _ol_geom_flat_geodesic_.line_(
return line(
/**
* @param {number} frac Fraction.
* @return {ol.Coordinate} Coordinate.
*/
* @param {number} frac Fraction.
* @return {ol.Coordinate} Coordinate.
*/
function(frac) {
if (1 <= d) {
return [lon2, lat2];
@@ -124,7 +120,7 @@ _ol_geom_flat_geodesic_.greatCircleArc = function(
cosD - sinLat1 * Math.sin(lat));
return [toDegrees(lon), toDegrees(lat)];
}, getTransform(geoProjection, projection), squaredTolerance);
};
}
/**
@@ -136,18 +132,18 @@ _ol_geom_flat_geodesic_.greatCircleArc = function(
* @param {number} squaredTolerance Squared tolerance.
* @return {Array.<number>} Flat coordinates.
*/
_ol_geom_flat_geodesic_.meridian = function(lon, lat1, lat2, projection, squaredTolerance) {
export function meridian(lon, lat1, lat2, projection, squaredTolerance) {
const epsg4326Projection = getProjection('EPSG:4326');
return _ol_geom_flat_geodesic_.line_(
return line(
/**
* @param {number} frac Fraction.
* @return {ol.Coordinate} Coordinate.
*/
* @param {number} frac Fraction.
* @return {ol.Coordinate} Coordinate.
*/
function(frac) {
return [lon, lat1 + ((lat2 - lat1) * frac)];
},
getTransform(epsg4326Projection, projection), squaredTolerance);
};
}
/**
@@ -159,16 +155,15 @@ _ol_geom_flat_geodesic_.meridian = function(lon, lat1, lat2, projection, squared
* @param {number} squaredTolerance Squared tolerance.
* @return {Array.<number>} Flat coordinates.
*/
_ol_geom_flat_geodesic_.parallel = function(lat, lon1, lon2, projection, squaredTolerance) {
export function parallel(lat, lon1, lon2, projection, squaredTolerance) {
const epsg4326Projection = getProjection('EPSG:4326');
return _ol_geom_flat_geodesic_.line_(
return line(
/**
* @param {number} frac Fraction.
* @return {ol.Coordinate} Coordinate.
*/
* @param {number} frac Fraction.
* @return {ol.Coordinate} Coordinate.
*/
function(frac) {
return [lon1 + ((lon2 - lon1) * frac), lat];
},
getTransform(epsg4326Projection, projection), squaredTolerance);
};
export default _ol_geom_flat_geodesic_;
}