earth radius: change leaflet and leaflet-draw to use the radius value used by the s2 geometry library

this library is used in the ingress backend, so distance calculation, etc are far closer if we use the value from that
This commit is contained in:
Jon Atkins
2015-03-12 20:47:05 +00:00
parent 1dae89b4bc
commit 522ef34f77
3 changed files with 6 additions and 6 deletions

View File

@ -40,7 +40,7 @@ Modified by qnstie 2013-07-17 to maintain compatibility with Leaflet.draw
// to calculate intermediate points. hopeefully this will avoid the rounding issues seen in the full intermediate
// points code that have been seen
function geodesicConvertLine(startLatLng, endLatLng, convertedPoints) {
var R = 6378137; // earth radius in meters (doesn't have to be exact)
var R = 6367000.0; // earth radius in meters (doesn't have to be exact)
var d2r = Math.PI/180.0;
var r2d = 180.0/Math.PI;
@ -179,7 +179,7 @@ Modified by qnstie 2013-07-17 to maintain compatibility with Leaflet.draw
_calcPoints: function() {
var R = 6378137; //earth radius in meters (approx - taken from leaflet source code)
var R = 6367000.0; //earth radius in meters (approx - taken from leaflet source code)
var d2r = Math.PI/180.0;
var r2d = 180.0/Math.PI;
//console.log("geodesicCircle: radius = "+this._mRadius+"m, centre "+this._latlng.lat+","+this._latlng.lng);

View File

@ -1191,7 +1191,7 @@ L.LatLng.prototype = {
distanceTo: function (other) { // (LatLng) -> Number
other = L.latLng(other);
var R = 6378137, // earth radius in meters
var R = 6367000.0, // earth radius in meters
d2r = L.LatLng.DEG_TO_RAD,
dLat = (other.lat - this.lat) * d2r,
dLon = (other.lng - this.lng) * d2r,
@ -1512,7 +1512,7 @@ L.CRS.EPSG3857 = L.extend({}, L.CRS, {
project: function (latlng) { // (LatLng) -> Point
var projectedPoint = this.projection.project(latlng),
earthRadius = 6378137;
earthRadius = 6367000.0;
return projectedPoint.multiplyBy(earthRadius);
}
});
@ -8299,7 +8299,7 @@ L.Control.Scale = L.Control.extend({
_update: function () {
var bounds = this._map.getBounds(),
centerLat = bounds.getCenter().lat,
halfWorldMeters = 6378137 * Math.PI * Math.cos(centerLat * Math.PI / 180),
halfWorldMeters = 6367000.0 * Math.PI * Math.cos(centerLat * Math.PI / 180),
dist = halfWorldMeters * (bounds.getNorthEast().lng - bounds.getSouthWest().lng) / 180,
size = this._map.getSize(),

View File

@ -1602,7 +1602,7 @@ L.GeometryUtil = {
area += ((p2.lng - p1.lng) * d2r) *
(2 + Math.sin(p1.lat * d2r) + Math.sin(p2.lat * d2r));
}
area = area * 6378137.0 * 6378137.0 / 2.0;
area = area * 6367000.0 * 6367000.0 / 2.0;
}
return Math.abs(area);