Google Maps API 进级:计算折线长度

转自:http://hi.baidu.com/xfm_zhr/blog/item/fbfe5c274a87a904908f9d28.html

1.       如何编码经纬度

对于静态、不需要修改的数据,可利用Google提供的在线编码工具进行获取。详情参见相关文档。

对于需动态生成的数据,可根据Google提供的编码算法说明,对进行编码实现使用。有关编码说明参加Google的相关文档。

2.       有关计算折线长度

基本思路:将地球作为一个完美球体。计算折线相邻两点的距离(弧长,半径*弧度)进行累加即可获取。

因为以上方法采取了近似处理,因此获取的值仅供参考。

几个关于GlatLng的方法:

GlatLng.lat();//返回角度值纬度

GlatLng.lng();//返回角度值经度

GlatLng.latRadians();//返回弧度值纬度

GlatLng.lngRadians();//返回弧度值经度。

计算弧长示例:

function getDistance2(from, to, unit) {

        //地球半径

        var R = 6378.137;

        //千米英里转化进制

        var M = 1.609344;

        with (Math)

         {

            var lat1 = from.latRadians();

            var lng1 = from.lngRadians();

            var lat2 = to.latRadians();

            var lng2 = to.lngRadians();

           

            var dist = 2 * asin(sqrt( pow( (sin( (lat1 - lat2) /2 ) ), 2) + cos(lat1) * cos(lat2) * pow( (sin( (lng1 - lng2) / 2) ) ,2) ) ) * R;

        }

       

        if (unit=="M")

        {

            dist = dist / M;

        }

        return dist;

}

计算折线总长示例:

   function getDistance() {

        var dist = 0;

       

        //折线上总的顶点数

        var count = polyline.getVertexCount();

       

        //历遍所有顶点,计算距离

        for(var i=0; i<count-1; i++){

            dist += getDistance2(polyline.getVertex(i), polyline.getVertex(i+1));

        }

        return dist;

    }

原文地址:https://www.cnblogs.com/wangpei/p/1626963.html