【问题标题】:how to display on map the distance between two geopoints?如何在地图上显示两个地理点之间的距离?
【发布时间】:2012-07-04 13:56:54
【问题描述】:

我正在开发一个应用程序,用户必须记录位置,然后定位汽车。当他选择定位汽车选项时,应该显示停放的汽车。我计算距离,但距离总是显示 0 米..i dono为什么?谁能告诉如何在地图上显示人与停放的汽车之间的距离...我想在地图上显示停放的汽车

【问题讨论】:

  • 发布你的代码。
  • 你绝对应该发布你的代码,否则“猜测”你到目前为止取得了什么成就以及你的具体问题是什么是一件很痛苦的事情......

标签: android


【解决方案1】:

你保存了停放的汽车的位置?你有这个人的实际位置吗?所以,那么你应该能够计算出差异并至少得到距离(至少是视线的距离)......

【讨论】:

    【解决方案2】:

    如果你有 USER 的位置和停放的汽车...

    那么这应该可以工作

    Location locationA = new Location("USER");  
    
    locationA.setLatitude(latA);  
    locationA.setLongitude(lngA);  
    
    Location locationB = new Location("Parked Car");  
    
    locationB.setLatitude(latB);  
    LocationB.setLongitude(lngB);  
    
    distance = locationA.distanceTo(locationB); 
    

    【讨论】:

    • 那么唯一的问题是你的观点。确保在 locationA.setLatitude(latA); locationA.setLongitude(lngA);您正在将纬度设置在纬度的位置,将经度设置在经度的位置。 :) 因为这也是一个烦人的问题..和我一起
    • 我已经手动给出了纬度和经度..我们如何以编程方式给出它?
    • 使用这些值 Double latA=31.556889;双 lngA=74.338303;双 latB=24.917577;双 lngB=67.019348;这些值应该起作用并给出距离。
    • 这段代码在做什么?我认为这与您发布的问题/问题无关。
    【解决方案3】:

    使用此函数计算实际距离:

    public static double distFrom (double lat1, double lng1, double lat2, double lng2 ) 
    {
        double earthRadius = 3958.75;
        double dLat = Math.toRadians(lat2-lat1);
        double dLng = Math.toRadians(lng2-lng1);
        double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
        Math.sin(dLng/2) * Math.sin(dLng/2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
        double dist = earthRadius * c;
    
        int meterConversion = 1609;
    
        return new Double(dist * meterConversion).doubleValue();
    }
    

    并像这样使用它:

    double distance = 0;
    distance=distFrom(latA,lngA,latB,lngB);
    

    如果你想将双精度转换为整数,请使用:

    int distance=0;
    distance=(int) distFrom(latA,lngA,latB,lngB);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2012-07-02
      • 2011-02-14
      • 1970-01-01
      • 2013-03-20
      • 2023-03-06
      相关资源
      最近更新 更多