javascript - 计算 Java 与 Javascript 之间的距离

标签 javascript java android google-maps google-maps-api-3

因此,我在 Javascript 中使用 google.maps.geometry.spherical.computeDistanceBetween,并在 Java 中使用来自 SphericalUtil 的computeDistanceBetween。

https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/SphericalUtil.java

对于相同的位置,我得到不同的距离。我可以做些什么来将它们校准为相同的,或者我可以使用两个库可以在前端(Javascript)和后端(Java)中获得类似的结果吗?

下面是一些值和示例:

在 JavaScript 中:

var from = new google.maps.LatLng(33.44138, -111.97500000000002);
var to = new google.maps.LatLng(33.505904166596224, -112.09470748901367);
var distanceBetween = google.maps.geometry.spherical.computeDistanceBetween(from, to);
console.log(distanceBetween);

在 Java 中:

LatLng from = new LatLng(Float.parseFloat("33.44138"), Float.parseFloat("-111.97500000000002"));
LatLng to = new LatLng(Float.parseFloat("33.505904166596224"), Float.parseFloat("-112.09470748901367"));
double distanceBetween = SphericalUtil.computeDistanceBetween(from, to);
System.out.println(distanceBetween);

在 Java 中使用 Double 而不是 Float:

LatLng from = new LatLng(Double.parseDouble("33.44138"), Double.parseDouble("-111.97500000000002"));
LatLng to = new LatLng(Double.parseDouble("33.505904166596224"), Double.parseDouble("-112.09470748901367"));
double distanceBetween = SphericalUtil.computeDistanceBetween(from, to);
System.out.println(distanceBetween);

Javascript 值为:13234.355969270651 Java(浮点)值为:13219.474110913057 Java( double )值为:13219.565680296535

谢谢!

最佳答案

检查文档以了解所使用的地球半径值。

尝试使用此代码将结果与其他 2 个代码进行比较。

Tier3Toolbox.EARTH_RADIUS = 6378137; /* Equitorial Radius instead of 6371000 */
Tier3Toolbox.toRad = 
    function (num) {
        return num * Math.PI / 180;
    };  
Tier3Toolbox.calculateDistance =
    function(lat1, lon1, lat2, lon2){
        var dLat = this.toRad(lat2 - lat1);
        var dLon = this.toRad(lon2 - lon1);
        var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(this.toRad(lat1)) * 
                Math.cos(this.toRad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
        var distance = this.EARTH_RADIUS * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        return distance;
    }

关于javascript - 计算 Java 与 Javascript 之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47946599/

相关文章:

java - 为什么不能扩展集合泛型类型

android - 如何在android中隐藏工具栏?

android - 递增/递减按钮.onclicklistener

javascript - Intern 的 pollUntil 不适用于 Chrome

javascript - 使用 "(function() { ....[js code here]...... })();"包装 Angular javascript 文件有什么好处

javascript - UTF-8 csv 编码

javascript - 在带 knockout 的选择框中设置和修改值

java - 在服务器上提交表单之前对密码进行哈希处理

java - 更新语句上的 odbc 驱动程序语法错误

android - 在 SlidingMenu 上滑动一半屏幕