获取显示的 OpenLayers 地图的半径

Get Radius of the displayed OpenLayers Map

如何计算所显示地图 mile/meters 中的距离?假设我有地图中心的坐标。我想知道从地图中心到 left/right 显示最多的部分 distance/radius?我已经使用 Google Map 得到了这个,但我是 Openlayers 的新手。有没有办法做到这一点?现在我在 GoogleMap 中的计算是这样的

var bounds = this.instance.getBounds();

var center = bounds.getCenter();
var ne = bounds.getNorthEast();

// r = radius of the earth in statute miles
var r = 3963.0;
var to_radians_divide = 57.2958;

// Convert lat or lng from decimal degrees into radians (divide by 57.2958)
var lat1 = center.lat() / to_radians_divide;
var lon1 = center.lng() / to_radians_divide;
var lat2 = ne.lat() / to_radians_divide;
var lon2 = ne.lng() / to_radians_divide;

// distance = circle radius from center to Northeast corner of bounds
var dis = r * Math.acos(Math.sin(lat1) * Math.sin(lat2) +
        Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1));

return dis;

有没有办法在 OpenLayers 中实现这一点?我只想找出显示地图的最左边部分与中心的距离

您也可以在 openlayers 中实现此目的。这是相关代码,我在此示例中使用的是 openlayers 3.20.0 版本。

    var size = map.getSize();
    var center = map.getView().getCenter();
    var sourceProj = map.getView().getProjection(); 
    var extent = map.getView().calculateExtent(size);

    extent = ol.proj.transformExtent(extent, sourceProj, 'EPSG:4326');
    var posSW = [extent[0], extent[1]];
    var posNE = [extent[2], extent[3]];
    center = ol.proj.transform(center, sourceProj, 'EPSG:4326'); 

    var wgs84Sphere = new ol.Sphere(6378137);
    var centerToSW = wgs84Sphere.haversineDistance(center, posSW);
    var centerToNE = wgs84Sphere.haversineDistance(center, posNE); 
    console.log("centerToSW - ",centerToSW);
    console.log("centerToNE - ",centerToNE);