Android OpenStreetMap Координаты - PullRequest
       0

Android OpenStreetMap Координаты

0 голосов
/ 27 октября 2018

У меня есть класс, который выбирает координаты из OpenStreetMap.Он прекрасно работает, когда я выполняю его из обычного класса Java: я написал тестовый класс в Android Studio и просто выполнил его основной метод.

Вот мой тестовый класс, который работает и печатает правильные результаты:

public class openstreetmaptest {
    static String address2 = "Platz der Republik 1, 11011 Berlin";
    static String address1 = "Willy-Brandt-Straße 1, 10557 Berlin";
    public static void main(String[] args) {
        Location testL = new Location(address1);
        Location test2 = new Location(address2);
        System.out.println("distance: " + testL.distanceBetween(test2));
        System.out.println("lat 1: " + testL.getLat());
        System.out.println("lng 1: " + testL.getLng());
        System.out.println("lat 2: " + test2.getLat());
        System.out.println("lng 2: " + test2.getLng());
    }
}

Важная часть класса Location:

public double distanceBetween(Location x)   {
    double earthRadius = 6371000; //meters
    double dLat = Math.toRadians(x.getLat()-getLat());
    double dLng = Math.toRadians(x.getLng()-getLng());
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.cos(Math.toRadians(getLat())) * Math.cos(Math.toRadians(x.getLat())) *
                    Math.sin(dLng/2) * Math.sin(dLng/2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double dist = earthRadius * c;
    return dist;
}


private void calculateDegrees()  {
    Map<String, Double> coords;
    coords = OpenStreetMapUtils.getInstance().getCoordinates(address);
    lat = coords.get("lat");
    lng = coords.get("lon");
}

В моем проекте Android у меня есть класс, которыйрасширяет AppCompatActivity.После того, как пользователь нажимает кнопку, я получаю его входные строки из полей пользовательского интерфейса (информация об адресе).С их помощью я создаю объект Location.Здесь расчет координат больше не работает.

Кажется, здесь происходит сбой:

 private String getRequest(String url) throws Exception {

    final URL obj = new URL(url);
    final HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

    con.setRequestMethod("GET");

    if (con.getResponseCode() != 200) {
        return null;
    }

    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();

    return response.toString();
}

Проверьте ссылку, чтобы увидеть полный код запроса к OpenStreetMap.

android.permission.INTERNET & android.permission.ACCESS_NETWORK_STATE areвключены в мой манифест.

Это мой справочник для получения координат: ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...