OpenLayers:如何计算两点之间的距离?

时间:2012-04-11 15:59:29

标签: openlayers distance points mercator

如何使用墨卡托投影计算OpenLayers中2点之间的距离?

由于

3 个答案:

答案 0 :(得分:16)

使用point1.distanceTo(point2)

var Geographic  = new OpenLayers.Projection("EPSG:4326"); 
var Mercator = new OpenLayers.Projection("EPSG:900913");


function distanceBetweenPoints(latlng1, latlng2){
        var point1 = new OpenLayers.Geometry.Point(latlng1.lon, latlng1.lat).transform(Geographic, Mercator);
        var point2 = new OpenLayers.Geometry.Point(latlng2.lon, latlng2.lat).transform(Geographic, Mercator);       
        return point1.distanceTo(point2);
    }

答案 1 :(得分:4)

如果使用 openlayers3

,您可以使用该方法

在两点之间设置ol.geom.LineString对象并计算线的长度:

        this.distanceBetweenPoints = function(latlng1, latlng2){
            var line = new ol.geom.LineString([latlng1, latlng2]);
            return Math.round(line.getLength() * 100) / 100;
        };

然后,您可以使用某种形式获得可读值:

        this.formatDistance = function(length) {
            if (length >= 1000) {
                length = (Math.round(length / 1000 * 100) / 100) +
                ' ' + 'km';
            } else {
                length = Math.round(length) +
                ' ' + 'm';
            }
            return length;
        }

答案 2 :(得分:0)

尝试 getLength 获得几何的球面长度:

import LineString from 'ol/geom/LineString';
import {getLength} from 'ol/sphere';

const line = new LineString([coordStart, coordEnd]);
const distance = getLength(line); 

API:https://openlayers.org/en/latest/apidoc/module-ol_sphere.html#.getLength