本文介绍了当您在java中知道经度和纬度时,计算以米为单位的距离的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 重复: 使用纬度/经度Java中的值 如何计算两个纬度经度点之间的距离?Duplicate:Working with latitude/longitude values in JavaHow do I calculate distance between two latitude longitude points?我需要计算两个坐标给出的两点之间的距离。我正在研究的项目是一个Java项目,所以Java代码会很棒,但也可以给出伪代码,然后我可以自己实现:)I need to calculate the distance between two points given by two coordinates. The project I am working on is a Java-project, so Java-code will be great, but pseudo-code can also be given, then I can implement it myself :)您可能知道,有三种表示坐标的方法:As you probably know, there are three ways to represent coordinates: 度数:分钟:秒(49°30'00N ,123°30'00W) 度:十进制分钟(49°30.0', - 123°30.0'),(49d30.0m,-123d30.0') 十进制度(49.5000°, - 123.5000°),一般有4-6个十进制数。这是我的坐标的第三种方式,所以这个值的代码将是首选:)It's the third way my coordinates are given in, so the code for this values will be preferred :)推荐答案基于关于stackoverflow的另一个问题,我得到了这个代码..这计算结果以米为单位,而不是以英里为单位:)Based on another question on stackoverflow, I got this code.. This calculates the result in meters, not in miles :) public static float distFrom(float lat1, float lng1, float lat2, float lng2) { double earthRadius = 6371000; //meters 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)); float dist = (float) (earthRadius * c); return dist; } 这篇关于当您在java中知道经度和纬度时,计算以米为单位的距离的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
09-06 06:01