Here you can find the source of computeDistance(Double startLat, Double startLon, Double endLat, Double endLon)
Parameter | Description |
---|---|
startLat | a parameter |
startLon | a parameter |
endLat | a parameter |
endLon | a parameter |
public static Double computeDistance(Double startLat, Double startLon, Double endLat, Double endLon)
//package com.java2s; /*/*from w w w . j av a 2 s . co m*/ * Copyright (C) 2010-2012 Stichting Akvo (Akvo Foundation) * * This file is part of Akvo FLOW. * * Akvo FLOW is free software: you can redistribute it and modify it under the terms of * the GNU Affero General Public License (AGPL) as published by the Free Software Foundation, * either version 3 of the License or any later version. * * Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Affero General Public License included below for more details. * * The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>. */ public class Main { public static final double EARTH_RADIUS = 6371.0; /** * computes the distance between 2 points * * @param startLat * @param startLon * @param endLat * @param endLon * @return */ public static Double computeDistance(Double startLat, Double startLon, Double endLat, Double endLon) { Double distance = null; double p1 = Math.cos(startLat) * Math.cos(startLon) * Math.cos(endLat) * Math.cos(endLat); double p2 = Math.cos(startLat) * Math.sin(startLon) * Math.cos(endLat) * Math.sin(endLon); double p3 = Math.sin(startLat) * Math.sin(endLat); distance = (Math.acos(p1 + p2 + p3) * EARTH_RADIUS); // Return distance in meters distance = distance * 1000; return distance; } }