• 获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)


    如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)

    看标题就会明白,两个经纬度之间真实距离这个一般的地图API有自带方法,直接调用便可得到结果,一般结果都是以米为单位。最近在做Android版上的GoogleMap,找了半天API发现没有此类方法,看来只能自己实现了,接下来我就把如何计算两点之间(经纬度)的真实距离的算法写下来,原则上在各种地图版本上都通用,方便大家使用。

    Google Map API:https://developers.google.com/maps/documentation/android/

    【本文适用于android,iOS等各种平台下的地图经纬度测距】

    自己实现距离算法:

    /** 
         * 计算两点之间距离 
         * @param start 
         * @param end 
         * @return*/  
        public double getDistance(LatLng start,LatLng end){  
            double lat1 = (Math.PI/180)*start.latitude;  
            double lat2 = (Math.PI/180)*end.latitude;  
              
            double lon1 = (Math.PI/180)*start.longitude;  
            double lon2 = (Math.PI/180)*end.longitude;  
              
    //      double Lat1r = (Math.PI/180)*(gp1.getLatitudeE6()/1E6);  
    //      double Lat2r = (Math.PI/180)*(gp2.getLatitudeE6()/1E6);  
    //      double Lon1r = (Math.PI/180)*(gp1.getLongitudeE6()/1E6);  
    //      double Lon2r = (Math.PI/180)*(gp2.getLongitudeE6()/1E6);  
              
            //地球半径  
            double R = 6371;  
              
            //两点间距离 km,如果想要米的话,结果*1000就可以了  
            double d =  Math.acos(Math.sin(lat1)*Math.sin(lat2)+Math.cos(lat1)*Math.cos(lat2)*Math.cos(lon2-lon1))*R;  
              
            return d*1000;  
        }  

    举例:(我使用的百度地图的经纬度数据)

     
    LatLng start = new LatLng(39.95676, 116.401394);  
    LatLng end = new LatLng(36.63014,114.499574);  
    getDistance(start, end);  

    log日志结果为:402.21321(km)

    害怕不准确的话,可以打开百度地图首页,使用测距工具:

    看图应该知道,应该没什么问题吧。

    公式推导过程见:https://blog.csdn.net/xiejm2333/article/details/73297004

  • 相关阅读:
    C++的一道变态题
    关于"短信处理"模式的一段讨论
    Fire Balls 10——音效的添加
    Stealth——01场景的基本搭建以及基础逻辑
    Fire Balls 09——砖块的淡出,消失以及砖塔的下落
    Fire Balls 08——子弹的消失,当子弹击中自身时不可发射子弹
    Unity进阶:PlayMaker
    Fire Balls 07——子弹的命中及后续效果
    Fire Balls 06——坦克和子弹的制作以及炮台发射子弹
    Fire Balls 05——砖塔的创建,动态上升以及旋转
  • 原文地址:https://www.cnblogs.com/zhaoyanhaoBlog/p/10121499.html
Copyright © 2020-2023  润新知