Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算Google Maps v2上当前位置和标记之间的距离_Java_Android_Google Maps_Haversine - Fatal编程技术网

Java 计算Google Maps v2上当前位置和标记之间的距离

Java 计算Google Maps v2上当前位置和标记之间的距离,java,android,google-maps,haversine,Java,Android,Google Maps,Haversine,我是新来的……请帮帮我 我想开发android应用程序,计算用户当前位置和标记之间的距离。它将计算用户触摸制造商时的距离。我想使用哈弗森公式,但我不知道如何在公式中输入当前位置和标记坐标……例如,StartP将是我的当前位置坐标,EndP将是我的标记坐标 public double CalculationByDistance(LatLng StartP, LatLng EndP) { int Radius=6371;//radius of earth in Km

我是新来的……请帮帮我

我想开发android应用程序,计算用户当前位置和标记之间的距离。它将计算用户触摸制造商时的距离。我想使用哈弗森公式,但我不知道如何在公式中输入当前位置和标记坐标……例如,StartP将是我的当前位置坐标,EndP将是我的标记坐标

public double CalculationByDistance(LatLng StartP, LatLng EndP) {
    int Radius=6371;//radius of earth in Km         
    double lat1 = StartP.latitude;
    double lat2 = EndP.latitude;
    double lon1 = StartP.longitude;
    double lon2 = EndP.longitude;
    double dLat = Math.toRadians(lat2-lat1);
    double dLon = Math.toRadians(lon2-lon1);
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
    Math.sin(dLon/2) * Math.sin(dLon/2);
    double c = 2 * Math.asin(Math.sqrt(a));
    double valueResult= Radius*c;
    double km=valueResult/1;
    DecimalFormat newFormat = new DecimalFormat("####");
    int kmInDec =  Integer.valueOf(newFormat.format(km));
    double meter=valueResult%1000;
    int  meterInDec= Integer.valueOf(newFormat.format(meter));
    Log.i("Radius Value",""+valueResult+"   KM  "+kmInDec+" Meter   "+meterInDec);

    return Radius * c;
 }

公式接受的参数类型为
LatLng
。现在您还没有指定代码中的任何位置。
但是在函数本身中,你会发现你给函数的只是起点和终点的纬度和经度。因此,如果您在输入此函数时遇到困难,您可以这样做。
该函数要求纬度和经度采用双值形式。从地图上得到的是纬度和经度的双重值。 因此,您可以像这样直接将它们传递给这个函数

public double CalculationByDistance(double latitude1, double longitude1, double latitude2, double longitude2) {
        int Radius=6371;//radius of earth in Km         
        double lat1 = latitude1;
        double lat2 = latitude2;
        double lon1 = longitude1;
        double lon2 = longitude2;
        double dLat = Math.toRadians(lat2-lat1);
        double dLon = Math.toRadians(lon2-lon1);
        double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
        Math.sin(dLon/2) * Math.sin(dLon/2);
        double c = 2 * Math.asin(Math.sqrt(a));
        double valueResult= Radius*c;
        double km=valueResult/1;
        DecimalFormat newFormat = new DecimalFormat("####");
        Integer kmInDec =  Integer.valueOf(newFormat.format(km));
        double meter=valueResult%1000;
        Integer  meterInDec= Integer.valueOf(newFormat.format(meter));
        System.out.println("Radius Value "+valueResult+"   KM  "+kmInDec+" Meter   "+meterInDec);

        return Radius * c;
     }

其中
latitude1
longitude1
是起点的坐标,2是终点的坐标。

您的图像没有显示在我们的终点。我已经编辑了帖子…请帮助我复制问题,但请尝试这个。[链接][1][1]:如何将当前位置和标记位置传递给函数???我仍然不明白…你从上面的答案中没有得到什么?我不明白函数如何得到我的当前位置和标记坐标…我应该如何将这些值传递给函数?我是android开发的新手,所以我不太了解..你实现了使用maps api的一部分吗??在手机上获取位置信息??请先实施这一点。哈弗森是最后一个要实施的公司。要做到这一点,谷歌需要做一些事情,并遵循官方文件