2016-10-01 7 views
0

, так что мне было интересно, существует ли существующий код/​​библиотека, что позволило мне рассчитать новую пару координат gps: расстояние, пару широт и longituide и подшипник.Рассчитать новые GPS-координаты из 1 набора координат и расстояния?

Надеюсь, вы, ребята, можете дать мне понимание.

ура!

+0

[Вот ссылка] (http://stackoverflow.com/questions/37348207/find-location- 1-км-в-180 градусов-юг от моего местоположения/37349396 # 37349396) к предыдущему ответу. Вы могли бы использовать указанную там библиотеку (если лицензия в порядке) или просто захватить основную идею и написать свой собственный код. –

+0

Эй, спасибо человеку! что я искал – TheQ

ответ

0

Ответ, который мне дал, был из этой ссылки: stackoverflow.com/questions/37348207/find-location-1-km-away-in-180-degree-south-from-my-location/37349396# 37349396

Используя следующую библиотеку: https://github.com/JavadocMD/simplelatlng но метод, который делает вычисление ниже:

/** 
    * <p> 
    * Calculate the end point of traveling along a great-circle path from a 
    * given starting point with a given intitial bearing for a known distance. 
    * </p> 
    * 
    * @param start 
    *   the starting point. 
    * @param initialBearing 
    *   the initial bearing. 
    * @param distance 
    *   the distance to travel. 
    * @param unit 
    *   the unit in which distance is measured. 
    * @return the end point. 
    */ 
    public static LatLng travel(LatLng start, double initialBearing, double distance, 
      LengthUnit unit) { 
     double bR = Math.toRadians(initialBearing); 
     double lat1R = Math.toRadians(start.getLatitude()); 
     double lon1R = Math.toRadians(start.getLongitude()); 
     double dR = distance/LatLngConfig.getEarthRadius(unit); 

     double a = Math.sin(dR) * Math.cos(lat1R); 
     double lat2 = Math.asin(Math.sin(lat1R) * Math.cos(dR) + a * Math.cos(bR)); 
     double lon2 = lon1R 
       + Math.atan2(Math.sin(bR) * a, Math.cos(dR) - Math.sin(lat1R) * Math.sin(lat2)); 
     return new LatLng(Math.toDegrees(lat2), Math.toDegrees(lon2)); 
    }