zoukankan      html  css  js  c++  java
  • 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;

        }

  • 相关阅读:
    书签
    身份证查询
    Swiper 中文API手册(share)
    seo查询命令
    前端开发薪资之各地区对比(图文分析)(share)
    新浪微博AppKey大集合(share)
    PHP乱码问题,UTF-8(乱码) (share)
    JavaScript 获取数组中最大值、最小值
    设为首页 添加到收藏夹 (share)
    javascript数组 去重
  • 原文地址:https://www.cnblogs.com/wangpei/p/1626963.html
Copyright © 2011-2022 走看看