OpenLayers : How to calculate distance between two points?

前端 未结 2 1614
余生分开走
余生分开走 2021-02-14 02:40

How can one calculate the distance in OpenLayers between 2 points using Mercator projection?

Thanks

相关标签:
2条回答
  • 2021-02-14 02:47

    use 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);
        }
    
    0 讨论(0)
  • 2021-02-14 03:06

    You can use that method if using openlayers3

    Instanciate a ol.geom.LineString object between the two points and calculate the length of the line:

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

    You can then get a readable value using some formation:

            this.formatDistance = function(length) {
                if (length >= 1000) {
                    length = (Math.round(length / 1000 * 100) / 100) +
                    ' ' + 'km';
                } else {
                    length = Math.round(length) +
                    ' ' + 'm';
                }
                return length;
            }
    
    0 讨论(0)
提交回复
热议问题