ol/sphere裏有getLength()和getArea()可以用來測量距離和區域面積,默認的投影座標系是EPSG:3857, 其中有個options的參數,可以設置投影座標系。使用時, 可以先把幾何圖形轉換成‘EPSG:3857 ’的投影方式,然後再使用getLength和getArea。也可以設置options參數,下面是代碼:
//地圖使用的是EPSG:4326投影座標系
/**
* 格式化長度輸出
* @param {module:ol/geom/LineString~LineString} line The line.
* return {string} The formatted length.
*/
var formatLength = function (line) {
var sourceProj = map.getView().getProjection();//獲取投影座標系
//方法1
// var geom = (line.clone().transform(sourceProj, 'EPSG:3857'));
// var length = getLength(geom);
//方法2
var length = getLength(line, {projection: sourceProj/*, radius: 6371008.8*/});
var output;
if (length > 100) {
output = (Math.round(length / 1000 * 100) / 100) +
' ' + '千米';
} else {
output = (Math.round(length * 100) / 100) +
' ' + '米';
}
return output;
};
/**
* 格式化面積輸出
* @param {module:ol/geom/Polygon~Polygon}polygon The Polygon.
* @return {string} Formatted area;
*/
var formatArea = function(polygon){
var sourceProj = map.getView().getProjection();//獲取投影座標系
//方法1
// var geom = (polygon.clone().transform(sourceProj, 'EPSG:3857'));
// var area = getArea(geom);
//方法2
var area = getArea(polygon, {projection: sourceProj/*, radius: 6371008.8*/})
var output;
if(area > 10000){
output = (Math.round(area / 1000000 * 100) / 100) + ' ' + 'km<sup>2<sup>';
}else{
output = (Math.round(area * 100) / 100) + ' ' + 'm<sup>2<sup>';
}
return output;
};