12

メルカトル図法を使用して、2点間のOpenLayersの距離をどのように計算できますか?

ありがとう

4

3 に答える 3

17

使用する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);
    }
于 2012-04-11T16:34:39.087 に答える
6

openlayers3を使用している場合は、その方法を使用できます

2 つの点の間で 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;
        }
于 2015-02-11T12:29:37.443 に答える