Android Показать местоположение карты, когда значения долготы / широты находятся в формате DMS - PullRequest
2 голосов
/ 04 августа 2011

В моем приложении для Android мне нужно загрузить карту Google и показать местоположение в соответствии с указанными значениями широты и долготы. Я сослался на следующий урок, и он полностью в порядке. Работает нормально.

Ссылка на учебник, по которому я следовал

Проблема в значениях широты и долготы, которые хранятся в базе данных SQLite в DMS Fromat. Если бы эти значения были в формате «Десятичные градусы», тогда нет проблем, так как я могу сделать то же, что и в этом уроке.

Мне нужно показать точное место, добавив элемент наложения (я дал значения долготы и широты в формате DMS).

[Пример значений: 36 ° 7'59''N, 5 ° 25'59''W]

Спасибо ...

Ответы [ 2 ]

0 голосов
/ 05 августа 2011

Прошу прощения за неправильно понятый вопрос. `DoIt ( "36 ° 7'59''N");

public void doit (String lat) {

        String str = lat;
        String [] temp = null;
        String dtemp = null;
        String [] pass = new String[4];
        //temp = str.split("[\"]|\"[\']");
        temp = str.split("[\"]|[\']" ); 
        System.out.println("temptemptemptemp  "+temp);
        dtemp = str.replace("\"", "°");
        System.out.println("dtempdtempdtemp  "+dtemp);
        System.out.println("Formated DCM---------- : "+dtemp);

        String [] temp1 = temp[0].split("°");
        System.out.println("\ndegree temp: "+temp1[0]);
        System.out.println("\nminutes temp: "+temp1[1]);
        pass[0] =  temp1[0];
        pass[1] =  temp1[1];
        pass[2] =  temp[1];

        dump(pass);


    }

 public void dump(String []s) {
        for (int i = 0 ; i < s.length ; i++) {
            System.out.println("\ndegree : "+s[0]);
            System.out.println("\nminutes : "+s[1]);
            System.out.println("\nsecond : "+s[2]);

            String deg = s[0] ;
            int ndeg = Integer.parseInt(deg);
            String min = s[1] ;
            double nmin = Double.parseDouble(min);
            String sec = s[2] ;
            double nsec = Double.parseDouble(sec);
            double decimaldms = (ndeg+(nmin/60)+(nsec/3600));
            System.out.println("\nfinaldecimal : "+decimaldms);
        }
    }

 `

Я думаю, что это помощь для вас.

0 голосов
/ 04 августа 2011

Если вы хотите преобразовать значение широты и долготы в формат градусов-минут, тогда код здесь ...

String locLat, locLng;

locLat = Double.toString(location.getLatitude());
locLng = Double.toString(location.getLongitude());

String locLatTodeg = DoubleToDeg(locLat);
String locLngTodeg = DoubleToDeg(locLng);

private String DoubleToDeg(String locLng) {
    // TODO Auto-generated method stub
    String retStringLoc = null;
    try {
        String firString = locLng.replace(".", ";");
        String[] firLocArr = firString.split(";");
        Float deg = new Float("." + firLocArr[1]);
        Float Cnvtddeg = deg * 60;
        String secString = new Float(Cnvtddeg).toString().replace(".", ";");
        String[] secLocArr = secString.split(";");
        Float min = new Float("." + secLocArr[1]);
        Float Cnvtdmin = min * 60;
        String tirString = new Float(Cnvtdmin).toString().replace(".", ";");
        String[] tirLocArr = tirString.split(";");
        retStringLoc = firLocArr[0] + "°" + secLocArr[0] + "'"
                + tirLocArr[0] + "''";
    } catch (Exception e) {
        // Log.i("Exception", e.toString());

    }
    return retStringLoc;
}

Я думаю, это полезно для тебя ....

...