2011-12-18 4 views
5

Можно создать дубликат:
How to calculate distance between two locations using their longitude and latitude valueрасстояние Android высчитывает между двумя точками

Перед тем, как все дать мне какое-то образование, как земля не является идеальной сферой, и все это изменения, когда вы получаете ближе к полюсам, которые, кажется, все, что я могу найти в сети. И прежде чем спросить моего отца, который является опытным географом и моим дядей, который является квантовым физиком, который работает для НАСА, а я - скромный программист, я бы хотел сначала спросить вас, ребята!

Мне нужен только парк с мячом. Расстояние от отеля до места, куда направляется, от телефона до списка населенных пунктов площадью 720 квадратных километров, поэтому варианты не важны.

Это я прямо сейчас, пожалуйста, не бросайте ничего на меня.

mLatitude=-38.3533177 
mLongitude=144.9127674 

И это мне десять минут назад примерно в 3 км от отеля по прямой,

mLatitude=-38.3444385 
mLongitude=144.9374762 

Как рассчитать, что, чтобы получить 3 км?

Я довольно новичок в Java, поэтому я не уверен, что встроенные функции Math доступны, и я понятия не имею, что такое расчет?

Cheers,

Mike.

+0

Я спросил smilliar вопрос, проверить это: http://stackoverflow.com/questions/8286771/list-events-on-defined-area-using-google-maps – PiKey

+0

увидеть этот ответ: http://stackoverflow.com/a/8410867/265167 –

ответ

27

Вы можете использовать distanceTo() метод Location класс, чтобы получить расстояние между двумя локациями.

+0

DistanceTo() и DistanceBetween() являются некорректными, если я ввожу их в поиск. Я получаю результаты для математических уравнений, которые делают то, что вы считаете их встроенными в функции следует сделать. Они, как сказал Нострас, имеют немного другой земной радиус, но для меня мне нужен только парк с мячом. –

+0

Хорошо, вы говорите, что не знаете, как использовать этот метод? – anujprashar

4
public class Calculator { 
    private static final int earthRadius = 6371; 
    public static float calculateDistance(float lat1, float lon1, float lat2, float lon2) 
    { 
     float dLat = (float) Math.toRadians(lat2 - lat1); 
     float dLon = (float) Math.toRadians(lon2 - lon1); 
     float a = 
       (float) (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)); 
     float c = (float) (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))); 
     float d = earthRadius * c; 
     return d; 
    } 
} 
+0

Не могли бы вы рассказать мне, что является единицей результата этой функции? Кажется, он не вернулся вправо? –

+0

Кажется, функция возвращала расстояние в километрах. – NOSTRA

Смежные вопросы