CRS.Earth
# 概述
CRS.Earth
是一个用于表示地球坐标系的类,它继承自 CRS
基类,并针对地图球体模型进行扩展,主要用于大圆距离计算和经纬度循环处理
# 源码分析
# 源码实现
CRS.Earth
对象的源码实现如下:
export var Earth = Util.extend({}, CRS, {
wrapLng: [-180, 180], //定义经度循环范围,当地图横向滚动时,经度值会在该区间内自动循环,如 190° -> -170°
R: 6371000, // 定义地球半径,单位为米,用于计算两点间的距离
// 计算两点间的大圆距离,采用 Haversine 公式计算
distance: function (latlng1, latlng2) {
var rad = Math.PI / 180,
lat1 = latlng1.lat * rad,
lat2 = latlng2.lat * rad,
sinDLat = Math.sin(((latlng2.lat - latlng1.lat) * rad) / 2),
sinDLon = Math.sin(((latlng2.lng - latlng1.lng) * rad) / 2),
a =
sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,
c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return this.R * c;
},
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 注意事项
CRS.Earth
也是一个基础对象,一般不会直接使用,而是作为其它参考坐标系的基础,因为CRS.Earth
没有code
、projection
和transformation
。
# 总结
在 Leaflet 中,CRS.Earth
提供了基于球体模型的基础地理处理能力。
编辑 (opens new window)
上次更新: 2025/04/21, 05:18:23