openlayers 地图默认使用 3857坐标系(墨卡托坐标系) <===> 我们常用的 4326坐标系(WGS84坐标系)
地图默认的距离和我们实际使用时候的距离,是需要经过距离公式转换的,以下分别是3857坐标系下和4326坐标系下的距离转换
import {transform} from 'ol/proj';
import {getDistance} from 'ol/sphere';
/**
* 3857 转 4326 => 地图距离转换成 实际距离
* @param {*} Circle
* @returns
*/
this.formatRadiusToMeters = function(Circle) {
let radius;
let center = Circle.getCenter();
let pointOnPerimeter = [center[0], center[1] + Circle.getRadius()]
let sourceProj = map.getView().getProjection();
let c1 = transform(center, sourceProj, 'EPSG:4326');
let c2 = transform(pointOnPerimeter, sourceProj, 'EPSG:4326');
radius = getDistance(c1, c2);
return radius;
}
/**
* 4326 转 3857 => 实际距离 转换成 地图距离
* @param {*} meters
* @returns
*/
this.formatMetersToRadius = function (meters) {
let metersPerUnit = map.getView().getProjection().getMetersPerUnit();
let circleRadius = meters / metersPerUnit;
return circleRadius;
}